Install this version:
emerge -a =sci-ml/ollama-0.30.4
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =sci-ml/ollama-0.30.4
Or alternatively:
emerge --autounmask-write -a =sci-ml/ollama-0.30.4
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 0.30.4 | 8 | ~amd64 | 0 |
# Copyright 2024-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# ollama 0.30 builds llama-server from upstream llama.cpp (pinned in the source
# tree's LLAMA_CPP_VERSION) via CMake FetchContent, and the Go binary downloads
# its modules at build time. Both need network access, so the build runs with
# the network sandbox disabled (RESTRICT="network-sandbox"), mirroring the
# app-portage/bentoolkit approach. ROCM_VERSION is set for the rocm eclass.
ROCM_VERSION="7.2"
inherit cuda rocm
inherit cmake
inherit flag-o-matic go-module linux-info systemd toolchain-funcs
DESCRIPTION="Get up and running with large language models locally"
HOMEPAGE="https://ollama.com"
if [[ ${PV} == *9999* ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/ollama/ollama.git"
else
MY_PV="${PV/_rc/-rc}"
MY_P="${PN}-${MY_PV}"
SRC_URI="
https://github.com/ollama/${PN}/archive/refs/tags/v${MY_PV}.tar.gz -> ${MY_P}.gh.tar.gz
"
S="${WORKDIR}/${MY_P}"
KEYWORDS="~amd64"
fi
# ollama and llama.cpp are MIT; the rest covers the statically linked Go modules
# bundled into the ollama binary.
LICENSE="Apache-2.0 BSD BSD-2 ISC MIT MPL-2.0"
SLOT="0"
IUSE="cuda rocm vulkan"
# go build + llama.cpp FetchContent both fetch at build time
RESTRICT="network-sandbox mirror test"
COMMON_DEPEND="
cuda? (
>=dev-util/nvidia-cuda-toolkit-13:=
x11-drivers/nvidia-drivers
)
rocm? (
>=dev-util/hip-${ROCM_VERSION}:=
>=sci-libs/hipBLAS-${ROCM_VERSION}:=
>=sci-libs/rocBLAS-${ROCM_VERSION}:=
)
vulkan? (
media-libs/vulkan-loader
)
"
DEPEND="
${COMMON_DEPEND}
>=dev-lang/go-1.26.0
"
BDEPEND="
>=dev-build/cmake-3.24
dev-vcs/git
vulkan? (
dev-util/vulkan-headers
media-libs/shaderc
)
"
RDEPEND="
${COMMON_DEPEND}
acct-group/${PN}
>=acct-user/${PN}-3[cuda?]
"
pkg_setup() {
if use rocm; then
linux-info_pkg_setup
if linux-info_get_any_version && linux_config_exists; then
if ! linux_chkconfig_present HSA_AMD_SVM; then
ewarn "To use ROCm/HIP, you need to have HSA_AMD_SVM option enabled in your kernel."
fi
fi
fi
}
src_unpack() {
# Filter LTO flags for ROCm (bug 963401)
if use rocm; then
strip-unsupported-flags
export CXXFLAGS="$(test-flags-HIPCXX "${CXXFLAGS}")"
fi
if [[ ${PV} == *9999* ]]; then
git-r3_src_unpack
else
default
fi
# Populate GOMODCACHE (no vendor/ dir upstream; network-sandbox is disabled)
cd "${S}" || die
ego mod download
}
src_prepare() {
cmake_src_prepare
use cuda && cuda_src_prepare
# Fix runtime library lookup for multilib. Upstream hardcodes "lib"/"ollama"
# in ml/path.go; rewrite to $(get_libdir) when it differs.
if [[ "$(get_libdir)" != "lib" ]]; then
sed -i \
-e "s/\"lib\", \"ollama\"/\"$(get_libdir)\", \"ollama\"/g" \
ml/path.go || die "libdir sed (path.go) failed"
fi
if use rocm; then
# --hip-version gets appended to compile flags which isn't a known flag.
# Disable -Werror's from go modules to fix rocm builds.
find "${S}" -name "*.go" -exec sed -i "s/ -Werror / /g" {} + || die
fi
}
src_configure() {
# Map USE flags to llama-server GPU runner backends. CPU is always built
# (GGML_CPU_ALL_VARIANTS, runtime-dispatched). cuda_v13 matches CUDA 13.x
# (dev-util/nvidia-cuda-toolkit-13 in the overlay); rocm_v7_2 is the only
# ROCm backend valid on Linux (rocm_v7_1 is Windows-only).
local backends=()
use cuda && backends+=( cuda_v13 )
use rocm && backends+=( rocm_v7_2 )
use vulkan && backends+=( vulkan )
local backend_list
backend_list=$(IFS=';'; echo "${backends[*]}")
local mycmakeargs=(
-DOLLAMA_VERSION="${PVR}"
-DOLLAMA_LIB_DIR="$(get_libdir)/ollama"
-DOLLAMA_MLX_BACKENDS=""
-DOLLAMA_LLAMA_BACKENDS="${backend_list}"
-DGGML_CCACHE=OFF
)
if use cuda; then
local -x CUDAHOSTCXX CUDAHOSTLD
CUDAHOSTCXX="$(cuda_gccdir)"
CUDAHOSTLD="$(tc-getCXX)"
if [[ ! -v CUDAARCHS ]]; then
local CUDAARCHS="all-major"
fi
mycmakeargs+=(
-DCMAKE_CUDA_ARCHITECTURES="${CUDAARCHS}"
)
cuda_add_sandbox -w
addpredict "/dev/char/"
fi
if use rocm; then
mycmakeargs+=(
-DCMAKE_HIP_ARCHITECTURES="$(get_amdgpu_flags)"
-DCMAKE_HIP_PLATFORM="amd"
-DAMDGPU_TARGETS="$(get_amdgpu_flags)"
)
local -x HIP_PATH="${ESYSROOT}/usr"
fi
cmake_src_configure
}
src_install() {
# Installs usr/bin/ollama (Go binary) and usr/$(get_libdir)/ollama/* (the
# llama-server payload), per OLLAMA_LIB_DIR set in src_configure.
cmake_src_install
newinitd "${FILESDIR}/ollama.init" "${PN}"
newconfd "${FILESDIR}/ollama.confd" "${PN}"
systemd_dounit "${FILESDIR}/ollama.service"
}
pkg_preinst() {
keepdir /var/log/ollama
fperms 750 /var/log/ollama
fowners "${PN}:${PN}" /var/log/ollama
}
pkg_postinst() {
if [[ -z ${REPLACING_VERSIONS} ]]; then
einfo "Quick guide:"
einfo "\tollama serve"
einfo "\tollama run llama3:70b"
einfo
einfo "See available models at https://ollama.com/library"
fi
if use cuda; then
einfo "When using cuda the user running ${PN} has to be in the video group or it won't detect devices."
einfo "The ebuild ensures this for user ${PN} via acct-user/${PN}[cuda]"
fi
}
Manage flags for this package:
euse -i <flag> -p sci-ml/ollama |
euse -E <flag> -p sci-ml/ollama |
euse -D <flag> -p sci-ml/ollama
cuda? ( >=dev-util/nvidia-cuda-toolkit-13:= x11-drivers/nvidia-drivers ) rocm? ( >=dev-util/hip-7.2:= >=sci-libs/hipBLAS-7.2:= >=sci-libs/rocBLAS-7.2:= ) vulkan? ( media-libs/vulkan-loader ) >=dev-lang/go-1.26.0
cuda? ( >=dev-util/nvidia-cuda-toolkit-13:= x11-drivers/nvidia-drivers ) rocm? ( >=dev-util/hip-7.2:= >=sci-libs/hipBLAS-7.2:= >=sci-libs/rocBLAS-7.2:= ) vulkan? ( media-libs/vulkan-loader ) acct-group/ollama >=acct-user/ollama-3[cuda?]
>=dev-build/cmake-3.24 dev-vcs/git vulkan? ( dev-util/vulkan-headers media-libs/shaderc )
| Type | File | Size | Source URLs |
|---|---|---|---|
| DIST | ollama-0.30.4.gh.tar.gz | 27776667 bytes | https://github.com/ollama/ollama/archive/refs/tags/v0.30.4.tar.gz |