# Template file for 'python3-pywhispercpp' pkgname=python3-pywhispercpp version=1.5.0 revision=1 build_style=python3-module hostmakedepends="cmake pkg-config python3-setuptools python3-setuptools_scm python3-wheel $(vopt_if vulkan shaderc)" makedepends="python3-devel $(vopt_if vulkan vulkan-loader-devel)" depends="python3-numpy python3-requests python3-tqdm python3-platformdirs $(vopt_if vulkan vulkan-loader)" short_desc="Python bindings for whisper.cpp speech recognition" maintainer="Orphaned " license="MIT" homepage="https://github.com/absadiki/pywhispercpp" distfiles="${PYPI_SITE}/p/pywhispercpp/pywhispercpp-${version}.tar.gz" checksum=5aa54c73ec96617d97aa519dbbf817e44255eddd9bd52ee1243be61028dbd018 # The sdist ships no test suite, so there is nothing to check. make_check=no # Package build options build_options="vulkan" build_options_default="vulkan" pre_build() { # Version (#43). setup.py passes no version to setup(); the version comes # from setuptools-scm, which the sdist declares as a build requirement and # which hostmakedepends provides. The xbps build root has no git metadata, # so pin the version through setuptools-scm. Without it setuptools falls # back to 0.0.0. The sdist's PYWHISPERCPP_VERSION hook is never called. export SETUPTOOLS_SCM_PRETEND_VERSION=${version} # CPU (#44). GGML_BACKEND_DL builds each CPU variant (x64 baseline, # sandybridge, haswell, icelake, zen4, ...) as its own library. The # extension, through patches/, loads the variants that sit beside it, and # ggml picks the best one the host CPU supports. The x64 baseline always # ships, so the package still runs on any x86-64 CPU, and hosts with AVX2 # use it. GGML_NATIVE must stay OFF: ggml refuses it with GGML_BACKEND_DL, # and it keeps -march=native out of every variant (#938). # Shared libraries with an $ORIGIN rpath let each variant resolve # libggml-base beside it, with no LD_LIBRARY_PATH at runtime. (setup.py # install never builds a wheel, so NO_REPAIR is meaningless here.) export CMAKE_ARGS='-DCMAKE_INSTALL_RPATH=$ORIGIN -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DBUILD_SHARED_LIBS=ON -DGGML_NATIVE=OFF -DGGML_BACKEND_DL=ON -DGGML_CPU_ALL_VARIANTS=ON' if [ -n "$build_option_vulkan" ]; then # Vulkan acceleration for every GPU vendor. There is no CUDA # build: Void ships no CUDA toolkit package. export GGML_VULKAN=1 fi } pre_install() { # The backend modules (libggml-cpu-*.so, libggml-vulkan.so) are written to # build/bin, a CMake directory whose whisper.cpp setup fixes, and setup.py # installs only the build/lib tree that holds the extension. Copy them # beside the extension, where patches/ loads them from. local backend found="" for backend in build/temp.*/_pywhispercpp/bin/libggml-*.so; do [ -f "$backend" ] || continue cp "$backend" build/lib.*/ found=1 done [ -n "$found" ] || msg_error "no ggml backend modules were built; the CPU variants are missing\n" } post_install() { vlicense LICENSE }