View Raw Ebuild
# Based on ex_repo version - many thanks to their contribution!
# Copyright 2025 Arniiiii lg3dx6fd@gmail.com and wadewilson619 at discord
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
ROCM_VERSION=6.4
PYTHON_COMPAT=( python3_{11..12} )
inherit systemd cmake-multilib cuda rocm python-single-r1
DESCRIPTION="Llama.cpp - LLM inference in C/C++."
HOMEPAGE="https://github.com/ggml-org/llama.cpp"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~arm64-macos ~loong ~riscv ~x64-macos ~x86 ~x86-macos"
# BLAS - OpenBLAS, BLIS, Intel oneMKL
# Musa: this provides GPU acceleration using a Moore Threads GPU. Make sure to have the MUSA SDK installed ( https://developer.mthreads.com/musa/musa-sdk ).
# HIP: this provides GPU acceleration on HIP-supported AMD GPUs. Make sure to have ROCm installed. You can download it from your Linux distro's package manager or from here: ROCm Quick Start (Linux): https://rocm.docs.amd.com/projects/install-on-linux/en/latest/tutorial/quick-start.html#rocm-install-quick
# Vulkan: First, follow the official LunarG instructions for the installation and setup of the Vulkan SDK in the Getting Started with the Linux Tarball Vulkan SDK guide. ( https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html )
# CANN: this provides NPU acceleration using the AI cores of your Ascend NPU. And CANN is a hierarchical APIs to help you to quickly build AI applications and service based on Ascend NPU. ( https://www.hiascend.com/en/software/cann )
# ArmĀ® KleidiAIā¢: KleidiAI is a library of optimized microkernels for AI workloads, specifically designed for Arm CPUs. These microkernels enhance performance and can be enabled for use by the CPU backend.
# OpenCL: This provides GPU acceleration through OpenCL on recent Adreno GPU. More information about OpenCL backend can be found in OPENCL.md for more information. ( https://github.com/ggml-org/llama.cpp/blob/master/docs/backend/OPENCL.md )
# WebGPU: The WebGPU backend relies on Dawn ( https://dawn.googlesource.com/dawn ). Follow the instructions here ( https://dawn.googlesource.com/dawn/+/refs/heads/main/docs/quickstart-cmake.md ) to install Dawn locally so that llama.cpp can find it using CMake. The currrent implementation is up-to-date with Dawn commit bed1a61.
# TBD: IBM Z & LinuxONE
# CPU_FLAGS_x86_fma doesn't exist, thus place everything here.
IUSE="
systemd
utils
static
lto
test
examples
disable-arm-neon
dynamic-backends
curl
hbm
android
msvc
+accelerate
blas
blis
+llamafile
cann
musa
cuda
cuda-force-mmq
cuda-force-cublas
+cuda-unified-memory
cuda-f16
cuda-no-peer-copy
cuda-no-vmm
cuda-fa-all-quants
+cuda-graphs
hip
hip-graphs
+hip-no-vmm
hip-uma
vulkan
vulkan-check-results
vulkan-debug
vulkan-memory-debug
vulkan-shader-debug-info
vulkan-perf
vulkan-validate
vulkan-run-tests
kompute
+openmp
rpc
opencl
opencl-profiling
+opencl-embed-kernels
+opencl-use-adreno-kernels
metal
metal-use-bf16
metal-ndebug
metal-shader-debug
+metal-embed-library
+cpu
webgpu
cpu-native
cpu-all-variants
cpu_flags_x86_avx
cpu_flags_x86_avx_vnni
cpu_flags_x86_avx2
cpu_flags_x86_avx512
cpu_flags_x86_avx512_vbmi
cpu_flags_x86_avx512_vnni
cpu_flags_x86_avx512_bf16
cpu_flags_x86_fma
cpu_flags_x86_f16c
cpu_flags_x86_amx_tile
cpu_flags_x86_amx_int8
cpu_flags_x86_amx_bf16
cpu_flags_x86_sse
cpu_flags_x86_sse2
cpu_flags_x86_sse3
cpu_flags_x86_sse4
cpu_flags_x86_sse4a
cpu_flags_x86_sse41
cpu_flags_x86_sse42
cpu_flags_x86_ssse3
kleidiai
cpu_flags_loong_lasx
cpu_flags_loong_lsx
cpu_flags_riscv_rvv
"
# since this is too hard to do right now
# "sycl
# sycl-f16
# sycl-target-nvidia
# sycl-target-amdgpu
# sycl-target-intelgpu
# sycl-via-openapi
# sycl-via-opemkl
# "
# in MSVC F16C and FMA is implied with AVX2/AVX512
# MSVC does not seem to support AMX
# android stuff added according to their docs.
# a lot of !flag ( !subflags ) statements placed for binpkg correctness
REQUIRED_USE="
?? ( python_single_target_python3_11 python_single_target_python3_12 )
|| ( cpu cuda cuda-f16 hip vulkan cann musa kompute opencl metal webgpu kleidiai )
test? ( curl )
vulkan-run-tests? ( test )
blis? ( blas )
cpu-native? ( cpu )
cpu-all-variants? ( cpu )
cuda? ( cpu )
android? (
!llamafile
!openmp
)
msvc? (
!cpu_flags_x86_fma
!cpu_flags_x86_f16c
!cpu_flags_x86_amx_tile
!cpu_flags_x86_amx_int8
!cpu_flags_x86_amx_bf16
)
!cuda? (
!cuda-force-mmq
!cuda-force-cublas
!cuda-unified-memory
!cuda-f16
!cuda-no-peer-copy
!cuda-no-vmm
!cuda-fa-all-quants
!cuda-graphs
)
!hip? (
!hip-graphs
!hip-no-vmm
!hip-uma
)
!vulkan? (
!vulkan-check-results
!vulkan-debug
!vulkan-memory-debug
!vulkan-shader-debug-info
!vulkan-perf
!vulkan-validate
!vulkan-run-tests
)
!opencl? (
!opencl-profiling
!opencl-embed-kernels
!opencl-use-adreno-kernels
)
!cpu? (
!cpu_flags_x86_avx
!cpu_flags_x86_avx_vnni
!cpu_flags_x86_avx2
!cpu_flags_x86_avx512
!cpu_flags_x86_avx512_vbmi
!cpu_flags_x86_avx512_vnni
!cpu_flags_x86_avx512_bf16
!cpu_flags_x86_fma
!cpu_flags_x86_f16c
!cpu_flags_x86_amx_tile
!cpu_flags_x86_amx_int8
!cpu_flags_x86_amx_bf16
!cpu_flags_x86_sse
!cpu_flags_x86_sse2
!cpu_flags_x86_sse3
!cpu_flags_x86_sse4
!cpu_flags_x86_sse4a
!cpu_flags_x86_sse41
!cpu_flags_x86_sse42
!cpu_flags_x86_ssse3
!cpu_flags_loong_lasx
!cpu_flags_loong_lsx
!cpu_flags_riscv_rvv
)
dynamic-backends? ( !cpu-native )
"
# cuda-unified-memory? ( || ( cuda cuda-f16 ) )
# cpu? ( || ( cpu-native cpu-all-variants ) )
DEPEND="
blas? ( virtual/blas )
cuda? ( dev-util/nvidia-cuda-toolkit )
blis? ( sci-libs/blis )
opencl? ( virtual/opencl )
kleidiai? ( dev-cpp/kleidiai )
dev-vcs/git
net-misc/curl
net-misc/wget
utils? ( dev-python/virtualenv )
app-admin/sudo
"
# since this is too hard right now.
# https://github.com/ggml-org/llama.cpp/blob/master/docs/backend/SYCL.md
# To be done a bit later.
# sycl-target-nvidia? ( dev-util/nvidia-cuda-toolkit )
# sycl-target-amdgpu? ( dev-util/nvidia-cuda-toolkit )
# sycl-target-intelgpu? ( dev-util/nvidia-cuda-toolkit )
# "
#DEPEND="\
# ${RDEPEND}
# dev-vcs/git
# net-misc/curl
# net-misc/wget
# utils? ( dev-python/virtualenv )
# openblas? ( virtual/blas sci-libs/openblas[eselect-ldso] sci-libs/lapack[eselect-ldso,lapacke] virtual/lapacke[eselect-ldso] virtual/cblas )
# blis? ( sci-libs/blis )
# onemkl? ( sci-libs/mkl )
# sycl_oneapi? ( sci-libs/mkl )
# sycl_oneapi_16? ( sci-libs/mkl )
# sycl_nvidia? ( sci-ml/oneDNN )
# sycl_nvidia_16? ( sci-ml/oneDNN )
# sycl_amd? ( dev-libs/roct-thunk-interface dev-libs/rocr-runtime )
# cuda? ( dev-util/nvidia-cuda-toolkit )
# hip? ( dev-util/hip )
# vulkan? ( media-libs/vulkan-loader )
# opencl? ( virtual/opencl )
#"
BEPEND="virtual/pkgconfig
dev-util/ccache"
RDEPEND="
acct-user/genai
acct-group/genai
blas? ( virtual/blas )
cuda? ( dev-util/nvidia-cuda-toolkit )
blis? ( sci-libs/blis )
opencl? ( virtual/opencl )
"
BDEPEND="
"
RESTRICT="!test? ( test ) test? ( userpriv )"
DISTUTILS_IN_SOURCE_BUILD=
INSTALL_DIR="/opt/llama-cpp"
CONFIG_DIR="/etc/llama-cpp"
if [[ ${PV} == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/ggml-org/llama.cpp"
EGIT_BRANCH="master"
SRC_URI=""
KEYWORDS=""
MY_PV=${PV//_}
MY_P=${PN}-${MY_PV}
MY_PN="llama-cpp"
S="${WORKDIR}/llama-cpp-${MY_PV}"
else
MY_PV="b${PV#0.}"
SRC_URI="https://github.com/ggml-org/llama.cpp/archive/refs/tags/${MY_PV}.tar.gz -> llama.cpp-${MY_PV}.tar.gz"
S="${WORKDIR}/llama.cpp-${MY_PV}"
fi
src_prepare() {
if use cuda; then
cuda_src_prepare
fi
gpu_arch=""
if use cuda; then
gpu_arch="cuda"
fi
if use cuda-f16; then
gpu_arch="cuda-f16"
fi
if use hip; then
gpu_arch="hip"
fi
if use vulkan; then
gpu_arch="vulkan"
fi
if use cann; then
gpu_arch="cann"
fi
if use musa; then
gpu_arch="musa"
fi
if use kompute; then
gpu_arch="kompute"
fi
if use opencl; then
gpu_arch="opencl"
fi
if use metal; then
gpu_arch="metal"
fi
if use webgpu; then
gpu_arch="webgpu"
fi
if use kleidiai; then
gpu_arch="kleidiai"
fi
if use cpu; then
cpu_ver_selected="no"
if use cpu-native; then
cpu_ver_selected="yes"
fi
if use cpu-all-variants; then
cpu_ver_selected="yes"
fi
if [ "${cpu_ver_selected}" == "no" ]; then
if [[ -z "${gpu_arch}" ]]; then
eerror "!!! You have selected just CPU but did not specify if that should be native or all variants. Please select use \"native\" or \"cpu-all-variants\"."
exit 1
fi
fi
fi
cmake_src_prepare
}
src_configure() {
die() { echo "$*" 1>&2 ; exit 1; }
if use hip; then
HIPCC=$(hipconfig -l)/clang
HIPCXX=$(hipconfig -l)/clang++
# export DEVICE_LIB_PATH=${EPREFIX}/usr/lib/amdgcn/bitcode # not sure what to do with that
HIP_PATH=$(hipconfig -R)
fi
local mycmakeargs=(
-DGGML_LTO=$(usex lto ON OFF)
# add these via user's /etc/portage/make.conf as i.e.`-fsanitize=address`
-DLLAMA_SANITIZE_THREAD=OFF
-DLLAMA_SANITIZE_ADDRESS=OFF
-DLLAMA_SANITIZE_UNDEFINED=OFF
-DLLAMA_CURL=$(usex curl ON OFF)
-DLLAMA_BUILD_TESTS=$(usex test ON OFF)
-DLLAMA_BUILD_EXAMPLES=$(usex examples ON OFF)
#-DLLAMA_BUILD_SERVER=$(usex server ON OFF)
-DLLAMA_BUILD_SERVER=ON
-DLLAMA_BUILD_COMMON=ON
# -DLLAMA_BUILD_SERVER=OFF # why
# -DCMAKE_SKIP_BUILD_RPATH=ON # why?
-DBUILD_NUMBER="${MY_PV}"
# -DCMAKE_INSTALL_PREFIX=${EPREFIX}/opt/${PN} # why would you need that?
# -DCMAKE_CUDA_ARCHITECTURES="75" # I guess this should be set by user.
-DBUILD_SHARED_LIBS=$(usex static OFF ON)
-DGGML_CPU=$(usex cpu ON OFF)
-DGGML_BACKEND_DL=$(usex dynamic-backends ON OFF)
-DGGML_CPU_ALL_VARIANTS=$(usex cpu-all-variants ON OFF)
-DGGML_NATIVE=$(usex cpu-native ON OFF)
-DGGML_CPU_AARCH64=$(usex arm64 ON OFF)
-DGGML_CPU_HBM=$(usex hbm ON OFF)
-DGGML_CPU_KLEIDIAI=$(usex kleidiai ON OFF)
-DGGML_AVX=$(usex cpu_flags_x86_avx ON OFF)
-DGGML_AVX_VNNI=$(usex cpu_flags_x86_avx_vnni ON OFF)
-DGGML_AVX2=$(usex cpu_flags_x86_avx2 ON OFF)
-DGGML_AVX512=$(usex cpu_flags_x86_avx512 ON OFF)
-DGGML_AVX512_VBMI=$(usex cpu_flags_x86_avx512_vbmi ON OFF)
-DGGML_AVX512_VNNI=$(usex cpu_flags_x86_avx512_vnni ON OFF)
-DGGML_AVX512_BF16=$(usex cpu_flags_x86_avx512_bf16 ON OFF)
-DGGML_FMA=$(usex cpu_flags_x86_fma ON OFF)
-DGGML_F16C=$(usex cpu_flags_x86_f16c ON OFF)
-DGGML_AMX_TILE=$(usex cpu_flags_x86_amx_tile ON OFF)
-DGGML_AMX_INT8=$(usex cpu_flags_x86_amx_int8 ON OFF)
-DGGML_AMX_BF16=$(usex cpu_flags_x86_amx_bf16 ON OFF)
-DGGML_SSE=$(usex cpu_flags_x86_sse ON OFF)
-DGGML_SSE2=$(usex cpu_flags_x86_sse2 ON OFF)
-DGGML_SSE3=$(usex cpu_flags_x86_sse3 ON OFF)
-DGGML_SSE4=$(usex cpu_flags_x86_sse4 ON OFF)
-DGGML_SSE4A=$(usex cpu_flags_x86_sse4a ON OFF)
-DGGML_SSE41=$(usex cpu_flags_x86_sse41 ON OFF)
-DGGML_SSE42=$(usex cpu_flags_x86_sse42 ON OFF)
-DGGML_SSSE3=$(usex cpu_flags_x86_ssse3 ON OFF)
-DGGML_LASX=$(usex cpu_flags_loong_lasx ON OFF)
-DGGML_LSX=$(usex cpu_flags_loong_lsx ON OFF)
-DGGML_RVV=$(usex cpu_flags_riscv_rvv ON OFF)
-DGGML_ACCELERATE=$(usex accelerate ON OFF)
-DGGML_BLAS=$(usex blas ON OFF)
-DGGML_CANN=$(usex cann ON OFF)
-DGGML_LLAMAFILE=$(usex llamafile ON OFF)
-DGGML_MUSA=$(usex musa ON OFF)
-DGGML_CUDA=$(usex cuda ON OFF)
-DGGML_CUDA_FORCE_MMQ=$(usex cuda-force-mmq ON OFF)
-DGGML_CUDA_FORCE_CUBLAS=$(usex cuda-force-cublas ON OFF)
-DGGML_CUDA_F16=$(usex cuda-f16 ON OFF)
-DGGML_CUDA_NO_PEER_COPY=$(usex cuda-no-peer-copy ON OFF)
-DGGML_CUDA_NO_VMM=$(usex cuda-no-vmm ON OFF)
-DGGML_CUDA_FA_ALL_QUANTS=$(usex cuda-fa-all-quants ON OFF)
-DGGML_CUDA_GRAPHS=$(usex cuda-graphs ON OFF)
# CPU+GPU Unified Memory
-DGGML_CUDA_ENABLE_UNIFIED_MEMORY=$(usex cuda-unified-memory 1 0)
-DGGML_HIP=$(usex hip ON OFF)
-DGGML_HIP_GRAPHS=$(usex hip-graphs ON OFF)
-DGGML_HIP_NO_VMM=$(usex hip-no-vmm ON OFF)
-DGGML_HIP_UMA=$(usex hip-uma ON OFF)
-DGGML_VULKAN=$(usex vulkan ON OFF)
-DGGML_VULKAN_CHECK_RESULTS=$(usex vulkan-check-results ON OFF)
-DGGML_VULKAN_DEBUG=$(usex vulkan-debug ON OFF)
-DGGML_VULKAN_MEMORY_DEBUG=$(usex vulkan-memory-debug ON OFF)
-DGGML_VULKAN_SHADER_DEBUG_INFO=$(usex vulkan-shader-debug-info ON OFF)
-DGGML_VULKAN_PERF=$(usex vulkan-perf ON OFF)
-DGGML_VULKAN_VALIDATE=$(usex vulkan-validate ON OFF)
-DGGML_VULKAN_RUN_TESTS=$(usex vulkan-run-tests ON OFF)
-DGGML_KOMPUTE=$(usex kompute ON OFF)
-DGGML_METAL=$(usex metal ON OFF)
-DGGML_METAL_USE_BF16=$(usex metal-use-bf16 ON OFF)
-DGGML_METAL_NDEBUG=$(usex metal-ndebug ON OFF)
-DGGML_METAL_SHADER_DEBUG=$(usex metal-shader-debug ON OFF)
-DGGML_METAL_EMBED_LIBRARY=$(usex metal-embed-library ON OFF)
-DGGML_OPENMP=$(usex openmp ON OFF)
-DGGML_RPC=$(usex rpc ON OFF)
-DGGML_SYCL=OFF
# -DGGML_SYCL=$(usex sycl ON OFF)
# -DGGML_SYCL_F16=$(usex sycl-f16 ON OFF)
-DGGML_OPENCL=$(usex opencl ON OFF)
-DGGML_OPENCL_PROFILING=$(usex opencl-profiling ON OFF)
-DGGML_OPENCL_EMBED_KERNELS=$(usex opencl-embed-kernels ON OFF)
-DGGML_OPENCL_USE_ADRENO_KERNELS=$(usex opencl-use-adreno-kernels ON OFF)
# -DGGML_BUILD_TESTS=$(usex test ON OFF) # broken option
# -DGGML_BUILD_EXAMPLES=$(usex examples ON OFF) # broken option
# Gentoo users enable ccache via e.g. FEATURES=ccache or
# other means. We don't want the build system to enable it for us.
-DGGML_CCACHE=OFF
# defaults aren't so good
--log-level=DEBUG
-DFETCHCONTENT_QUIET=OFF
)
if use webgpu; then
mycmakeargs+=( -DGGML_WEBGPU=ON )
fi
if use blis; then
mycmakeargs+=( -DGGML_BLAD_VENDOR=FLAME )
fi
if use hip; then
mycmakeargs+=( -DAMDGPU_TARGETS=$(get_amdgpu_flags) )
fi
#sed -i "s,list(APPEND CXX_FLAGS -Wmissing-declarations -Wmissing-noreturn),list(APPEND CXX_FLAGS -Wmissing-declarations -Wmissing-noreturn -Wno-deprecated-gpu-targets)," cmake/common.cmake || die "Couln't fix the nvcc."
sed -i "/set(CUDA_CXX_FLAGS \"\")/a list(APPEND CMAKE_CUDA_FLAGS -Wno-deprecated-gpu-targets)" ggml/src/ggml-cuda/CMakeLists.txt || die "Couln't fix the nvcc."
use_cuda="no"
if use cuda; then
use_cuda="yes"
fi
if use cuda-f16; then
use_cuda="yes"
fi
if use disable-arm-neon; then
mycmakeargs+=( -DCMAKE_CUDA_FLAGS="-U__ARM_NEON -U__ARM_NEON__" )
fi
if [[ "${use_cuda}" == "yes" ]]; then
#mycmakeargs+=( -DCMAKE_CUDA_FLAGS="-D__STRICT_ANSI__" )
nvcc_version=$(nvcc --version | grep release | awk '{print substr($5, 1, length($5)-1)}')
nvidia_smi_version=$(nvidia-smi -q | grep CUDA | awk '{print $4}')
if [[ "${nvcc_version}" != "${nvidia_smi_version}" ]] && [[ ! -z "${nvcc_version}" ]] && [[ ! -z "${nvidia_smi_version}" ]]; then
ewarn "Warning!!! We have detected that nvcc's cuda version (\"${nvcc_version}\") doesn't seem to be the same as nvidia-smi's cuda version(\"${nvidia_smi_version}\"). Please consider reinstalling dev-util/nvidia-cuda-toolkit in case of compilation errors."
fi
fi
cmake-multilib_src_configure
}
src_install() {
die() { echo "$*" 1>&2 ; exit 1; }
mkdir -p "${D}${INSTALL_DIR}/models"
mkdir -p "${D}${INSTALL_DIR}/gguf-py"
mkdir -p "${D}${CONFIG_DIR}"
cd "${S}"
if use utils; then
elog "Also creating utils."
cp -f "${FILESDIR}/llama_convert_hf_to_gguf" "${D}${INSTALL_DIR}/"
cp -f "${FILESDIR}/llama_convert_hf_to_gguf_update" "${D}${INSTALL_DIR}/"
cp -f "${FILESDIR}/llama_convert_llama_ggml_to_gguf" "${D}${INSTALL_DIR}/"
cp -f "${FILESDIR}/llama_convert_lora_to_gguf" "${D}${INSTALL_DIR}/"
dosbin "${D}${INSTALL_DIR}/llama_convert_hf_to_gguf"
dosbin "${D}${INSTALL_DIR}/llama_convert_hf_to_gguf_update"
dosbin "${D}${INSTALL_DIR}/llama_convert_llama_ggml_to_gguf"
dosbin "${D}${INSTALL_DIR}/llama_convert_lora_to_gguf"
cp -f "${S}/convert_hf_to_gguf.py" "${D}${INSTALL_DIR}/convert_hf_to_gguf.py"
cp -f "${S}/convert_hf_to_gguf_update.py" "${D}${INSTALL_DIR}/convert_hf_to_gguf_update.py"
cp -f "${S}/convert_llama_ggml_to_gguf.py" "${D}${INSTALL_DIR}/convert_llama_ggml_to_gguf.py"
cp -f "${S}/convert_lora_to_gguf.py" "${D}${INSTALL_DIR}/convert_lora_to_gguf.py"
cp -f "${S}/requirements.txt" "${D}${INSTALL_DIR}/requirements.txt"
mkdir -p "${D}${INSTALL_DIR}/requirements"
mkdir -p "${D}${INSTALL_DIR}/tools/mtmd"
mkdir -p "${D}${INSTALL_DIR}/tools/server/bench"
mkdir -p "${D}${INSTALL_DIR}/tools/server/tests"
cp -rf ${S}/requirements/* "${D}${INSTALL_DIR}/requirements/"
cp -f "${S}/tools/mtmd/requirements.txt" "${D}${INSTALL_DIR}/tools/mtmd/"
cp -f "${S}/tools/server/bench/requirements.txt" "${D}${INSTALL_DIR}/tools/server/bench/"
cp -f "${S}/tools/server/tests/requirements.txt" "${D}${INSTALL_DIR}/tools/server/tests/"
cp -rf "${S}/gguf-py" "${D}${INSTALL_DIR}/"
fi
chown -R genai:genai "${D}${INSTALL_DIR}"
cd "${D}"
keepdir "${INSTALL_DIR}/models"
einfo "Example configurations will be stored here: \"${CONFIG_DIR}\"."
insinto "${CONFIG_DIR}"
doins "${FILESDIR}/env.conf.example"
if use systemd; then
elog "Created Systemd service \"llama-cpp.service\""
systemd_newunit "${FILESDIR}/llama-cpp${APPNDX3}.service" llama-cpp.service
fi
default
cmake-multilib_src_install
}
pkg_postinst() {
die() { eerror "$*" 1>&2 ; exit 1; }
cd "${EROOT}${INSTALL_DIR}"
python_xq="python"
if use python_single_target_python3_11; then
python_xq="python3.11"
fi
if use python_single_target_python3_12; then
python_xq="python3.12"
fi
if use utils; then
sed -i "s/python/${python_xq}/" "${EROOT}${INSTALL_DIR}/llama_convert_hf_to_gguf"
sed -i "s/python/${python_xq}/" "${EROOT}${INSTALL_DIR}/llama_convert_hf_to_gguf_update"
sed -i "s/python/${python_xq}/" "${EROOT}${INSTALL_DIR}/llama_convert_llama_ggml_to_gguf"
sed -i "s/python/${python_xq}/" "${EROOT}${INSTALL_DIR}/llama_convert_lora_to_gguf"
sudo -u genai bash -c "$python_xq -m venv ./venv;source venv/bin/activate;pip install --upgrade pip;pip install -r requirements.txt;pip install --upgrade transformers;deactivate"
fi
}
pkg_prerm() {
if use utils; then
einfo "Removing virtual environment."
[[ -d "${EROOT}${INSTALL_DIR}/venv" ]] && rm -rf "${EROOT}${INSTALL_DIR}/venv"
einfo "Removing python tools."
rm -rf "${EROOT}${INSTALL_DIR}/gguf-py"
fi
}