Repository: ollama/ollama
Pull request: windows build

make some minor changes so it builds on windows.

TODO:
moving the `.*.part` to the full file isn't working correctly but #78 will change how that works so temporary workaround is to copy the `.*.part` to the final name

Changed files:
filename: cmd/cmd.go
patch: @@ -9,7 +9,7 @@ import (
 	"net"
 	"net/http"
 	"os"
-	"path"
+	"path/filepath"
 	"strings"
 	"time"
 
@@ -27,7 +27,7 @@ func cacheDir() string {
 		panic(err)
 	}
 
-	return path.Join(home, ".ollama")
+	return filepath.Join(home, ".ollama")
 }
 
 func RunRun(cmd *cobra.Command, args []string) error {
@@ -209,7 +209,7 @@ func NewCLI() *cobra.Command {
 		},
 		PersistentPreRunE: func(_ *cobra.Command, args []string) error {
 			// create the models directory and it's parent
-			return os.MkdirAll(path.Join(cacheDir(), "models"), 0o700)
+			return os.MkdirAll(filepath.Join(cacheDir(), "models"), 0o700)
 		},
 	}
 

filename: llama/llama.go
patch: @@ -264,8 +264,8 @@ func (llm *llama) sample(output deque[C.llama_token], opts *C.struct_llama_sampl
 
 	token := C.llama_sample(
 		llm.ctx,
-		unsafe.SliceData(candidates.Data()), C.ulong(candidates.Len()),
-		unsafe.SliceData(output.Data()), C.ulong(output.Len()),
+		unsafe.SliceData(candidates.Data()), C.size_t(candidates.Len()),
+		unsafe.SliceData(output.Data()), C.size_t(output.Len()),
 		opts)
 	if token != C.llama_token_eos() {
 		return token, nil

filename: server/models.go
patch: @@ -7,7 +7,7 @@ import (
 	"io"
 	"net/http"
 	"os"
-	"path"
+	"path/filepath"
 	"strconv"
 )
 
@@ -32,14 +32,14 @@ func (m *Model) FullName() string {
 		panic(err)
 	}
 
-	return path.Join(home, ".ollama", "models", m.Name+".bin")
+	return filepath.Join(home, ".ollama", "models", m.Name+".bin")
 }
 
 func (m *Model) TempFile() string {
 	fullName := m.FullName()
-	return path.Join(
-		path.Dir(fullName),
-		fmt.Sprintf(".%s.part", path.Base(fullName)),
+	return filepath.Join(
+		filepath.Dir(fullName),
+		fmt.Sprintf(".%s.part", filepath.Base(fullName)),
 	)
 }
 
@@ -118,7 +118,7 @@ func saveModel(model *Model, fn func(total, completed int64)) error {
 			return os.Rename(model.TempFile(), model.FullName())
 		}
 
-		n , err := io.CopyN(out, resp.Body, 8192)
+		n, err := io.CopyN(out, resp.Body, 8192)
 		if err != nil && !errors.Is(err, io.EOF) {
 			return err
 		}

filename: server/routes.go
patch: @@ -10,7 +10,7 @@ import (
 	"net"
 	"net/http"
 	"os"
-	"path"
+	"path/filepath"
 	"strings"
 	"text/template"
 	"time"
@@ -32,7 +32,7 @@ func cacheDir() string {
 		panic(err)
 	}
 
-	return path.Join(home, ".ollama")
+	return filepath.Join(home, ".ollama")
 }
 
 func generate(c *gin.Context) {
@@ -55,15 +55,15 @@ func generate(c *gin.Context) {
 			c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
 			return
 		}
-		req.Model = path.Join(cacheDir(), "models", req.Model+".bin")
+		req.Model = filepath.Join(cacheDir(), "models", req.Model+".bin")
 	}
 
 	templateNames := make([]string, 0, len(templates.Templates()))
 	for _, template := range templates.Templates() {
 		templateNames = append(templateNames, template.Name())
 	}
 
-	match, _ := matchRankOne(path.Base(req.Model), templateNames)
+	match, _ := matchRankOne(filepath.Base(req.Model), templateNames)
 	if template := templates.Lookup(match); template != nil {
 		var sb strings.Builder
 		if err := template.Execute(&sb, req); err != nil {