diff --git a/misc/ollama/Makefile b/misc/ollama/Makefile index 5f6d6beb902d..f5233c2a4630 100644 --- a/misc/ollama/Makefile +++ b/misc/ollama/Makefile @@ -1,252 +1,256 @@ PORTNAME= ollama DISTVERSIONPREFIX= v -DISTVERSION= 0.30.0 -PORTREVISION= 1 +DISTVERSION= 0.30.4 CATEGORIES= misc # machine-learning MAINTAINER= yuri@FreeBSD.org COMMENT= Run Llama 2, Mistral, and other large language models WWW= https://ollama.com \ https://github.com/ollama/ollama LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE BROKEN_i386= fails to compile: x/mlxrunner/mlx/memory.go:40:11: 1 << (4 * 10) (untyped int constant 1099511627776) overflows int BUILD_DEPENDS= bash:shells/bash \ ${LOCALBASE}/include/miniaudio/miniaudio.h:audio/miniaudio \ ${LOCALBASE}/include/nlohmann/json_fwd.hpp:devel/nlohmann-json \ ${LOCALBASE}/include/stb/stb_image.h:devel/stb \ patchelf:sysutils/patchelf USES= cmake:indirect go:1.26+,modules localbase pkgconfig USE_LDCONFIG= ${PREFIX}/lib/ollama ${PREFIX}/lib/ollama/vulkan USE_RC_SUBR= ollama GO_MODULE= github.com/yurivict/${PORTNAME} # fork with FreeBSD patches GO_TARGET= . GO_ENV+= CGO_CXXFLAGS="${CXXFLAGS}" -LLAMA_CPP_VERSION= b9452 +LLAMA_CPP_VERSION= b9493 GGML_SO_VERSION= 0.13.1 # tied to LLAMA_CPP_VERSION; update when llama.cpp changes MLX_CORE_VERSION= 0.31.2 MLX_C_VERSION= fba4470b89073180056c9ea46c443051375f7399 JSON_VERSION= 3.11.3 DISTFILES+= ${LLAMA_CPP_VERSION}.tar.gz:llamasrc MASTER_SITES+= https://github.com/ggml-org/llama.cpp/archive/refs/tags/:llamasrc PLIST_FILES= bin/${PORTNAME} \ bin/ollama-limit-gpu-layers OPTIONS_GROUP= BACKENDS OPTIONS_GROUP_BACKENDS= CPU VULKAN MLX OPTIONS_DEFAULT= CPU VULKAN MLX CPU_DESC= Build CPU backend shared libraries for various SIMD instruction sets CPU_PLIST_FILES= lib/ollama/llama-server \ lib/ollama/llama-quantize \ lib/ollama/libggml-base.so \ lib/ollama/libggml-base.so.0 \ lib/ollama/libggml-base.so.${GGML_SO_VERSION} \ lib/ollama/libggml.so \ lib/ollama/libggml.so.0 \ lib/ollama/libggml.so.${GGML_SO_VERSION} \ lib/ollama/libllama-common.so \ lib/ollama/libllama-common.so.0 \ lib/ollama/libllama-common.so.0.0.${LLAMA_CPP_VERSION:S/b//} \ lib/ollama/libllama-quantize-impl.so \ lib/ollama/libllama-server-impl.so \ lib/ollama/libllama.so \ lib/ollama/libllama.so.0 \ lib/ollama/libllama.so.0.0.${LLAMA_CPP_VERSION:S/b//} \ lib/ollama/libmtmd.so \ lib/ollama/libmtmd.so.0 \ lib/ollama/libmtmd.so.0.0.${LLAMA_CPP_VERSION:S/b//} .if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" CPU_PLIST_FILES+= lib/ollama/libggml-cpu-alderlake.so \ lib/ollama/libggml-cpu-cannonlake.so \ lib/ollama/libggml-cpu-cascadelake.so \ lib/ollama/libggml-cpu-cooperlake.so \ lib/ollama/libggml-cpu-haswell.so \ lib/ollama/libggml-cpu-icelake.so \ lib/ollama/libggml-cpu-ivybridge.so \ lib/ollama/libggml-cpu-piledriver.so \ lib/ollama/libggml-cpu-sandybridge.so \ lib/ollama/libggml-cpu-sapphirerapids.so \ lib/ollama/libggml-cpu-skylakex.so \ lib/ollama/libggml-cpu-sse42.so \ lib/ollama/libggml-cpu-x64.so \ lib/ollama/libggml-cpu-zen4.so .endif VULKAN_DESC= Build Vulkan GPU backend shared library VULKAN_BUILD_DEPENDS= glslc:graphics/shaderc \ ${LOCALBASE}/include/vulkan/vulkan.h:graphics/vulkan-headers \ ${LOCALBASE}/share/cmake/SPIRV-Headers/SPIRV-HeadersConfig.cmake:graphics/spirv-headers VULKAN_LIB_DEPENDS= libvulkan.so:graphics/vulkan-loader VULKAN_PLIST_FILES= lib/ollama/vulkan/libggml-vulkan.so MLX_DESC= Build MLX backend for image generation (CPU) MLX_BUILD_DEPENDS= ${LOCALBASE}/lib/cmake/fmt/fmt-config.cmake:devel/libfmt MLX_LIB_DEPENDS= libopenblas.so:math/openblas MLX_PLIST_FILES= lib/ollama/libmlx.so \ lib/ollama/libmlxc.so _CMAKE_FLAGS= -DCMAKE_BUILD_TYPE=Release \ -DGGML_BACKEND_DL=ON \ -DGGML_BACKEND_DIR=${PREFIX}/lib/ollama \ -DFETCHCONTENT_FULLY_DISCONNECTED=ON \ -DFETCHCONTENT_SOURCE_DIR_LLAMA_CPP=${WRKDIR}/llama.cpp-${LLAMA_CPP_VERSION} \ -DLLAMA_BUILD_NUMBER=${LLAMA_CPP_VERSION:S/b//} .include .if ${PORT_OPTIONS:MVULKAN} _CMAKE_FLAGS+= -DOLLAMA_LLAMA_BACKENDS=vulkan .endif .if ${PORT_OPTIONS:MMLX} GO_BUILDFLAGS+= -tags mlx DISTFILES+= v${MLX_CORE_VERSION}.tar.gz:mlxsrc \ ${MLX_C_VERSION}.tar.gz:mlxcsrc \ json.tar.xz:jsonsrc MASTER_SITES+= https://github.com/ml-explore/mlx/archive/refs/tags/:mlxsrc \ https://github.com/ml-explore/mlx-c/archive/:mlxcsrc \ https://github.com/nlohmann/json/releases/download/v${JSON_VERSION}/:jsonsrc .endif post-patch: # Apply llama.cpp compat hooks patch so the llama-server build has Ollama hooks @${PATCH} -d ${WRKDIR}/llama.cpp-${LLAMA_CPP_VERSION} -p1 \ < ${WRKSRC}/llama/compat/llama-cpp-hooks.patch + # Apply llama.cpp laguna model patch (adds llama_model_laguna class) + @${PATCH} -d ${WRKDIR}/llama.cpp-${LLAMA_CPP_VERSION} -p1 \ + < ${WRKSRC}/llama/compat/models/llama-cpp-laguna.patch + # FreeBSD: copy llm/llm_freebsd.go for LlamaServerSysProcAttr + @${CP} ${FILESDIR}/llm_freebsd.go ${WRKSRC}/llm/ # update version in version.go @${REINPLACE_CMD} -e 's|var Version string = "0.0.0"|var Version string = "${PORTVERSION}"|g' \ ${WRKSRC}/version/version.go pre-build-CPU-on: @${MKDIR} ${WRKSRC}/build && \ cd ${WRKSRC}/build && \ ${CMAKE_BIN} ${_CMAKE_FLAGS} .. && \ ${MAKE_CMD} ollama-llama-server-local pre-build-VULKAN-on: .if !${PORT_OPTIONS:MCPU} && !${PORT_OPTIONS:MMLX} @${MKDIR} ${WRKSRC}/build && \ cd ${WRKSRC}/build && \ ${CMAKE_BIN} ${_CMAKE_FLAGS} .. .endif @cd ${WRKSRC}/build && \ ${MAKE_CMD} ollama-llama-server-vulkan post-patch-MLX-on: # FreeBSD compatibility fix: netinet/in.h (defines IPPROTO_TCP) is not # pulled in transitively by netinet/tcp.h on FreeBSD as it is on Linux. @${AWK} '/^#include /{print "#include ";print;next}1' \ ${WRKDIR}/mlx-${MLX_CORE_VERSION}/mlx/distributed/ring/ring.cpp > \ ${WRKDIR}/mlx-${MLX_CORE_VERSION}/mlx/distributed/ring/ring.cpp.new && \ ${MV} ${WRKDIR}/mlx-${MLX_CORE_VERSION}/mlx/distributed/ring/ring.cpp.new \ ${WRKDIR}/mlx-${MLX_CORE_VERSION}/mlx/distributed/ring/ring.cpp # FreeBSD memory size fix: add hw.physmem sysctl query so MLX sets its # memory_limit from actual RAM instead of using the 8 GB hardcoded fallback. ${INSTALL_DATA} ${FILESDIR}/freebsd_memory.h \ ${WRKDIR}/mlx-${MLX_CORE_VERSION}/mlx/backend/no_gpu/freebsd_memory.h @${AWK} '/^#elif defined\(__linux__\)/{print "#elif defined(__FreeBSD__)";print "#include \"mlx/backend/no_gpu/freebsd_memory.h\"";print;next}1' \ ${WRKDIR}/mlx-${MLX_CORE_VERSION}/mlx/backend/no_gpu/allocator.cpp > \ ${WRKDIR}/mlx-${MLX_CORE_VERSION}/mlx/backend/no_gpu/allocator.cpp.new && \ ${MV} ${WRKDIR}/mlx-${MLX_CORE_VERSION}/mlx/backend/no_gpu/allocator.cpp.new \ ${WRKDIR}/mlx-${MLX_CORE_VERSION}/mlx/backend/no_gpu/allocator.cpp pre-build-MLX-on: @${MKDIR} ${WRKSRC}/build-mlx && \ cd ${WRKSRC}/build-mlx && \ OLLAMA_MLX_SOURCE=${WRKDIR}/mlx-${MLX_CORE_VERSION} \ OLLAMA_MLX_C_SOURCE=${WRKDIR}/mlx-c-${MLX_C_VERSION} \ ${CMAKE_BIN} ${_CMAKE_FLAGS} \ -DFETCHCONTENT_FULLY_DISCONNECTED:BOOL=ON \ -DUSE_SYSTEM_FMT:BOOL=ON \ -DFETCHCONTENT_SOURCE_DIR_JSON:PATH=${WRKDIR}/json \ -DOLLAMA_SOURCE_DIR:PATH=${WRKSRC} \ -S ${WRKSRC}/cmake/mlx \ -B ${WRKSRC}/build-mlx @cd ${WRKSRC}/build-mlx && \ ${MAKE_CMD} mlx mlxc post-install: # pending https://github.com/ollama/ollama/issues/6407 ${INSTALL_SCRIPT} ${FILESDIR}/ollama-limit-gpu-layers ${STAGEDIR}${PREFIX}/bin post-install-CPU-on: @${MKDIR} ${STAGEDIR}${PREFIX}/lib/ollama # versioned libggml-base ${INSTALL_LIB} ${WRKSRC}/build/lib/ollama/libggml-base.so.${GGML_SO_VERSION} \ ${STAGEDIR}${PREFIX}/lib/ollama/ ${LN} -sf libggml-base.so.${GGML_SO_VERSION} \ ${STAGEDIR}${PREFIX}/lib/ollama/libggml-base.so.0 ${LN} -sf libggml-base.so.0 \ ${STAGEDIR}${PREFIX}/lib/ollama/libggml-base.so # versioned libggml ${INSTALL_LIB} ${WRKSRC}/build/lib/ollama/libggml.so.${GGML_SO_VERSION} \ ${STAGEDIR}${PREFIX}/lib/ollama/ ${LN} -sf libggml.so.${GGML_SO_VERSION} \ ${STAGEDIR}${PREFIX}/lib/ollama/libggml.so.0 ${LN} -sf libggml.so.0 \ ${STAGEDIR}${PREFIX}/lib/ollama/libggml.so # versioned libllama-common ${INSTALL_LIB} ${WRKSRC}/build/lib/ollama/libllama-common.so.0.0.${LLAMA_CPP_VERSION:S/b//} \ ${STAGEDIR}${PREFIX}/lib/ollama/ ${LN} -sf libllama-common.so.0.0.${LLAMA_CPP_VERSION:S/b//} \ ${STAGEDIR}${PREFIX}/lib/ollama/libllama-common.so.0 ${LN} -sf libllama-common.so.0 \ ${STAGEDIR}${PREFIX}/lib/ollama/libllama-common.so # versioned libllama ${INSTALL_LIB} ${WRKSRC}/build/lib/ollama/libllama.so.0.0.${LLAMA_CPP_VERSION:S/b//} \ ${STAGEDIR}${PREFIX}/lib/ollama/ ${LN} -sf libllama.so.0.0.${LLAMA_CPP_VERSION:S/b//} \ ${STAGEDIR}${PREFIX}/lib/ollama/libllama.so.0 ${LN} -sf libllama.so.0 \ ${STAGEDIR}${PREFIX}/lib/ollama/libllama.so # versioned libmtmd ${INSTALL_LIB} ${WRKSRC}/build/lib/ollama/libmtmd.so.0.0.${LLAMA_CPP_VERSION:S/b//} \ ${STAGEDIR}${PREFIX}/lib/ollama/ ${LN} -sf libmtmd.so.0.0.${LLAMA_CPP_VERSION:S/b//} \ ${STAGEDIR}${PREFIX}/lib/ollama/libmtmd.so.0 ${LN} -sf libmtmd.so.0 \ ${STAGEDIR}${PREFIX}/lib/ollama/libmtmd.so # unversioned impl libs needed at runtime by llama-server and llama-quantize ${INSTALL_LIB} ${WRKSRC}/build/lib/ollama/libllama-server-impl.so \ ${STAGEDIR}${PREFIX}/lib/ollama/ ${INSTALL_LIB} ${WRKSRC}/build/lib/ollama/libllama-quantize-impl.so \ ${STAGEDIR}${PREFIX}/lib/ollama/ # binaries ${INSTALL_PROGRAM} ${WRKSRC}/build/lib/ollama/llama-server \ ${STAGEDIR}${PREFIX}/lib/ollama/ ${INSTALL_PROGRAM} ${WRKSRC}/build/lib/ollama/llama-quantize \ ${STAGEDIR}${PREFIX}/lib/ollama/ # cpu-variant SIMD backend DSOs @for f in ${WRKSRC}/build/lib/ollama/libggml-cpu*.so; do \ ${INSTALL_LIB} $$f ${STAGEDIR}${PREFIX}/lib/ollama/; \ done post-install-VULKAN-on: @${MKDIR} ${STAGEDIR}${PREFIX}/lib/ollama/vulkan ${INSTALL_LIB} ${WRKSRC}/build/lib/ollama/vulkan/libggml-vulkan.so \ ${STAGEDIR}${PREFIX}/lib/ollama/vulkan/ # Fix RPATH: libggml-base.so.0 lives in the parent directory patchelf --set-rpath '$$ORIGIN:$$ORIGIN/..' \ ${STAGEDIR}${PREFIX}/lib/ollama/vulkan/libggml-vulkan.so post-install-MLX-on: @${MKDIR} ${STAGEDIR}${PREFIX}/lib/ollama ${INSTALL_LIB} ${WRKSRC}/build-mlx/lib/ollama/libmlx.so \ ${STAGEDIR}${PREFIX}/lib/ollama/ ${INSTALL_LIB} ${WRKSRC}/build-mlx/lib/ollama/libmlxc.so \ ${STAGEDIR}${PREFIX}/lib/ollama/ patchelf --set-rpath '$$ORIGIN' ${STAGEDIR}${PREFIX}/lib/ollama/libmlx.so patchelf --set-rpath '$$ORIGIN' ${STAGEDIR}${PREFIX}/lib/ollama/libmlxc.so do-test: @cd ${WRKSRC} && \ ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${GO_ENV} ${GO_CMD} test ./... .include diff --git a/misc/ollama/distinfo b/misc/ollama/distinfo index 8168065c92e3..3a35ffbe81cc 100644 --- a/misc/ollama/distinfo +++ b/misc/ollama/distinfo @@ -1,13 +1,13 @@ -TIMESTAMP = 1780435135 -SHA256 (go/misc_ollama/ollama-v0.30.0/b9452.tar.gz) = 43830a2cb08975d732e3538fa2130105dd528cf929387cc82b2526acdf4c689b -SIZE (go/misc_ollama/ollama-v0.30.0/b9452.tar.gz) = 33997105 -SHA256 (go/misc_ollama/ollama-v0.30.0/v0.31.2.tar.gz) = bdb9b619f80962dd00c0bffb65e59c53f565c2b550f189a1467f8bc6089401ab -SIZE (go/misc_ollama/ollama-v0.30.0/v0.31.2.tar.gz) = 4251596 -SHA256 (go/misc_ollama/ollama-v0.30.0/fba4470b89073180056c9ea46c443051375f7399.tar.gz) = 398d3d4c6458679dfc9061a3ba56101358279790bc038f60d1f534eac420d552 -SIZE (go/misc_ollama/ollama-v0.30.0/fba4470b89073180056c9ea46c443051375f7399.tar.gz) = 174039 -SHA256 (go/misc_ollama/ollama-v0.30.0/json.tar.xz) = d6c65aca6b1ed68e7a182f4757257b107ae403032760ed6ef121c9d55e81757d -SIZE (go/misc_ollama/ollama-v0.30.0/json.tar.xz) = 110988 -SHA256 (go/misc_ollama/ollama-v0.30.0/v0.30.0.mod) = 1ae536080fb858f852587eb80ce6444999da8700d05736083d4a5d689ce25861 -SIZE (go/misc_ollama/ollama-v0.30.0/v0.30.0.mod) = 4735 -SHA256 (go/misc_ollama/ollama-v0.30.0/v0.30.0.zip) = dda68a74098bb98351bc02ba5a2d9945dc5947de2becf73acf7975a4c4542156 -SIZE (go/misc_ollama/ollama-v0.30.0/v0.30.0.zip) = 28395257 +TIMESTAMP = 1780542796 +SHA256 (go/misc_ollama/ollama-v0.30.4/b9493.tar.gz) = d8992bab7a2b6f73132c5edc332b3cd3d0b49ea9b3c85cede4c55f7439f422ff +SIZE (go/misc_ollama/ollama-v0.30.4/b9493.tar.gz) = 34051227 +SHA256 (go/misc_ollama/ollama-v0.30.4/v0.31.2.tar.gz) = bdb9b619f80962dd00c0bffb65e59c53f565c2b550f189a1467f8bc6089401ab +SIZE (go/misc_ollama/ollama-v0.30.4/v0.31.2.tar.gz) = 4251596 +SHA256 (go/misc_ollama/ollama-v0.30.4/fba4470b89073180056c9ea46c443051375f7399.tar.gz) = 398d3d4c6458679dfc9061a3ba56101358279790bc038f60d1f534eac420d552 +SIZE (go/misc_ollama/ollama-v0.30.4/fba4470b89073180056c9ea46c443051375f7399.tar.gz) = 174039 +SHA256 (go/misc_ollama/ollama-v0.30.4/json.tar.xz) = d6c65aca6b1ed68e7a182f4757257b107ae403032760ed6ef121c9d55e81757d +SIZE (go/misc_ollama/ollama-v0.30.4/json.tar.xz) = 110988 +SHA256 (go/misc_ollama/ollama-v0.30.4/v0.30.4.mod) = 8af0b8b8e4961b46dfef05b055207b1ab7e7831368c1704a5a5bfb4626d6895d +SIZE (go/misc_ollama/ollama-v0.30.4/v0.30.4.mod) = 4650 +SHA256 (go/misc_ollama/ollama-v0.30.4/v0.30.4.zip) = 7a18320a92212be01a378408733313d8949292cb80d0b2131f34c12fd4fbb52d +SIZE (go/misc_ollama/ollama-v0.30.4/v0.30.4.zip) = 28422656 diff --git a/misc/ollama/files/llm_freebsd.go b/misc/ollama/files/llm_freebsd.go new file mode 100644 index 000000000000..de3c5bdf479c --- /dev/null +++ b/misc/ollama/files/llm_freebsd.go @@ -0,0 +1,5 @@ +package llm + +import "syscall" + +var LlamaServerSysProcAttr = &syscall.SysProcAttr{} diff --git a/misc/ollama/files/patch-discover_cpu__freebsd.go b/misc/ollama/files/patch-discover_cpu__freebsd.go index d898b22e0538..5726f0068a5d 100644 --- a/misc/ollama/files/patch-discover_cpu__freebsd.go +++ b/misc/ollama/files/patch-discover_cpu__freebsd.go @@ -1,69 +1,75 @@ -- Remove GetCPUDetails() which references an undefined CPU struct type, and -- the unused "strings" import. GetCPUDetails() is not called anywhere in the -- codebase and the CPU type does not exist in 0.30.0. ---- discover/cpu_freebsd.go.orig 2026-06-02 21:48:58 UTC +--- discover/cpu_freebsd.go.orig 2026-06-04 02:55:00 UTC +++ discover/cpu_freebsd.go -@@ -9,7 +9,6 @@ import ( - - import ( - "log/slog" -- "strings" - "syscall" - "unsafe" - ) -@@ -68,55 +67,3 @@ func GetCPUMem() (memInfo, error) { - 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 --} +@@ -0,0 +1,69 @@ ++package discover ++ ++/* ++#include ++#include ++#include ++*/ ++import "C" ++ ++import ( ++ "log/slog" ++ "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 ++} ++ diff --git a/misc/ollama/files/update-port.sh b/misc/ollama/files/update-port.sh index 49e8b41863a5..08167ba85954 100755 --- a/misc/ollama/files/update-port.sh +++ b/misc/ollama/files/update-port.sh @@ -1,78 +1,78 @@ #!/bin/sh STRICT="set -euo pipefail" $STRICT # args : "${1?Usage: $0 }" VERSION="$1" # consts GH_PROJECT="ollama" GH_ACCOUNT_ORIG="ollama" GH_ACCOUNT_FORK="yurivict" GO_CMD=$(make -V GO_CMD) # check if GO_CMD is set and is a valid command if [ -z "$GO_CMD" ]; then echo "error: GO_CMD is not set" exit 1 fi if ! command -v "$GO_CMD" >/dev/null 2>&1; then echo "error: GO_CMD '$GO_CMD' is not a valid command" exit 1 fi echo "updating $GH_PROJECT to version $VERSION" # remove old dirs rm -rf $GH_ACCOUNT_ORIG-$GH_PROJECT.repo $GH_ACCOUNT_FORK-$GH_PROJECT.repo # clone repos git clone https://github.com/$GH_ACCOUNT_ORIG/$GH_PROJECT.git $GH_ACCOUNT_ORIG-$GH_PROJECT.repo git clone https://github.com/$GH_ACCOUNT_FORK/$GH_PROJECT.git $GH_ACCOUNT_FORK-$GH_PROJECT.repo # checkout version cd $GH_ACCOUNT_ORIG-$GH_PROJECT.repo git checkout v$VERSION cd ../$GH_ACCOUNT_FORK-$GH_PROJECT.repo rm -rf * cp -r \ ../$GH_ACCOUNT_ORIG-$GH_PROJECT.repo/* \ ../$GH_ACCOUNT_ORIG-$GH_PROJECT.repo/.gitattributes \ ../$GH_ACCOUNT_ORIG-$GH_PROJECT.repo/.github \ ../$GH_ACCOUNT_ORIG-$GH_PROJECT.repo/.gitignore \ ../$GH_ACCOUNT_ORIG-$GH_PROJECT.repo/.golangci.yaml \ . -# apply freebsd compatibility patch -(patch-no-backup-1 < ../files/freebsd-compatibility.patch) || { echo "error: failed to apply freebsd compatibility patch"; exit 1; } +## apply freebsd compatibility patch +#(patch-no-backup-1 < ../files/freebsd-compatibility.patch) || { echo "error: failed to apply freebsd compatibility patch"; exit 1; } # change import path to the fork grep -rl ollama/ollama | xargs sed -i '' -e 's|ollama/ollama|yurivict/ollama|g' # it should be buildable at this point #update $GH_ACCOUNT_ORIG/$GH_PROJECT -> $GH_ACCOUNT_FORK/$GH_PROJECT # this is done in the port # commit and tag echo "==> committing version v$VERSION" git add * .gitattributes .github .gitignore .golangci.yaml git commit . -m "Update to version v$VERSION + freebsd patches" echo "==> tagging version v$VERSION" git tag -a v$VERSION -m "Release version v$VERSION + freebsd patches" # push changes git push origin git push --tags # make GoLang proxy to ingest the new version echo "==> submitting the new version $VERSION to the GoLang proxy" GOPROXY=proxy.golang.org $GO_CMD list -m github.com/$GH_ACCOUNT_FORK/ollama@v$VERSION # final message echo "success: done updating the $GH_ACCOUNT_FORK/$GH_PROJECT to version $VERSION"