mirror of
https://github.com/dogkeeper886/ollama37.git
synced 2025-12-17 11:17:11 +00:00
fix relative path on create (#1222)
This commit is contained in:
@@ -228,10 +228,10 @@ func GetModel(name string) (*Model, error) {
|
||||
return model, nil
|
||||
}
|
||||
|
||||
func realpath(p string) string {
|
||||
abspath, err := filepath.Abs(p)
|
||||
func realpath(mfDir, from string) string {
|
||||
abspath, err := filepath.Abs(from)
|
||||
if err != nil {
|
||||
return p
|
||||
return from
|
||||
}
|
||||
|
||||
home, err := os.UserHomeDir()
|
||||
@@ -239,16 +239,21 @@ func realpath(p string) string {
|
||||
return abspath
|
||||
}
|
||||
|
||||
if p == "~" {
|
||||
if from == "~" {
|
||||
return home
|
||||
} else if strings.HasPrefix(p, "~/") {
|
||||
return filepath.Join(home, p[2:])
|
||||
} else if strings.HasPrefix(from, "~/") {
|
||||
return filepath.Join(home, from[2:])
|
||||
}
|
||||
|
||||
if _, err := os.Stat(filepath.Join(mfDir, from)); err == nil {
|
||||
// this is a file relative to the Modelfile
|
||||
return filepath.Join(mfDir, from)
|
||||
}
|
||||
|
||||
return abspath
|
||||
}
|
||||
|
||||
func CreateModel(ctx context.Context, name string, commands []parser.Command, fn func(resp api.ProgressResponse)) error {
|
||||
func CreateModel(ctx context.Context, name, modelFileDir string, commands []parser.Command, fn func(resp api.ProgressResponse)) error {
|
||||
config := ConfigV2{
|
||||
OS: "linux",
|
||||
Architecture: "amd64",
|
||||
@@ -276,7 +281,7 @@ func CreateModel(ctx context.Context, name string, commands []parser.Command, fn
|
||||
c.Args = blobPath
|
||||
}
|
||||
|
||||
bin, err := os.Open(realpath(c.Args))
|
||||
bin, err := os.Open(realpath(modelFileDir, c.Args))
|
||||
if err != nil {
|
||||
// not a file on disk so must be a model reference
|
||||
modelpath := ParseModelPath(c.Args)
|
||||
@@ -372,7 +377,7 @@ func CreateModel(ctx context.Context, name string, commands []parser.Command, fn
|
||||
layers = append(layers, layer)
|
||||
case "adapter":
|
||||
fn(api.ProgressResponse{Status: "creating adapter layer"})
|
||||
bin, err := os.Open(realpath(c.Args))
|
||||
bin, err := os.Open(realpath(modelFileDir, c.Args))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user