een updated by yuri: URL: https://cgit.FreeBSD.org/ports/commit/?id=97909c8f60a6d95a01c95e0b23b1e1eddfc4a10b commit 97909c8f60a6d95a01c95e0b23b1e1eddfc4a10b Author: Yuri Victorovich AuthorDate: 2026-01-05 00:19:45 +0000 Commit: Yuri Victorovich CommitDate: 2026-01-05 00:19:57 +0000 misc/ollama: update 0.13.1-rc0 → 0.13.5 --- misc/ollama/Makefile | 9 +- misc/ollama/distinfo | 10 +- misc/ollama/files/freebsd-compatibility.patch | 160 ++++++++++++++++++++++++++ 3 files changed, 171 insertions(+), 8 deletions(-) diff --git a/misc/ollama/Makefile b/misc/ollama/Makefile index f2a31fea0eb1..16188023fff8 100644 --- a/misc/ollama/Makefile +++ b/misc/ollama/Makefile @@ -1,7 +1,7 @@ PORTNAME= ollama DISTVERSIONPREFIX= v -DISTVERSION= 0.13.1-rc0 -PORTREVISION= 2 +DISTVERSION= 0.13.5 +DISTVERSIONSUFFIX= -x1 # x1 because it doesn't seem possible to update the cached tag on GoLang servers CATEGORIES= misc # machine-learning MAINTAINER= yuri@FreeBSD.org @@ -50,9 +50,12 @@ VULKAN_PLIST_FILES= lib/ollama/libggml-vulkan.so _CMAKE_FLAGS= -DCMAKE_BUILD_TYPE=Release -DGGML_BACKEND_DL=ON -DGGML_BACKEND_DIR=${PREFIX}/lib/ollama -post-patch: # change import path to the fork +post-patch: + # change import path to the fork @cd ${WRKSRC} && \ (${GREP} -rl ollama/ollama | ${XARGS} ${REINPLACE_CMD} -i '' -e 's|ollama/ollama|yurivict/ollama|g') + @${REINPLACE_CMD} -e 's|var Version string = "0.0.0"|var Version string = "${PORTVERSION}"|g' \ + ${WRKSRC}/go.mod ${WRKSRC}/version/version.go pre-build-CPU-on: @${MKDIR} ${WRKSRC}/build && \ diff --git a/misc/ollama/distinfo b/misc/ollama/distinfo index a22b0ff08646..438d8ba70ae8 100644 --- a/misc/ollama/distinfo +++ b/misc/ollama/distinfo @@ -1,5 +1,5 @@ -TIMESTAMP = 1764279505 -SHA256 (go/misc_ollama/ollama-v0.13.1-rc0/v0.13.1-rc0.mod) = 24e9aaaef0e2169fef54d14b95b528fce46e0f6788ffb71a93bcd3b035f99654 -SIZE (go/misc_ollama/ollama-v0.13.1-rc0/v0.13.1-rc0.mod) = 3454 -SHA256 (go/misc_ollama/ollama-v0.13.1-rc0/v0.13.1-rc0.zip) = 07d7cb01a4556fb134ab8c4986239afcf87363c12a074e60c9893dda977a5ea3 -SIZE (go/misc_ollama/ollama-v0.13.1-rc0/v0.13.1-rc0.zip) = 20653199 +TIMESTAMP = 1767567167 +SHA256 (go/misc_ollama/ollama-v0.13.5-x1/v0.13.5-x1.mod) = 24e9aaaef0e2169fef54d14b95b528fce46e0f6788ffb71a93bcd3b035f99654 +SIZE (go/misc_ollama/ollama-v0.13.5-x1/v0.13.5-x1.mod) = 3454 +SHA256 (go/misc_ollama/ollama-v0.13.5-x1/v0.13.5-x1.zip) = ceaac09c6c3e456af9567737e9f81d36dc70e0cfce2d10b7b1e67e8a77a1b73b +SIZE (go/misc_ollama/ollama-v0.13.5-x1/v0.13.5-x1.zip) = 20969740 diff --git a/misc/ollama/files/freebsd-compatibility.patch b/misc/ollama/files/freebsd-compatibility.patch new file mode 100644 index 000000000000..0008a31d661d --- /dev/null +++ b/misc/ollama/files/freebsd-compatibility.patch @@ -0,0 +1,160 @@ +diff -ruN a/discover/cpu_freebsd.go b/discover/cpu_freebsd.go +--- a/discover/cpu_freebsd.go 1969-12-31 16:00:00.000000000 -0800 ++++ b/discover/cpu_freebsd.go 2026-01-04 13:08:45.255018000 -0800 +@@ -0,0 +1,122 @@ ++package discover ++ ++/* ++#include ++#include ++#include ++*/ ++import "C" ++ ++import ( ++ "log/slog" ++ "strings" ++ "syscall" ++ "unsafe" ++) ++ ++func sysctlUint64(name string) (uint64, error) { ++ cname := C.CString(name) ++ defer C.free(unsafe.Pointer(cname)) ++ ++ var value C.uint64_t ++ size := C.size_t(unsafe.Sizeof(value)) ++ ++ ret := C.sysctlbyname(cname, unsafe.Pointer(&value), &size, nil, 0) ++ if ret != 0 { ++ return 0, syscall.Errno(ret) ++ } ++ ++ return uint64(value), nil ++} ++ ++func GetCPUMem() (memInfo, error) { ++ var mem memInfo ++ ++ // Get page size - this is a 32-bit value ++ pageSize32, err := syscall.SysctlUint32("vm.stats.vm.v_page_size") ++ if err != nil { ++ return mem, err ++ } ++ pageSize := uint64(pageSize32) ++ ++ // Get physical memory - use sysctlUint64 ++ physmem, err := sysctlUint64("hw.physmem") ++ if err != nil { ++ return mem, err ++ } ++ ++ // Get free page count - this is also a 32-bit value ++ freeCount32, err := syscall.SysctlUint32("vm.stats.vm.v_free_count") ++ if err != nil { ++ return mem, err ++ } ++ freeCount := uint64(freeCount32) ++ ++ // Get swap total - use sysctlUint64 ++ swapTotal, err := sysctlUint64("vm.swap_total") ++ if err != nil { ++ // Swap may not be configured, default to 0 ++ swapTotal = 0 ++ } ++ ++ mem.TotalMemory = physmem ++ mem.FreeMemory = freeCount * pageSize ++ mem.FreeSwap = swapTotal ++ ++ slog.Debug("GetCPUMem", "total_memory", mem.TotalMemory, "free_memory", mem.FreeMemory, "free_swap", mem.FreeSwap) ++ ++ return mem, nil ++} ++ ++func GetCPUDetails() []CPU { ++ var cpus []CPU ++ ++ // Get CPU model name - this is a string ++ modelName, err := syscall.Sysctl("hw.model") ++ if err != nil { ++ slog.Warn("failed to get CPU model", "error", err) ++ modelName = "Unknown" ++ } ++ ++ // Get number of physical cores - this is a 32-bit integer ++ cores32, err := syscall.SysctlUint32("kern.smp.cores") ++ if err != nil { ++ slog.Warn("failed to get CPU cores", "error", err) ++ return nil ++ } ++ cores := int(cores32) ++ ++ // Get number of logical CPUs (threads) - this is a 32-bit integer ++ threads32, err := syscall.SysctlUint32("hw.ncpu") ++ if err != nil { ++ slog.Warn("failed to get CPU threads", "error", err) ++ return nil ++ } ++ threads := int(threads32) ++ ++ // Extract vendor ID from model name if possible ++ vendorID := "" ++ modelNameLower := strings.ToLower(modelName) ++ if strings.Contains(modelNameLower, "intel") { ++ vendorID = "GenuineIntel" ++ } else if strings.Contains(modelNameLower, "amd") { ++ vendorID = "AuthenticAMD" ++ } ++ ++ // For FreeBSD, we assume a single socket for now ++ // In the future, this could be enhanced to detect multi-socket systems ++ cpu := CPU{ ++ ID: "0", ++ VendorID: vendorID, ++ ModelName: strings.TrimSpace(modelName), ++ CoreCount: cores, ++ EfficiencyCoreCount: 0, // FreeBSD doesn't distinguish efficiency cores ++ ThreadCount: threads, ++ } ++ ++ cpus = append(cpus, cpu) ++ ++ slog.Debug("GetCPUDetails", "cpus", cpus) ++ ++ return cpus ++} +diff -ruN a/go.mod b/go.mod +--- a/go.mod 2026-01-04 13:08:38.543919000 -0800 ++++ b/go.mod 2026-01-04 13:08:45.213194000 -0800 +@@ -36,6 +36,7 @@ + + require ( + github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40 // indirect ++ github.com/blabber/go-freebsd-sysctl v0.0.0-20201130114544-503969f39d8f // indirect + github.com/bytedance/sonic/loader v0.1.1 // indirect + github.com/chewxy/hm v1.0.0 // indirect + github.com/chewxy/math32 v1.11.0 // indirect +diff -ruN a/go.sum b/go.sum +--- a/go.sum 2026-01-04 13:08:38.572637000 -0800 ++++ b/go.sum 2026-01-04 13:08:45.221946000 -0800 +@@ -14,6 +14,8 @@ + github.com/apache/arrow/go/arrow v0.0.0-20211112161151-bc219186db40/go.mod h1:Q7yQnSMnLvcXlZ8RV+jwz/6y1rQTqbX6C82SndT52Zs= + github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0 h1:jfIu9sQUG6Ig+0+Ap1h4unLjW6YQJpKZVmUzxsD4E/Q= + github.com/arbovm/levenshtein v0.0.0-20160628152529-48b4e1c0c4d0/go.mod h1:t2tdKJDJF9BV14lnkjHmOQgcvEKgtqs5a1N3LNdJhGE= ++github.com/blabber/go-freebsd-sysctl v0.0.0-20201130114544-503969f39d8f h1:gMH+lz/KRpSqdoL+IQjgd91bP1LB8vrVEfNxr47GYC8= ++github.com/blabber/go-freebsd-sysctl v0.0.0-20201130114544-503969f39d8f/go.mod h1:cTRyHktEaXkKTTEyZ0hAgS7H4V0AVoKhB8Dx0tVr/tY= + github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= + github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0= + github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4= +diff -ruN a/llm/llm_freebsd.go b/llm/llm_freebsd.go +--- a/llm/llm_freebsd.go 1969-12-31 16:00:00.000000000 -0800 ++++ b/llm/llm_freebsd.go 2026-01-04 13:08:45.214499000 -0800 +@@ -0,0 +1,7 @@ ++package llm ++ ++import ( ++ "syscall" ++) ++ ++var LlamaServerSysProcAttr = &syscall.SysProcAttr{}