app-misc/ollama: install systemd service file

The ollama documentation refers to a systemd service file to start
the service here:
https://github.com/ollama/ollama/blob/main/docs/linux.md

Signed-off-by: James McGeehan IV <bivsk@tutanota.com>
This commit is contained in:
James McGeehan IV
2025-02-13 03:56:51 -05:00
parent dda83d466a
commit d0c98d31d8
3 changed files with 65 additions and 41 deletions

View File

@@ -0,0 +1,14 @@
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=$PATH"
[Install]
WantedBy=default.target

View File

@@ -5,7 +5,7 @@ EAPI=8
ROCM_VERSION=6.1
inherit cuda rocm
inherit go-module
inherit go-module systemd
DESCRIPTION="Get up and running with Llama 3, Mistral, Gemma, and other language models."
HOMEPAGE="https://ollama.com"
@@ -32,7 +32,7 @@ X86_CPU_FLAGS=(
avx512_vnni
avx512_bf16
)
CPU_FLAGS=( "${X86_CPU_FLAGS[@]/#/cpu_flags_x86_}" )
CPU_FLAGS=("${X86_CPU_FLAGS[@]/#/cpu_flags_x86_}")
IUSE="${CPU_FLAGS[*]} cuda rocm"
REQUIRED_USE="
@@ -91,17 +91,20 @@ src_prepare() {
src_configure() {
local CUSTOM_CPU_FLAGS=()
use cpu_flags_x86_avx && CUSTOM_CPU_FLAGS+=( "avx" )
use cpu_flags_x86_avx2 && CUSTOM_CPU_FLAGS+=( "avx2" )
use cpu_flags_x86_avx512f && CUSTOM_CPU_FLAGS+=( "avx512" )
use cpu_flags_x86_avx512vbmi && CUSTOM_CPU_FLAGS+=( "avx512vbmi" )
use cpu_flags_x86_avx512_vnni && CUSTOM_CPU_FLAGS+=( "avx512vnni" )
use cpu_flags_x86_avx512_bf16 && CUSTOM_CPU_FLAGS+=( "avx512bf16" )
use cpu_flags_x86_avx && CUSTOM_CPU_FLAGS+=("avx")
use cpu_flags_x86_avx2 && CUSTOM_CPU_FLAGS+=("avx2")
use cpu_flags_x86_avx512f && CUSTOM_CPU_FLAGS+=("avx512")
use cpu_flags_x86_avx512vbmi && CUSTOM_CPU_FLAGS+=("avx512vbmi")
use cpu_flags_x86_avx512_vnni && CUSTOM_CPU_FLAGS+=("avx512vnni")
use cpu_flags_x86_avx512_bf16 && CUSTOM_CPU_FLAGS+=("avx512bf16")
# Build basic ollama executable with cpu features built in
emakeargs=(
# CCACHE=""
"CUSTOM_CPU_FLAGS=$( IFS=','; echo "${CUSTOM_CPU_FLAGS[*]}")"
"CUSTOM_CPU_FLAGS=$(
IFS=','
echo "${CUSTOM_CPU_FLAGS[*]}"
)"
)
if use cuda; then
@@ -130,7 +133,7 @@ src_configure() {
cuda_add_sandbox -w
else
emakeargs+=( OLLAMA_SKIP_CUDA_GENERATE="1" )
emakeargs+=(OLLAMA_SKIP_CUDA_GENERATE="1")
fi
if use rocm; then
@@ -141,7 +144,7 @@ src_configure() {
check_amdgpu
else
emakeargs+=( OLLAMA_SKIP_ROCM_GENERATE="1" )
emakeargs+=(OLLAMA_SKIP_ROCM_GENERATE="1")
fi
emake "${emakeargs[@]}" help-runners
@@ -155,7 +158,7 @@ src_compile() {
src_install() {
dobin "dist/linux-${ARCH}/bin/ollama"
if [[ -d "dist/linux-${ARCH}/lib/ollama" ]] ; then
if [[ -d "dist/linux-${ARCH}/lib/ollama" ]]; then
insinto /usr/lib
doins -r "dist/linux-${ARCH}/lib/ollama"
fi
@@ -165,6 +168,7 @@ src_install() {
fi
doinitd "${FILESDIR}"/ollama.init
systemd_dounit "${FILESDIR}"/ollama.service
}
pkg_preinst() {

View File

@@ -6,7 +6,7 @@ EAPI=8
ROCM_VERSION=6.1
inherit cuda rocm
inherit cmake
inherit go-module toolchain-funcs
inherit go-module systemd toolchain-funcs
DESCRIPTION="Get up and running with Llama 3, Mistral, Gemma, and other language models."
HOMEPAGE="https://ollama.com"
@@ -34,7 +34,7 @@ X86_CPU_FLAGS=(
amx_tile
amx_int8
)
CPU_FLAGS=( "${X86_CPU_FLAGS[@]/#/cpu_flags_x86_}" )
CPU_FLAGS=("${X86_CPU_FLAGS[@]/#/cpu_flags_x86_}")
IUSE="${CPU_FLAGS[*]} cuda blas mkl rocm"
# IUSE+=" opencl vulkan"
@@ -91,53 +91,58 @@ src_prepare() {
fi
if
! use cpu_flags_x86_avx ||
! use cpu_flags_x86_f16c ||
! use cpu_flags_x86_avx2 ||
! use cpu_flags_x86_fma3; then
! use cpu_flags_x86_f16c ||
! use cpu_flags_x86_avx2 ||
! use cpu_flags_x86_fma3
then
sed -e "/ggml_add_cpu_backend_variant(haswell/s/^/# /g" -i ml/backend/ggml/ggml/src/CMakeLists.txt || die
# AVX F16C AVX2 FMA)
fi
if
! use cpu_flags_x86_avx ||
! use cpu_flags_x86_f16c ||
! use cpu_flags_x86_avx2 ||
! use cpu_flags_x86_fma3 ||
! use cpu_flags_x86_avx512f; then
sed -e "/ggml_add_cpu_backend_variant(skylakex/s/^/# /g" -i ml/backend/ggml/ggml/src/CMakeLists.txt || die
! use cpu_flags_x86_f16c ||
! use cpu_flags_x86_avx2 ||
! use cpu_flags_x86_fma3 ||
! use cpu_flags_x86_avx512f
then
sed -e "/ggml_add_cpu_backend_variant(skylakex/s/^/# /g" -i ml/backend/ggml/ggml/src/CMakeLists.txt || die
# AVX F16C AVX2 FMA AVX512)
fi
if
! use cpu_flags_x86_avx ||
! use cpu_flags_x86_f16c ||
! use cpu_flags_x86_avx2 ||
! use cpu_flags_x86_fma3 ||
! use cpu_flags_x86_avx512f ||
! use cpu_flags_x86_avx512vbmi ||
! use cpu_flags_x86_avx512_vnni; then
! use cpu_flags_x86_f16c ||
! use cpu_flags_x86_avx2 ||
! use cpu_flags_x86_fma3 ||
! use cpu_flags_x86_avx512f ||
! use cpu_flags_x86_avx512vbmi ||
! use cpu_flags_x86_avx512_vnni
then
sed -e "/ggml_add_cpu_backend_variant(icelake/s/^/# /g" -i ml/backend/ggml/ggml/src/CMakeLists.txt || die
# AVX F16C AVX2 FMA AVX512 AVX512_VBMI AVX512_VNNI)
fi
if
! use cpu_flags_x86_avx ||
! use cpu_flags_x86_f16c ||
! use cpu_flags_x86_avx2 ||
! use cpu_flags_x86_fma3 ||
! use cpu_flags_x86_avx_vnni; then
! use cpu_flags_x86_f16c ||
! use cpu_flags_x86_avx2 ||
! use cpu_flags_x86_fma3 ||
! use cpu_flags_x86_avx_vnni
then
sed -e "/ggml_add_cpu_backend_variant(alderlake/s/^/# /g" -i ml/backend/ggml/ggml/src/CMakeLists.txt || die
# AVX F16C AVX2 FMA AVX_VNNI)
fi
if
! use cpu_flags_x86_avx ||
! use cpu_flags_x86_f16c ||
! use cpu_flags_x86_avx2 ||
! use cpu_flags_x86_fma3 ||
! use cpu_flags_x86_avx512f ||
! use cpu_flags_x86_avx512vbmi ||
! use cpu_flags_x86_avx512_vnni ||
! use cpu_flags_x86_avx512_bf16 ||
! use cpu_flags_x86_amx_tile ||
! use cpu_flags_x86_amx_int8 ; then
! use cpu_flags_x86_f16c ||
! use cpu_flags_x86_avx2 ||
! use cpu_flags_x86_fma3 ||
! use cpu_flags_x86_avx512f ||
! use cpu_flags_x86_avx512vbmi ||
! use cpu_flags_x86_avx512_vnni ||
! use cpu_flags_x86_avx512_bf16 ||
! use cpu_flags_x86_amx_tile ||
! use cpu_flags_x86_amx_int8
then
sed -e "/ggml_add_cpu_backend_variant(sapphirerapids/s/^/# /g" -i ml/backend/ggml/ggml/src/CMakeLists.txt || die
#AVX F16C AVX2 FMA AVX512 AVX512_VBMI AVX512_VNNI AVX512_BF16 AMX_TILE AMX_INT8)
fi
@@ -271,6 +276,7 @@ src_install() {
fi
doinitd "${FILESDIR}"/ollama.init
systemd_dounit "${FILESDIR}"/ollama.service
}
pkg_preinst() {