Browse Source

llm: attempt to evaluate symlinks, but do not fail (#9089)

provides a better approach to #9088 that will attempt to
evaluate symlinks (important for macOS where 'ollama' is
often a symlink), but use the result of os.Executable()
as a fallback in scenarios where filepath.EvalSymlinks
fails due to permission erorrs or other issues
Jeffrey Morgan 2 months ago
parent
commit
5296f487a8
2 changed files with 8 additions and 0 deletions
  1. 4 0
      discover/path.go
  2. 4 0
      llm/server.go

+ 4 - 0
discover/path.go

@@ -19,6 +19,10 @@ var LibOllamaPath string = func() string {
 		return ""
 	}
 
+	if eval, err := filepath.EvalSymlinks(exe); err == nil {
+		exe = eval
+	}
+
 	var libPath string
 	switch runtime.GOOS {
 	case "windows":

+ 4 - 0
llm/server.go

@@ -320,6 +320,10 @@ func NewLlamaServer(gpus discover.GpuInfoList, model string, f *ggml.GGML, adapt
 			return nil, fmt.Errorf("unable to lookup executable path: %w", err)
 		}
 
+		if eval, err := filepath.EvalSymlinks(exe); err == nil {
+			exe = eval
+		}
+
 		// TODO - once fully switched to the Go runner, load the model here for tokenize/detokenize cgo access
 		s := &llmServer{
 			port:        port,