sci-ml/ollama: 9999 add patch to make bundling runtime deps optional

Ollama insists on copying libs from the build system into it's own install dir.
We do not want that as it's ensured by the package manager. So make it optional.

Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com>
This commit is contained in:
Paul Zander
2026-02-21 21:11:15 +01:00
parent c7c3e7b58a
commit d9fc86cb9d
2 changed files with 137 additions and 3 deletions

View File

@@ -0,0 +1,134 @@
From 7367444df7e44434569708b13ddf26b159e3ba50 Mon Sep 17 00:00:00 2001
From: Paul Zander <negril.nx+gentoo@gmail.com>
Date: Tue, 17 Feb 2026 12:52:29 +0100
Subject: [PATCH] make installing runtime deps optional
Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7d53531b..ce7376d8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -78,6 +78,8 @@ set(GGML_VERSION_MINOR 0)
set(GGML_VERSION_PATCH 0)
set(GGML_VERSION "${GGML_VERSION_MAJOR}.${GGML_VERSION_MINOR}.${GGML_VERSION_PATCH}")
+option(OLLAMA_INSTALL_RUNTIME_DEPS "Install the dependencies of library as well" ON)
+
set(GGML_CPU ON)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src)
set_property(TARGET ggml PROPERTY EXCLUDE_FROM_ALL TRUE)
@@ -88,12 +90,17 @@ if(NOT CPU_VARIANTS)
endif()
install(TARGETS ggml-base ${CPU_VARIANTS}
- RUNTIME_DEPENDENCIES
- PRE_EXCLUDE_REGEXES ".*"
- RUNTIME DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT CPU
+ RUNTIME_DEPENDENCY_SET base
LIBRARY DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT CPU
FRAMEWORK DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT CPU
)
+if(OLLAMA_INSTALL_RUNTIME_DEPS)
+install(RUNTIME_DEPENDENCY_SET base
+ PRE_EXCLUDE_REGEXES ".*"
+ RUNTIME DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT CPU
+ LIBRARY DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT CPU
+)
+endif()
check_language(CUDA)
if(CMAKE_CUDA_COMPILER)
@@ -104,13 +111,18 @@ if(CMAKE_CUDA_COMPILER)
find_package(CUDAToolkit)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src/ggml-cuda)
install(TARGETS ggml-cuda
- RUNTIME_DEPENDENCIES
- DIRECTORIES ${CUDAToolkit_BIN_DIR} ${CUDAToolkit_BIN_DIR}/x64 ${CUDAToolkit_LIBRARY_DIR}
- PRE_INCLUDE_REGEXES cublas cublasLt cudart
- PRE_EXCLUDE_REGEXES ".*"
+ RUNTIME_DEPENDENCY_SET cuda
+ LIBRARY DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT CUDA
+ )
+ if(OLLAMA_INSTALL_RUNTIME_DEPS)
+ install(RUNTIME_DEPENDENCY_SET cuda
+ DIRECTORIES ${CUDAToolkit_BIN_DIR} ${CUDAToolkit_BIN_DIR}/x64 ${CUDAToolkit_LIBRARY_DIR}
+ PRE_INCLUDE_REGEXES cublas cublasLt cudart
+ PRE_EXCLUDE_REGEXES ".*"
RUNTIME DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT CUDA
LIBRARY DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT CUDA
)
+ endif()
endif()
set(WINDOWS_AMDGPU_TARGETS_EXCLUDE_REGEX "^gfx(908|90a|1200|1201):xnack[+-]$"
@@ -143,9 +155,9 @@ if(CMAKE_HIP_COMPILER)
install(TARGETS ggml-hip
RUNTIME_DEPENDENCY_SET rocm
- RUNTIME DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT HIP
LIBRARY DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT HIP
)
+ if(OLLAMA_INSTALL_RUNTIME_DEPS)
install(RUNTIME_DEPENDENCY_SET rocm
DIRECTORIES ${HIP_BIN_INSTALL_DIR} ${HIP_LIB_INSTALL_DIR}
PRE_INCLUDE_REGEXES hipblas rocblas amdhip64 rocsolver amd_comgr hsa-runtime64 rocsparse tinfo rocprofiler-register drm drm_amdgpu numa elf
@@ -161,6 +173,7 @@ if(CMAKE_HIP_COMPILER)
break()
endif()
endforeach()
+ endif()
endif()
endif()
@@ -169,12 +182,17 @@ if(NOT APPLE)
if(Vulkan_FOUND)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/ml/backend/ggml/ggml/src/ggml-vulkan)
install(TARGETS ggml-vulkan
- RUNTIME_DEPENDENCIES
- PRE_INCLUDE_REGEXES vulkan
- PRE_EXCLUDE_REGEXES ".*"
+ RUNTIME_DEPENDENCY_SET vulkan
+ LIBRARY DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT Vulkan
+ )
+ if(OLLAMA_INSTALL_RUNTIME_DEPS)
+ install(RUNTIME_DEPENDENCY_SET vulkan
+ PRE_INCLUDE_REGEXES vulkan
+ PRE_EXCLUDE_REGEXES ".*"
RUNTIME DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT Vulkan
LIBRARY DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT Vulkan
)
+ endif()
endif()
endif()
@@ -188,15 +206,21 @@ if(MLX_ENGINE)
find_package(CUDAToolkit)
install(TARGETS mlx mlxc
- RUNTIME_DEPENDENCIES
- DIRECTORIES ${CUDAToolkit_BIN_DIR} ${CUDAToolkit_BIN_DIR}/x64 ${CUDAToolkit_LIBRARY_DIR}
- PRE_INCLUDE_REGEXES cublas cublasLt cudart nvrtc nvrtc-builtins cudnn nccl openblas gfortran
- PRE_EXCLUDE_REGEXES ".*"
- RUNTIME DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT MLX
+ RUNTIME_DEPENDENCY_SET mlx
LIBRARY DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT MLX
FRAMEWORK DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT MLX
)
+ if(OLLAMA_INSTALL_RUNTIME_DEPS)
+ install(RUNTIME_DEPENDENCY_SET mlx
+ DIRECTORIES ${CUDAToolkit_BIN_DIR} ${CUDAToolkit_BIN_DIR}/x64 ${CUDAToolkit_LIBRARY_DIR}
+ PRE_INCLUDE_REGEXES cublas cublasLt cudart nvrtc nvrtc-builtins cudnn nccl openblas gfortran
+ PRE_EXCLUDE_REGEXES ".*"
+ RUNTIME DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT MLX
+ LIBRARY DESTINATION ${OLLAMA_INSTALL_DIR} COMPONENT MLX
+ )
+ endif()
+
# Install the Metal library for macOS arm64 (must be colocated with the binary)
# Metal backend is only built for arm64, not x86_64
if(APPLE AND CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
--
2.53.0

View File

@@ -105,6 +105,7 @@ RDEPEND="
PATCHES=(
"${FILESDIR}/${PN}-9999-use-GNUInstallDirs.patch"
"${FILESDIR}/${PN}-9999-make-installing-runtime-deps-optional.patch"
)
pkg_pretend() {
@@ -158,9 +159,7 @@ src_prepare() {
sed \
-e "/set(GGML_CCACHE/s/ON/OFF/g" \
-e "/PRE_INCLUDE_REGEXES.*cu/d" \
-e "/PRE_INCLUDE_REGEXES.*hip/d" \
-i CMakeLists.txt || die "bundle headers sed failed"
-i CMakeLists.txt || die "Disable CCACHE sed failed"
# TODO see src_unpack?
sed \
@@ -254,6 +253,7 @@ src_prepare() {
src_configure() {
local mycmakeargs=(
-DOLLAMA_INSTALL_RUNTIME_DEPS="no"
-DGGML_CCACHE="no"
# backends end up in /usr/bin otherwise