Name: ollama-grid Version: 0.34.2 Release: 5%{?dist} Summary: Meta-pacote e backends do Ollama (Vulkan/ROCm/CUDA) com balanceador Nginx License: MIT URL: https://github.com/mwprado/ollama-grid # ====== SOURCE0: OLLAMA-GRID (assets: scripts/patch/nginx/systemd/tmpfiles/sysusers) ===== Source0: https://github.com/mwprado/ollama-grid/archive/refs/heads/main.tar.gz # ====== SOURCE1: OLLAMA upstream ====== Source1: https://github.com/ollama/ollama/archive/refs/tags/v%{version}.tar.gz # ====== Backends for Distro ====== %bcond_without cpu %bcond_without vulkan %if 0%{?fedora} == 41 %bcond_with cuda12 %bcond_with cuda13 %bcond_with rocm %endif %if 0%{?fedora} == 42 %bcond_with cuda12 %bcond_with cuda13 %bcond_with rocm %endif %if 0%{?fedora} == 43 %bcond_with cuda12 %bcond_with cuda13 %bcond_with rocm %endif %if 0%{?fedora} >= 44 %bcond_without cuda12 %bcond_without cuda13 %bcond_without rocm %endif %if 0%{?rhel} == 9 %bcond_without cuda12 %bcond_with cuda13 %bcond_without rocm %endif %if 0%{?rhel} == 10 %bcond_without cuda12 %bcond_without cuda13 %bcond_without rocm %endif # ====== Start Enviroment ====== # ====== CPU Environment ====== %global build_uuid %(uuidgen | tr -d '\n') %global bdir %{_builddir}/%{name}-%{version}/%{build_uuid} %if %{with cpu} %global cpu_cc /usr/bin/gcc %global cpu_cxx /usr/bin/g++ %global cpu_cflags %{build_cflags} %global cpu_cxxflags %{build_cxxflags} %global cpu_ldflags %{build_ldflags} %global cpu_backend %{nil} %global cpu_go_env CGO_ENABLED=1 %global cpu_builddir %{bdir}/ollama/build %global cpu_output %{cpu_builddir}/ollama-grid-cpu %endif # ====== Vulkan Environment ====== %if %{with vulkan} %global vulkan_cc /usr/bin/gcc %global vulkan_cxx /usr/bin/g++ %global vulkan_cflags %{build_cflags} %global vulkan_cxxflags %{build_cxxflags} %global vulkan_ldflags %{build_ldflags} %global vulkan_backend vulkan %global vulkan_go_env CGO_ENABLED=1 %global vulkan_builddir %{bdir}/ollama/build %global vulkan_output %{vulkan_builddir}/ollama-grid-vulkan %endif %if %{with cuda12} %global cuda12_host_flags %{nil} %global cuda12_cflags %{build_cflags} %global cuda12_cxxflags %{build_cxxflags} %global cuda12_ldflags %{build_ldflags} %global cuda12_cuda_flags -Wno-deprecated-gpu-targets -Xcompiler=-fPIC # Go/cgo padrão: nenhuma adaptação de toolchain %global cuda12_cmake_go_env CGO_ENABLED=1 GOFLAGS="-buildmode=pie" %endif # ====== Requirements for distro and tecnology ====== %if 0%{?fedora} == 41 && %{with cuda12} %global cuda12_version 12.9 %global cuda12_home /usr/local/cuda-12.9 %global cuda12_cc /usr/bin/gcc %global cuda12_cxx /usr/bin/g++ BuildRequires: cuda-toolkit-12-9 %endif %if 0%{?fedora} == 42 && %{with cuda13} %global cuda13_version 13.0 %global cuda13_home /usr/local/cuda-13.0 %global cuda13_cc /usr/bin/gcc %global cuda13_cxx /usr/bin/g++ BuildRequires: cuda-toolkit-13-0 %endif %if 0%{?fedora} == 43 && %{with rocm} %global rocm_version 6.4 %global rocm_backend rocm_v6_4 BuildRequires: hip-devel BuildRequires: hipblas-devel BuildRequires: hipcc BuildRequires: numactl-libs BuildRequires: libatomic BuildRequires: libquadmath %endif %if 0%{?fedora} == 43 && %{with cuda13} %global cuda13_version 13.2 %global cuda13_home /usr/local/cuda-13.2 %global cuda13_cc /usr/bin/gcc %global cuda13_cxx /usr/bin/g++ BuildRequires: cuda-toolkit-13-2 %endif %if 0%{?fedora} == 44 && %{with rocm} %global rocm_version 7.1 # Ollama 0.34.2 usa rocm_v7_2 para o backend Linux %global rocm_backend rocm_v7_2 # Layout Fedora, não AMD /opt/rocm %global rocm_home /usr %global rocm_llvm_bin /usr/lib64/rocm/llvm/bin BuildRequires: hip-devel BuildRequires: hipblas-devel BuildRequires: hipcc BuildRequires: cmake(rocblas) BuildRequires: numactl-libs %endif %if 0%{?fedora} >= 45 && %{with rocm} %global rocm_version 7.2 %global rocm_backend rocm_v7_2 %global rocm_home /usr %global rocm_llvm_bin /usr/lib64/rocm/llvm/bin BuildRequires: hip-devel BuildRequires: hipblas-devel BuildRequires: hipcc BuildRequires: cmake(rocblas) BuildRequires: numactl-libs %endif %if 0%{?fedora} >= 44 && %{with cuda12} %global cuda12_version 12.9 %global cuda12_home /usr/local/cuda-12.9 %global cuda12_cc /usr/lib64/custom-gcc14/bin/gcc %global cuda12_cxx /usr/lib64/custom-gcc14/bin/g++ %global cuda12_glibc /usr/lib64/custom-glibc %global cuda12_sysroot /usr/lib64/custom-glibc %global cuda12_host_flags --sysroot=%{cuda12_sysroot} -B%{cuda12_sysroot}/usr/lib64/ %global cuda12_cuda_flags -Wno-deprecated-gpu-targets -Xcompiler=--sysroot=%{cuda12_sysroot} -Xcompiler=-B%{cuda12_sysroot}/usr/lib64/ -Xcompiler=-fPIC %global cuda12_cflags %(echo "%{build_cflags}" | sed -E 's@-specs=[^ ]*annobin[^ ]*@@g') %{cuda12_host_flags} %global cuda12_cxxflags %(echo "%{build_cxxflags}" | sed -E 's@-specs=[^ ]*annobin[^ ]*@@g') %{cuda12_host_flags} %global cuda12_ldflags %(echo "%{build_ldflags}" | sed -E 's@-specs=[^ ]*annobin[^ ]*@@g') %{cuda12_host_flags} # Ambiente adicional necessário somente para a cápsula Fedora 44 %global cuda12_cmake_go_env CGO_ENABLED=1 CGO_CFLAGS="%{cuda12_cflags}" CGO_CXXFLAGS="%{cuda12_cxxflags}" CGO_LDFLAGS="%{cuda12_ldflags}" GOFLAGS="-buildmode=pie" %global cuda12_final_go_env CGO_ENABLED=1 CGO_CFLAGS="%{cuda12_cflags}" CGO_CXXFLAGS="%{cuda12_cxxflags}" CGO_LDFLAGS="%{cuda12_ldflags}" BuildRequires: custom-gcc14 BuildRequires: custom-glibc = 2.40 BuildRequires: cuda-toolkit-12-9 %endif %if 0%{?fedora} >= 44 && %{with cuda13} %global cuda13_version 13.3 %global cuda13_home /usr/local/cuda-13.3 %global cuda13_cc /usr/bin/gcc-15 %global cuda13_cxx /usr/bin/g++-15 BuildRequires: gcc15 BuildRequires: gcc15-c++ BuildRequires: cuda-toolkit-13-3 %endif %if 0%{?rhel} == 9 && %{with cuda12} %global cuda12_version 12.9 %global cuda12_home /usr/local/cuda-12.9 %global cuda12_cc /usr/bin/gcc %global cuda12_cxx /usr/bin/g++ BuildRequires: cuda-toolkit-12-9 %endif %if 0%{?rhel} == 9 && %{with cuda13} %global cuda13_version 13.3 %global cuda13_home /usr/local/cuda-13.3 %global cuda13_cc /usr/bin/gcc %global cuda13_cxx /usr/bin/g++ BuildRequires: cuda-toolkit-13-3 %endif %if 0%{?rhel} == 10 && %{with cuda12} %global cuda12_version 12.9 %global cuda12_home /usr/local/cuda-12.9 %global cuda12_cc /usr/bin/gcc %global cuda12_cxx /usr/bin/g++ BuildRequires: cuda-toolkit-12-9 %endif %if 0%{?rhel} == 10 && %{with cuda13} %global cuda13_version 13.3 %global cuda13_home /usr/local/cuda-13.3 %global cuda13_cc /usr/bin/gcc %global cuda13_cxx /usr/bin/g++ BuildRequires: cuda-toolkit-13-3 %endif %if 0%{?rhel} == 9 && %{with rocm} %global rocm_version 7.2 %global rocm_backend rocm_v7_2 %global rocm_home /opt/rocm BuildRequires: rocblas-devel BuildRequires: rocm-hip-runtime-devel BuildRequires: hip-devel BuildRequires: hipblas-devel BuildRequires: hipcc BuildRequires: numactl-libs %endif %if 0%{?rhel} == 10 && %{with rocm} %global rocm_version 7.2 %global rocm_backend rocm_v7_2 %global rocm_home /opt/rocm BuildRequires: rocblas-devel BuildRequires: rocm-hip-runtime-devel BuildRequires: hip-devel BuildRequires: hipblas-devel BuildRequires: hipcc BuildRequires: numactl-libs %endif # ====== Caminhos de instalação ====== %global _debugsource_packages 0 %global debug_package %{nil} %global og_libdir %{_libdir}/ollama-grid %global og_confdir %{_sysconfdir}/ollama-grid %global og_nginx_conf %{_sysconfdir}/nginx/conf.d/ollama-grid.conf %global og_licensedir %{_licensedir}/ollama-grid # Comando comum de build do binário Go (repo root do Ollama) %global og_go_ldflag_vulkan %{nil} %global og_go_ldflag_cuda13 %{nil} %global og_go_ldflag_cuda12 %{nil} %global og_go_ldflag_cpu %{nil} %global og_go_ldflag_rocm %{nil} %global og_gobuild go build -trimpath -buildmode=pie %if 0%{?rhel} == 9 %global og_cpu_compat -DGGML_CPU_ALL_VARIANTS=OFF %else %global og_cpu_compat %{nil} %endif # ====== BuildRequires gerais ====== BuildRequires: gcc gcc-c++ cmake make git-core golang patchelf systemd-rpm-macros BuildRequires: openmpi-devel BuildRequires: util-linux # Vulkan %if %{with vulkan} BuildRequires: pkgconfig(vulkan) BuildRequires: glslang BuildRequires: glslc BuildRequires: cmake(SPIRV-Headers) %endif %description OllamaGrid é um conjunto de pacotes para executar o Ollama em ambientes heterogêneos (CPU/GPU) com empacotamentos separados por backend (Vulkan/ROCm/CUDA), integração via Nginx e orquestração por serviços systemd. # ==================== Subpackages ==================== # (1) Common (binário e estrutura) %package -n ollama-grid-common Requires(post): systemd Requires(postun): systemd Summary: Arquivos comuns: sysusers/tmpfiles, diretórios e units systemd %description -n ollama-grid-common Arquivos comuns ao sistema (usuário/grupo ollama-grid, diretórios padrão, tmpfiles e template de serviço systemd). # (2) Balancer (apenas Nginx + conf) %package -n ollama-grid-balancer Summary: Balanceador Nginx e integração do OllamaGrid Requires: ollama-grid-common = %{version}-%{release} Requires: nginx %description -n ollama-grid-balancer Subpacote contendo a configuração do Nginx para o OllamaGrid e arquivos de integração. Instale pelo menos um backend (CPU/Vulkan/ROCm/CUDA). # (3) CPU %if %{with cpu} %package -n ollama-grid-cpu Summary: Backend CPU Requires: ollama-grid-common = %{version}-%{release} %description -n ollama-grid-cpu Bibliotecas CPU e wrapper /usr/bin/ollama-grid-cpu. %endif # (4) Vulkan %if %{with vulkan} %package -n ollama-grid-vulkan Summary: Backend Vulkan (universal GPU: Intel/AMD/NVIDIA) Requires: ollama-grid-common = %{version}-%{release} %description -n ollama-grid-vulkan Bibliotecas Vulkan e wrapper /usr/bin/ollama-grid-vulkan. %endif %if %{with rocm} && "%{_arch}" == "x86_64" # (5) ROCm %package -n ollama-grid-rocm Summary: Backend ROCm (GPUs AMD) Requires: ollama-grid-common = %{version}-%{release} %description -n ollama-grid-rocm Bibliotecas ROCm (HIP) e wrapper /usr/bin/ollama-grid-rocm. %endif %if %{with cuda13} # (6) CUDA (moderno, sempre “latest” disponível no host de build) %package -n ollama-grid-cuda13 Summary: Backend CUDA (GPUs NVIDIA modernas) Requires: ollama-grid-common = %{version}-%{release} %description -n ollama-grid-cuda13 Bibliotecas CUDA13 (moderno) e wrapper /usr/bin/ollama-grid-cuda13. Requer toolkit presente no host. %endif %if %{with cuda12} # (7) CUDA legacy 12.9 (ex.: Tesla P4, sm_61) %package -n ollama-grid-cuda12 Summary: Backend CUDA 12.9 para GPUs NVIDIA legadas Requires: ollama-grid-common = %{version}-%{release} %description -n ollama-grid-cuda12 Backend CUDA 12.9 para GPUs NVIDIA que não são mais atendidas pelo runtime CUDA 13. %endif echo "# ==================== Prep ==================== #" %prep # Cria raiz estável e NÃO extrai nada ainda %setup -q -T -c # Pastas de trabalho mkdir -p %{bdir}/ollama-grid %{bdir}/ollama # Extrai os dois tarballs achatando o topo (independe do nome interno) tar -xzf %{SOURCE0} -C %{bdir}/ollama-grid --strip-components=1 tar -xzf %{SOURCE1} -C %{bdir}/ollama --strip-components=1 %if %{with cuda13} && 0 mkdir %{bdir}/cuda13_include cp -a /usr/local/cuda-13.0/targets/x86_64-linux/include/* %{bdir}/cuda13_include/ pushd %{bdir}/cuda13_include/crt %if 0%{?fedora} == 43 cp -a %{bdir}/ollama-grid/scripts/cuda13-math-functions.h.patch %{bdir}/cuda13_include/crt/ patch -u < cuda13-math-functions.h.patch %elif 0%{?fedora} == 42 cp -a %{bdir}/ollama-grid/scripts/f42-cuda12-math-functions.h.patch %{bdir}/cuda12_include/crt/ patch -u < f42-cuda12-math-functions.h.patch %endif popd %endif %if %{with cuda12} && 0 mkdir %{bdir}/cuda12_include/ cp -a /usr/local/cuda-12.9/targets/x86_64-linux/include/* %{bdir}/cuda12_include/ pushd %{bdir}/cuda12_include/crt %if 0%{?fedora} == 43 cp -a %{bdir}/ollama-grid/scripts/cuda12-math-functions.h.patch %{bdir}/cuda12_include/crt/ patch -u < cuda12-math-functions.h.patch %elif 0%{?fedora} == 42 cp -a %{bdir}/ollama-grid/scripts/f42-cuda12-math-functions.h.patch %{bdir}/cuda12_include/crt/ patch -u < f42-cuda12-math-functions.h.patch %endif popd %endif echo "# ==================== Build =================== #" %build echo "#---CPU---#" %if %{with cpu} pushd %{bdir}/ollama mkdir -p %{cpu_builddir} CC=%{cpu_cc} \ CXX=%{cpu_cxx} \ CFLAGS="%{cpu_cflags}" \ CXXFLAGS="%{cpu_cxxflags}" \ LDFLAGS="%{cpu_ldflags}" \ cmake --fresh --preset Default \ -DCMAKE_C_COMPILER=%{cpu_cc} \ -DCMAKE_CXX_COMPILER=%{cpu_cxx} \ -DOLLAMA_LLAMA_BACKENDS="%{cpu_backend}" \ -DCMAKE_HIP_COMPILER=NOTFOUND \ -DCMAKE_CUDA_COMPILER=NOTFOUND \ -DCMAKE_DISABLE_FIND_PACKAGE_Vulkan=TRUE \ -DCMAKE_BUILD_TYPE=Release \ %{og_cpu_compat} \ -B %{cpu_builddir} CC=%{cpu_cc} \ CXX=%{cpu_cxx} \ CFLAGS="%{cpu_cflags}" \ CXXFLAGS="%{cpu_cxxflags}" \ LDFLAGS="%{cpu_ldflags}" \ cmake --build %{cpu_builddir} \ --parallel %{?_smp_build_ncpus} CC=%{cpu_cc} \ CXX=%{cpu_cxx} \ CFLAGS="%{cpu_cflags}" \ CXXFLAGS="%{cpu_cxxflags}" \ LDFLAGS="%{cpu_ldflags}" \ %{cpu_go_env} \ %{og_gobuild} %{og_go_ldflag_cpu} \ -o %{cpu_output} . popd mv %{cpu_builddir} %{bdir}/build-cpu %endif echo "#---Vulkan---#" %if %{with vulkan} pushd %{bdir}/ollama mkdir -p %{vulkan_builddir} CC=%{vulkan_cc} \ CXX=%{vulkan_cxx} \ CFLAGS="%{vulkan_cflags}" \ CXXFLAGS="%{vulkan_cxxflags}" \ LDFLAGS="%{vulkan_ldflags}" \ cmake --fresh --preset Default \ -DCMAKE_C_COMPILER=%{vulkan_cc} \ -DCMAKE_CXX_COMPILER=%{vulkan_cxx} \ -DOLLAMA_LLAMA_BACKENDS=%{vulkan_backend} \ -DCMAKE_HIP_COMPILER=NOTFOUND \ -DCMAKE_CUDA_COMPILER=NOTFOUND \ -DCMAKE_BUILD_TYPE=Release \ %{og_cpu_compat} \ -B %{vulkan_builddir} CC=%{vulkan_cc} \ CXX=%{vulkan_cxx} \ CFLAGS="%{vulkan_cflags}" \ CXXFLAGS="%{vulkan_cxxflags}" \ LDFLAGS="%{vulkan_ldflags}" \ cmake --build %{vulkan_builddir} \ --parallel %{?_smp_build_ncpus} CC=%{vulkan_cc} \ CXX=%{vulkan_cxx} \ CFLAGS="%{vulkan_cflags}" \ CXXFLAGS="%{vulkan_cxxflags}" \ LDFLAGS="%{vulkan_ldflags}" \ %{vulkan_go_env} \ %{og_gobuild} %{og_go_ldflag_vulkan} \ -o %{vulkan_output} . popd mv %{vulkan_builddir} %{bdir}/build-vulkan %endif echo "#---ROCm---#" %if %{with rocm} && "%{_arch}" == "x86_64" pushd %{bdir}/ollama mkdir -p %{bdir}/ollama/build ROCM_PATH=%{rocm_home} \ PATH=%{rocm_home}/bin:%{rocm_home}/llvm/bin:$PATH \ CC=/usr/bin/gcc \ CXX=/usr/bin/g++ \ cmake --fresh --preset Default \ -DOLLAMA_LLAMA_BACKENDS=%{rocm_backend} \ -DOLLAMA_VERSION=%{version} \ -DOLLAMA_GO_OUTPUT=%{bdir}/ollama/build/ollama-grid-rocm \ -DCMAKE_PREFIX_PATH=%{rocm_home} \ -DCMAKE_DISABLE_FIND_PACKAGE_Vulkan=TRUE \ -DCMAKE_CUDA_COMPILER=NOTFOUND \ -DAMDGPU_TARGETS="gfx1030;gfx1100;gfx1101;gfx1102;gfx1200;gfx1201" \ -DCMAKE_BUILD_TYPE=Release \ %{og_cpu_compat} \ -B %{bdir}/ollama/build ROCM_PATH=%{rocm_home} \ PATH=%{rocm_home}/bin:%{rocm_home}/llvm/bin:$PATH \ CC=/usr/bin/gcc \ CXX=/usr/bin/g++ \ GOFLAGS="-buildmode=pie" \ cmake --build %{bdir}/ollama/build \ --parallel %{?_smp_build_ncpus} popd mv %{bdir}/ollama/build %{bdir}/build-rocm %endif echo "#---CUDA 13---#" %if %{with cuda13} pushd %{bdir}/ollama mkdir -p %{bdir}/ollama/build CC=%{cuda13_cc} \ CXX=%{cuda13_cxx} \ CUDAHOSTCXX=%{cuda13_cxx} \ CUDACXX=%{cuda13_home}/bin/nvcc \ cmake --fresh --preset Default \ -DOLLAMA_LLAMA_BACKENDS=cuda_v13 \ -DOLLAMA_VERSION=%{version} \ -DOLLAMA_GO_OUTPUT=%{bdir}/ollama/build/ollama-grid-cuda13 \ -DCUDAToolkit_ROOT=%{cuda13_home} \ -DCMAKE_CUDA_COMPILER=%{cuda13_home}/bin/nvcc \ -DCMAKE_CUDA_HOST_COMPILER=%{cuda13_cxx} \ -DCMAKE_DISABLE_FIND_PACKAGE_Vulkan=TRUE \ -DCMAKE_HIP_COMPILER=NOTFOUND \ -DCMAKE_CUDA_FLAGS="-Wno-deprecated-gpu-targets -Xcompiler=-fPIC" \ -DCMAKE_BUILD_TYPE=Release \ %{og_cpu_compat} \ -B %{bdir}/ollama/build CC=%{cuda13_cc} \ CXX=%{cuda13_cxx} \ CUDAHOSTCXX=%{cuda13_cxx} \ CUDACXX=%{cuda13_home}/bin/nvcc \ GOFLAGS="-buildmode=pie" \ cmake --build %{bdir}/ollama/build \ --parallel %{?_smp_build_ncpus} popd mv %{bdir}/ollama/build %{bdir}/build-cuda13 %endif echo "#---CUDA 12---#" %if %{with cuda12} ls -l %{cuda12_home}/bin/nvcc %{cuda12_home}/bin/nvcc --version pushd %{bdir}/ollama mkdir -p %{bdir}/ollama/build CC=%{cuda12_cc} \ CXX=%{cuda12_cxx} \ CUDAHOSTCXX=%{cuda12_cxx} \ CUDACXX=%{cuda12_home}/bin/nvcc \ NVCC_CCBIN=%{cuda12_cxx} \ CFLAGS="%{cuda12_cflags}" \ CXXFLAGS="%{cuda12_cxxflags}" \ LDFLAGS="%{cuda12_ldflags}" \ cmake --fresh --preset Default \ -DOLLAMA_LLAMA_BACKENDS=cuda_v12 \ -DOLLAMA_VERSION=%{version} \ -DCMAKE_C_COMPILER=%{cuda12_cc} \ -DCMAKE_CXX_COMPILER=%{cuda12_cxx} \ -DCMAKE_CUDA_COMPILER=%{cuda12_home}/bin/nvcc \ -DCMAKE_CUDA_HOST_COMPILER=%{cuda12_cxx} \ -DCUDAToolkit_ROOT=%{cuda12_home} \ -DCMAKE_DISABLE_FIND_PACKAGE_Vulkan=TRUE \ -DCMAKE_HIP_COMPILER=NOTFOUND \ -DCMAKE_CUDA_FLAGS="%{cuda12_cuda_flags}" \ -DCMAKE_BUILD_TYPE=Release \ %{og_cpu_compat} \ -B %{bdir}/ollama/build # Compilar os alvos nativos; nao executar o build Go automatico do CMake. CC=%{cuda12_cc} \ CXX=%{cuda12_cxx} \ CUDAHOSTCXX=%{cuda12_cxx} \ CUDACXX=%{cuda12_home}/bin/nvcc \ NVCC_CCBIN=%{cuda12_cxx} \ CFLAGS="%{cuda12_cflags}" \ CXXFLAGS="%{cuda12_cxxflags}" \ LDFLAGS="%{cuda12_ldflags}" \ cmake --build %{bdir}/ollama/build \ --target ollama-llama-server-local ollama-llama-server-cuda_v12 \ --parallel %{?_smp_build_ncpus} # Gerar executavel Go separadamente com GCC 14/glibc Cangaceiro. CC=%{cuda12_cc} \ CXX=%{cuda12_cxx} \ %{cuda12_final_go_env} \ %{og_gobuild} %{og_go_ldflag_cuda12} \ -o %{bdir}/ollama/build/ollama-grid-cuda12 . popd mv %{bdir}/ollama/build %{bdir}/build-cuda12 %endif echo "# ==================== Install ==================== #" %install rm -rf %{buildroot} # --- diretórios base --- install -d \ %{buildroot}%{_bindir} \ %{buildroot}%{_sysusersdir} \ %{buildroot}%{_tmpfilesdir} \ %{buildroot}%{_unitdir} \ %{buildroot}%{og_confdir} \ %{buildroot}%{og_confdir}/nginx \ %{buildroot}%{og_licensedir} \ %{buildroot}%{_sysconfdir}/nginx/conf.d \ %{buildroot}%{_libexecdir}/ollama-grid/ %if %{with cpu} install -d \ %{buildroot}%{_libexecdir}/ollama-grid/cpu \ %{buildroot}%{_libexecdir}/ollama-grid/cpu/bin \ %{buildroot}%{_libexecdir}/ollama-grid/cpu/lib \ %{buildroot}%{_libexecdir}/ollama-grid/cpu/lib/ollama %endif %if %{with vulkan} install -d \ %{buildroot}%{_libexecdir}/ollama-grid/vulkan \ %{buildroot}%{_libexecdir}/ollama-grid/vulkan/bin \ %{buildroot}%{_libexecdir}/ollama-grid/vulkan/lib \ %{buildroot}%{_libexecdir}/ollama-grid/vulkan/lib/ollama %endif %if %{with rocm} && "%{_arch}" == "x86_64" install -d \ %{buildroot}%{_libexecdir}/ollama-grid/rocm \ %{buildroot}%{_libexecdir}/ollama-grid/rocm/bin \ %{buildroot}%{_libexecdir}/ollama-grid/rocm/lib \ %{buildroot}%{_libexecdir}/ollama-grid/rocm/lib/ollama %endif %if %{with cuda13} install -d \ %{buildroot}%{_libexecdir}/ollama-grid/cuda13 \ %{buildroot}%{_libexecdir}/ollama-grid/cuda13/bin \ %{buildroot}%{_libexecdir}/ollama-grid/cuda13/lib \ %{buildroot}%{_libexecdir}/ollama-grid/cuda13/lib/ollama %endif %if %{with cuda12} install -d \ %{buildroot}%{_libexecdir}/ollama-grid/cuda12 \ %{buildroot}%{_libexecdir}/ollama-grid/cuda12/bin \ %{buildroot}%{_libexecdir}/ollama-grid/cuda12/lib \ %{buildroot}%{_libexecdir}/ollama-grid/cuda12/lib/ollama %endif # --- sysusers / tmpfiles (arquivos do repositório) --- install -m 0644 %{bdir}/ollama-grid/sysusers.d/ollama-grid.conf %{buildroot}%{_sysusersdir}/ollama-grid.conf install -m 0644 %{bdir}/ollama-grid/tmpfiles.d/ollama-grid.conf %{buildroot}%{_tmpfilesdir}/ollama-grid.conf install -Dpm644 %{bdir}/ollama-grid/systemd/ollama-grid@.service %{buildroot}%{_unitdir}/ollama-grid@.service install -Dpm644 %{bdir}/ollama-grid/systemd/ollama-grid-balancer.service %{buildroot}%{_unitdir}/ollama-grid-balancer.service # Licença do Ollama upstream; manter arquivo separado facilita auditoria da versão empacotada. install -m 0644 %{bdir}/ollama/LICENSE \ %{buildroot}%{og_licensedir}/LICENSE.ollama # Licença do ollama-grid (MIT) install -m 0644 %{bdir}/ollama-grid/LICENSE \ %{buildroot}%{og_licensedir}/LICENSE.ollama-grid # pais (base package vai "possuir") install -d -m 0755 %{buildroot}%{_localstatedir}/lib/ollama-grid install -d -m 0755 %{buildroot}%{_localstatedir}/log/ollama-grid # CPU %if %{with cpu} install -d -m 0755 %{buildroot}%{_localstatedir}/log/ollama-grid/cpu install -d -m 0755 %{buildroot}%{_localstatedir}/lib/ollama-grid/cpu install -Dpm0640 %{bdir}/ollama-grid/etc/ollama-grid/cpu.conf %{buildroot}%{og_confdir}/cpu.conf %endif # Vulkan %if %{with vulkan} install -d -m 0755 %{buildroot}%{_localstatedir}/log/ollama-grid/vulkan install -d -m 0755 %{buildroot}%{_localstatedir}/lib/ollama-grid/vulkan install -Dpm0640 %{bdir}/ollama-grid/etc/ollama-grid/vulkan.conf %{buildroot}%{og_confdir}/vulkan.conf %endif # ROCm %if %{with rocm} && "%{_arch}" == "x86_64" install -d -m 0755 %{buildroot}%{_localstatedir}/log/ollama-grid/rocm install -d -m 0755 %{buildroot}%{_localstatedir}/lib/ollama-grid/rocm install -Dpm0640 %{bdir}/ollama-grid/etc/ollama-grid/rocm.conf %{buildroot}%{og_confdir}/rocm.conf %endif # CUDA (atual) %if %{with cuda13} install -d -m 0755 %{buildroot}%{_localstatedir}/log/ollama-grid/cuda13 install -d -m 0755 %{buildroot}%{_localstatedir}/lib/ollama-grid/cuda13 install -Dpm0640 %{bdir}/ollama-grid/etc/ollama-grid/cuda13.conf %{buildroot}%{og_confdir}/cuda13.conf %endif # CUDA 12.9 (legacy) %if %{with cuda12} install -d -m 0755 %{buildroot}%{_localstatedir}/log/ollama-grid/cuda12 install -d -m 0755 %{buildroot}%{_localstatedir}/lib/ollama-grid/cuda12 install -Dpm0640 %{bdir}/ollama-grid/etc/ollama-grid/cuda12.conf %{buildroot}%{og_confdir}/cuda12.conf %endif # ============================ # BINÁRIOS (um por backend) # ============================ # --- utilitário para limpar RPATH/RUNPATH (ignora se patchelf não existir) --- fix_rpath() { command -v patchelf >/dev/null 2>&1 && patchelf --remove-rpath "$1" || :; } # CPU — publica como /usr/bin/ollama-grid-cpu %if %{with cpu} install -m 0755 %{bdir}/build-cpu/ollama-grid-cpu %{buildroot}%{_libexecdir}/ollama-grid/cpu/bin/ollama-grid-cpu ln -sr %{_libexecdir}/ollama-grid/cpu/bin/ollama-grid-cpu %{buildroot}%{_bindir}/ollama-grid-cpu %endif # Vulkan %if %{with vulkan} install -m 0755 %{bdir}/build-vulkan/ollama-grid-vulkan %{buildroot}%{_libexecdir}/ollama-grid/vulkan/bin/ollama-grid-vulkan ln -sr %{_libexecdir}/ollama-grid/vulkan/bin/ollama-grid-vulkan %{buildroot}%{_bindir}/ollama-grid-vulkan %endif # ROCm %if %{with rocm} && "%{_arch}" == "x86_64" install -m 0755 %{bdir}/build-rocm/ollama-grid-rocm %{buildroot}%{_libexecdir}/ollama-grid/rocm/bin/ollama-grid-rocm ln -sr %{_libexecdir}/ollama-grid/rocm/bin/ollama-grid-rocm %{buildroot}%{_bindir}/ollama-grid-rocm %endif # CUDA (atual) %if %{with cuda13} install -m 0755 %{bdir}/build-cuda13/ollama-grid-cuda13 %{buildroot}%{_libexecdir}/ollama-grid/cuda13/bin/ollama-grid-cuda13 ln -sr %{_libexecdir}/ollama-grid/cuda13/bin/ollama-grid-cuda13 %{buildroot}%{_bindir}/ollama-grid-cuda13 %endif # CUDA 12.9 (legacy) %if %{with cuda12} install -m 0755 %{bdir}/build-cuda12/ollama-grid-cuda12 %{buildroot}%{_libexecdir}/ollama-grid/cuda12/bin/ollama-grid-cuda12 ln -sr %{_libexecdir}/ollama-grid/cuda12/bin/ollama-grid-cuda12 %{buildroot}%{_bindir}/ollama-grid-cuda12 %endif # ============================ # BIBLIOTECAS (instaladas por backend) # ============================ # CPU %if %{with cpu} # Bibliotecas comuns install -m 0644 \ %{bdir}/build-cpu/lib/ollama/*.so* \ %{buildroot}%{_libexecdir}/ollama-grid/cpu/lib/ollama/ # Executáveis auxiliares do runtime install -m 0755 \ %{bdir}/build-cpu/lib/ollama/llama-server \ %{buildroot}%{_libexecdir}/ollama-grid/cpu/lib/ollama/ install -m 0755 \ %{bdir}/build-cpu/lib/ollama/llama-quantize \ %{buildroot}%{_libexecdir}/ollama-grid/cpu/lib/ollama/ # Remove RPATH/RUNPATH somente das bibliotecas for f in %{buildroot}%{_libexecdir}/ollama-grid/cpu/lib/ollama/*.so*; do [ -e "$f" ] || continue fix_rpath "$f" done %endif # Vulkan %if %{with vulkan} # Bibliotecas comuns install -m 0644 \ %{bdir}/build-vulkan/lib/ollama/*.so* \ %{buildroot}%{_libexecdir}/ollama-grid/vulkan/lib/ollama/ # Executáveis auxiliares do runtime install -m 0755 \ %{bdir}/build-vulkan/lib/ollama/llama-server \ %{buildroot}%{_libexecdir}/ollama-grid/vulkan/lib/ollama/ install -m 0755 \ %{bdir}/build-vulkan/lib/ollama/llama-quantize \ %{buildroot}%{_libexecdir}/ollama-grid/vulkan/lib/ollama/ # Backend Vulkan específico install -d \ %{buildroot}%{_libexecdir}/ollama-grid/vulkan/lib/ollama/vulkan install -m 0644 \ %{bdir}/build-vulkan/lib/ollama/vulkan/*.so* \ %{buildroot}%{_libexecdir}/ollama-grid/vulkan/lib/ollama/vulkan/ # Remove RPATH/RUNPATH das bibliotecas comuns for f in %{buildroot}%{_libexecdir}/ollama-grid/vulkan/lib/ollama/*.so*; do [ -e "$f" ] || continue fix_rpath "$f" done # Remove RPATH/RUNPATH das bibliotecas Vulkan for f in %{buildroot}%{_libexecdir}/ollama-grid/vulkan/lib/ollama/vulkan/*.so*; do [ -e "$f" ] || continue fix_rpath "$f" done %endif # ROCm %if %{with rocm} && "%{_arch}" == "x86_64" # Bibliotecas comuns install -m 0644 \ %{bdir}/build-rocm/lib/ollama/*.so* \ %{buildroot}%{_libexecdir}/ollama-grid/rocm/lib/ollama/ # Executáveis auxiliares do runtime install -m 0755 \ %{bdir}/build-rocm/lib/ollama/llama-server \ %{buildroot}%{_libexecdir}/ollama-grid/rocm/lib/ollama/ install -m 0755 \ %{bdir}/build-rocm/lib/ollama/llama-quantize \ %{buildroot}%{_libexecdir}/ollama-grid/rocm/lib/ollama/ # Backend ROCm específico install -d \ %{buildroot}%{_libexecdir}/ollama-grid/rocm/lib/ollama/%{rocm_backend} install -m 0644 \ %{bdir}/build-rocm/lib/ollama/%{rocm_backend}/*.so* \ %{buildroot}%{_libexecdir}/ollama-grid/rocm/lib/ollama/%{rocm_backend}/ # Remove RPATH/RUNPATH das bibliotecas comuns for f in %{buildroot}%{_libexecdir}/ollama-grid/rocm/lib/ollama/*.so*; do [ -e "$f" ] || continue fix_rpath "$f" done # Remove RPATH/RUNPATH das bibliotecas ROCm for f in %{buildroot}%{_libexecdir}/ollama-grid/rocm/lib/ollama/%{rocm_backend}/*.so*; do [ -e "$f" ] || continue fix_rpath "$f" done %endif # CUDA (atual) %if %{with cuda13} # Bibliotecas comuns install -m 0644 \ %{bdir}/build-cuda13/lib/ollama/*.so* \ %{buildroot}%{_libexecdir}/ollama-grid/cuda13/lib/ollama/ # Executáveis auxiliares do runtime install -m 0755 \ %{bdir}/build-cuda13/lib/ollama/llama-server \ %{buildroot}%{_libexecdir}/ollama-grid/cuda13/lib/ollama/ install -m 0755 \ %{bdir}/build-cuda13/lib/ollama/llama-quantize \ %{buildroot}%{_libexecdir}/ollama-grid/cuda13/lib/ollama/ # Backend CUDA 13 específico install -d \ %{buildroot}%{_libexecdir}/ollama-grid/cuda13/lib/ollama/cuda_v13 install -m 0644 \ %{bdir}/build-cuda13/lib/ollama/cuda_v13/libggml-cuda.so \ %{buildroot}%{_libexecdir}/ollama-grid/cuda13/lib/ollama/cuda_v13/ # Remove RPATH/RUNPATH das bibliotecas comuns for f in %{buildroot}%{_libexecdir}/ollama-grid/cuda13/lib/ollama/*.so*; do [ -e "$f" ] || continue fix_rpath "$f" done # Remove RPATH/RUNPATH das bibliotecas CUDA fix_rpath \ %{buildroot}%{_libexecdir}/ollama-grid/cuda13/lib/ollama/cuda_v13/libggml-cuda.so %endif # CUDA 12.9 (legacy) %if %{with cuda12} # Bibliotecas comuns install -m 0644 \ %{bdir}/build-cuda12/lib/ollama/*.so* \ %{buildroot}%{_libexecdir}/ollama-grid/cuda12/lib/ollama/ # Executáveis auxiliares do runtime install -m 0755 \ %{bdir}/build-cuda12/lib/ollama/llama-server \ %{buildroot}%{_libexecdir}/ollama-grid/cuda12/lib/ollama/ install -m 0755 \ %{bdir}/build-cuda12/lib/ollama/llama-quantize \ %{buildroot}%{_libexecdir}/ollama-grid/cuda12/lib/ollama/ # Backend CUDA 12 específico install -d \ %{buildroot}%{_libexecdir}/ollama-grid/cuda12/lib/ollama/cuda_v12 install -m 0644 \ %{bdir}/build-cuda12/lib/ollama/cuda_v12/libggml-cuda.so \ %{buildroot}%{_libexecdir}/ollama-grid/cuda12/lib/ollama/cuda_v12/ # Remove RPATH/RUNPATH das bibliotecas comuns for f in %{buildroot}%{_libexecdir}/ollama-grid/cuda12/lib/ollama/*.so*; do [ -e "$f" ] || continue fix_rpath "$f" done # Remove RPATH/RUNPATH das bibliotecas CUDA 12 fix_rpath \ %{buildroot}%{_libexecdir}/ollama-grid/cuda12/lib/ollama/cuda_v12/libggml-cuda.so %endif # ============================ # NGINX (balanceador) # ============================ install -m 0644 %{bdir}/ollama-grid/nginx/ollama-grid.conf \ %{buildroot}%{_sysconfdir}/nginx/conf.d/ollama-grid.conf install -m 0644 %{bdir}/ollama-grid/nginx/ollama-grid-write-policy.conf \ %{buildroot}%{og_confdir}/nginx/write-policy.conf # proprietary guard %if %{with cuda13} || %{with cuda12} if find %{buildroot} -type f \( \ -name 'libcudart.so*' -o \ -name 'libcublas.so*' -o \ -name 'libcublasLt.so*' -o \ -name 'libcusparse.so*' -o \ -name 'libcusolver.so*' -o \ -name 'libcurand.so*' -o \ -name 'libcufft.so*' -o \ -name 'libnvrtc.so*' \ \) -print | grep -q .; then echo "ERROR: NVIDIA CUDA runtime library found in buildroot" exit 1 fi %endif # ==================== Files ==================== # ============================ # Subpacote: COMMON # ============================ %files -n ollama-grid-common %dir %{og_licensedir} %license %{og_licensedir}/LICENSE.ollama %license %{og_licensedir}/LICENSE.ollama-grid %dir %{_libexecdir}/ollama-grid %dir %attr(0755,ollama-grid,ollama-grid) %{_localstatedir}/lib/ollama-grid %dir %attr(0755,ollama-grid,ollama-grid) %{_localstatedir}/log/ollama-grid %dir %{og_confdir} # sysusers / tmpfiles %config(noreplace) %{_sysusersdir}/ollama-grid.conf %config(noreplace) %{_tmpfilesdir}/ollama-grid.conf %{_unitdir}/ollama-grid@.service # ============================ # Subpacote: BALANCER (Nginx) # ============================ %files -n ollama-grid-balancer # arquivo de configuração do Nginx %config(noreplace) %{_sysconfdir}/nginx/conf.d/ollama-grid.conf %{_unitdir}/ollama-grid-balancer.service %dir %{og_confdir}/nginx %config(noreplace) %{og_confdir}/nginx/write-policy.conf # ============================ # Subpacote: CPU # ============================ %if %{with cpu} %files -n ollama-grid-cpu # binário %{_bindir}/ollama-grid-cpu %{_libexecdir}/ollama-grid/cpu/bin/ollama-grid-cpu %config(noreplace) %attr(0640,root,ollama-grid) /etc/ollama-grid/cpu.conf # libs do backend %dir %{_libexecdir}/ollama-grid/cpu %dir %{_libexecdir}/ollama-grid/cpu/bin %dir %{_libexecdir}/ollama-grid/cpu/lib %dir %{_libexecdir}/ollama-grid/cpu/lib/ollama %{_libexecdir}/ollama-grid/cpu/lib/ollama/*.so* %{_libexecdir}/ollama-grid/cpu/lib/ollama/llama-server %{_libexecdir}/ollama-grid/cpu/lib/ollama/llama-quantize %dir %attr(0755,ollama-grid,ollama-grid) %{_localstatedir}/lib/ollama-grid/cpu %dir %attr(0755,ollama-grid,ollama-grid) %{_localstatedir}/log/ollama-grid/cpu %endif # ============================ # Subpacote: Vulkan # ============================ %if %{with vulkan} %files -n ollama-grid-vulkan # binário do backend %{_bindir}/ollama-grid-vulkan %{_libexecdir}/ollama-grid/vulkan/bin/ollama-grid-vulkan %config(noreplace) %attr(0640,root,ollama-grid) /etc/ollama-grid/vulkan.conf # libs do backend %dir %{_libexecdir}/ollama-grid/vulkan %dir %{_libexecdir}/ollama-grid/vulkan/bin %dir %{_libexecdir}/ollama-grid/vulkan/lib %dir %{_libexecdir}/ollama-grid/vulkan/lib/ollama %{_libexecdir}/ollama-grid/vulkan/lib/ollama/*.so* %{_libexecdir}/ollama-grid/vulkan/lib/ollama/llama-server %{_libexecdir}/ollama-grid/vulkan/lib/ollama/llama-quantize %dir %{_libexecdir}/ollama-grid/vulkan/lib/ollama/vulkan %{_libexecdir}/ollama-grid/vulkan/lib/ollama/vulkan/*.so* %dir %attr(0755,ollama-grid,ollama-grid) %{_localstatedir}/lib/ollama-grid/vulkan %dir %attr(0755,ollama-grid,ollama-grid) %{_localstatedir}/log/ollama-grid/vulkan %endif # ============================ # Subpacote: ROCm # ============================ %if %{with rocm} && "%{_arch}" == "x86_64" %files -n ollama-grid-rocm # binário do backend %{_bindir}/ollama-grid-rocm %{_libexecdir}/ollama-grid/rocm/bin/ollama-grid-rocm %config(noreplace) %attr(0640,root,ollama-grid) /etc/ollama-grid/rocm.conf # libs do backend %dir %{_libexecdir}/ollama-grid/rocm %dir %{_libexecdir}/ollama-grid/rocm/bin %dir %{_libexecdir}/ollama-grid/rocm/lib %dir %{_libexecdir}/ollama-grid/rocm/lib/ollama %{_libexecdir}/ollama-grid/rocm/lib/ollama/*.so* %{_libexecdir}/ollama-grid/rocm/lib/ollama/llama-server %{_libexecdir}/ollama-grid/rocm/lib/ollama/llama-quantize %dir %{_libexecdir}/ollama-grid/rocm/lib/ollama/%{rocm_backend} %{_libexecdir}/ollama-grid/rocm/lib/ollama/%{rocm_backend}/*.so* %dir %attr(0755,ollama-grid,ollama-grid) %{_localstatedir}/lib/ollama-grid/rocm %dir %attr(0755,ollama-grid,ollama-grid) %{_localstatedir}/log/ollama-grid/rocm %endif # ============================ # Subpacote: CUDA13 # ============================ %if %{with cuda13} %files -n ollama-grid-cuda13 # binário do backend %{_bindir}/ollama-grid-cuda13 %{_libexecdir}/ollama-grid/cuda13/bin/ollama-grid-cuda13 %config(noreplace) %attr(0640,root,ollama-grid) /etc/ollama-grid/cuda13.conf # libs do backend %dir %{_libexecdir}/ollama-grid/cuda13 %dir %{_libexecdir}/ollama-grid/cuda13/bin %dir %{_libexecdir}/ollama-grid/cuda13/lib %dir %{_libexecdir}/ollama-grid/cuda13/lib/ollama %{_libexecdir}/ollama-grid/cuda13/lib/ollama/*.so* %{_libexecdir}/ollama-grid/cuda13/lib/ollama/llama-server %{_libexecdir}/ollama-grid/cuda13/lib/ollama/llama-quantize %dir %{_libexecdir}/ollama-grid/cuda13/lib/ollama/cuda_v13 %{_libexecdir}/ollama-grid/cuda13/lib/ollama/cuda_v13/libggml-cuda.so %dir %attr(0755,ollama-grid,ollama-grid) %{_localstatedir}/lib/ollama-grid/cuda13 %dir %attr(0755,ollama-grid,ollama-grid) %{_localstatedir}/log/ollama-grid/cuda13 %endif # ============================ # Subpacote: CUDA 12.9 (legacy) # ============================ %if %{with cuda12} %files -n ollama-grid-cuda12 # binário do backend %{_bindir}/ollama-grid-cuda12 %{_libexecdir}/ollama-grid/cuda12/bin/ollama-grid-cuda12 %config(noreplace) %attr(0640,root,ollama-grid) /etc/ollama-grid/cuda12.conf # libs do backend %dir %{_libexecdir}/ollama-grid/cuda12 %dir %{_libexecdir}/ollama-grid/cuda12/bin %dir %{_libexecdir}/ollama-grid/cuda12/lib %dir %{_libexecdir}/ollama-grid/cuda12/lib/ollama %{_libexecdir}/ollama-grid/cuda12/lib/ollama/*.so* %{_libexecdir}/ollama-grid/cuda12/lib/ollama/llama-server %{_libexecdir}/ollama-grid/cuda12/lib/ollama/llama-quantize %dir %{_libexecdir}/ollama-grid/cuda12/lib/ollama/cuda_v12 %{_libexecdir}/ollama-grid/cuda12/lib/ollama/cuda_v12/libggml-cuda.so %dir %attr(0755,ollama-grid,ollama-grid) %{_localstatedir}/lib/ollama-grid/cuda12 %dir %attr(0755,ollama-grid,ollama-grid) %{_localstatedir}/log/ollama-grid/cuda12 %endif # ---- Common ---- %post -n ollama-grid-common # cria usuário, diretórios persistentes e temporários %sysusers_create_compat %{_sysusersdir}/ollama-grid.conf || : %tmpfiles_create %{_tmpfilesdir}/ollama-grid.conf || : # registra o TEMPLATE no systemd %systemd_post ollama-grid@.service %preun -n ollama-grid-common %systemd_preun ollama-grid@.service %postun -n ollama-grid-common %systemd_postun_with_restart ollama-grid@.service # ---- Balancer ---- %post -n ollama-grid-balancer if [ $1 -eq 1 ] ; then systemctl enable --now ollama-grid-balancer.service >/dev/null 2>&1 || : else systemctl try-restart ollama-grid-balancer.service >/dev/null 2>&1 || : fi %preun -n ollama-grid-balancer if [ $1 -eq 0 ] ; then systemctl disable --now ollama-grid-balancer.service >/dev/null 2>&1 || : fi # ---- CPU ---- %if %{with cpu} %post -n ollama-grid-cpu if [ $1 -eq 1 ] ; then # instalação nova → cria e inicia a instância CPU systemctl enable --now ollama-grid@cpu.service >/dev/null 2>&1 || : else # upgrade → tenta reiniciar a instância se existir systemctl try-restart ollama-grid@cpu.service >/dev/null 2>&1 || : fi %preun -n ollama-grid-cpu if [ $1 -eq 0 ] ; then # remoção → desativa e para a instância systemctl disable --now ollama-grid@cpu.service >/dev/null 2>&1 || : fi %endif # ---- cuda ---- %if %{with cuda13} %post -n ollama-grid-cuda13 if [ $1 -eq 1 ] ; then systemctl enable --now ollama-grid@cuda13.service >/dev/null 2>&1 || : else systemctl try-restart ollama-grid@cuda13.service >/dev/null 2>&1 || : fi %preun -n ollama-grid-cuda13 if [ $1 -eq 0 ] ; then systemctl disable --now ollama-grid@cuda13.service >/dev/null 2>&1 || : fi %endif # ---- cuda-12.9 ---- %if %{with cuda12} %post -n ollama-grid-cuda12 if [ $1 -eq 1 ] ; then systemctl enable --now ollama-grid@cuda12.service >/dev/null 2>&1 || : else systemctl try-restart ollama-grid@cuda12.service >/dev/null 2>&1 || : fi %preun -n ollama-grid-cuda12 if [ $1 -eq 0 ] ; then systemctl disable --now ollama-grid@cuda12.service >/dev/null 2>&1 || : fi %endif # ---- ROCm ---- %if %{with rocm} && "%{_arch}" == "x86_64" %post -n ollama-grid-rocm if [ $1 -eq 1 ] ; then systemctl enable --now ollama-grid@rocm.service >/dev/null 2>&1 || : else systemctl try-restart ollama-grid@rocm.service >/dev/null 2>&1 || : fi %preun -n ollama-grid-rocm if [ $1 -eq 0 ] ; then systemctl disable --now ollama-grid@rocm.service >/dev/null 2>&1 || : fi %endif # ---- Vulkan ---- %if %{with vulkan} %post -n ollama-grid-vulkan if [ $1 -eq 1 ] ; then systemctl enable --now ollama-grid@vulkan.service >/dev/null 2>&1 || : else systemctl try-restart ollama-grid@vulkan.service >/dev/null 2>&1 || : fi %preun -n ollama-grid-vulkan if [ $1 -eq 0 ] ; then systemctl disable --now ollama-grid@vulkan.service >/dev/null 2>&1 || : fi %endif # ==================== Scriptlets ==================== %changelog * Wed Nov 19 2025 Moacyr Prado - 0.12.11-12 - Refatoração do spec para múltiplos backends (CPU/Vulkan/ROCm/cuda13/CUDA-12.9) - Integração com sysusers/tmpfiles e serviços systemd (template + backends + balancer) * Sat Nov 08 2025 OllamaGrid - 0.12.9-1 - Estrutura meta (ollama-grid) + common + backends (vulkan/rocm/cuda13/cuda-12.9) - Source0 = Ollama upstream; Source1 = ollama-grid (scripts/patch/nginx) - CUDA 12.9: patch aplicado por script antes do build e revertido após o build - Instalação explícita das .so conforme caminhos reais dos builds