Fixes two defects found in the hardware acceptance run (#19, #32).
#43: the Void python3-pywhispercpp package reported version 0.0.0. The sdist takes its version from setuptools-scm, and the xbps build root has no git metadata. The template now sets SETUPTOOLS_SCM_PRETEND_VERSION and adds python3-setuptools_scm to hostmakedepends. The app also treats 0.0.0 as unknown rather than old, so a GPU device selection is not refused because of a missing version.
#44: the CPU backend was a single portable build without AVX, FMA or F16C (CPU RTF about 1.7). The template now builds with GGML_BACKEND_DL=ON and GGML_CPU_ALL_VARIANTS=ON. A small patch makes the extension load the backend libraries from its own directory, and ggml picks the best variant the host supports. The x64 baseline variant always ships, so the package still runs on any x86-64 CPU. The app's preloader no longer preloads the CPU variants, because they export the same symbols.
Verification
Full container release build from this branch (build-release.sh release v0.18.5), exit 0.
Install smoke in a clean container:
pywhispercpp reports 1.5.0;
CPU variants are present;
the baseline and the other libraries are free of AVX;
libggml-cpu-haswell.so is loaded on this host;
stock PyAudio and pysocks are upgraded to the carried versions.
Unit tests for the template, the loader and the version parsing.
Vulkan loading on real hardware is verified after merge by reinstalling the package on the acceptance machine.
## Description
Fixes two defects found in the hardware acceptance run (#19, #32).
- **#43:** the Void `python3-pywhispercpp` package reported version 0.0.0. The sdist takes its version from setuptools-scm, and the xbps build root has no git metadata. The template now sets `SETUPTOOLS_SCM_PRETEND_VERSION` and adds `python3-setuptools_scm` to hostmakedepends. The app also treats 0.0.0 as unknown rather than old, so a GPU device selection is not refused because of a missing version.
- **#44:** the CPU backend was a single portable build without AVX, FMA or F16C (CPU RTF about 1.7). The template now builds with `GGML_BACKEND_DL=ON` and `GGML_CPU_ALL_VARIANTS=ON`. A small patch makes the extension load the backend libraries from its own directory, and ggml picks the best variant the host supports. The x64 baseline variant always ships, so the package still runs on any x86-64 CPU. The app's preloader no longer preloads the CPU variants, because they export the same symbols.
## Verification
- Full container release build from this branch (`build-release.sh release v0.18.5`), exit 0.
- Install smoke in a clean container:
- pywhispercpp reports 1.5.0;
- CPU variants are present;
- the baseline and the other libraries are free of AVX;
- `libggml-cpu-haswell.so` is loaded on this host;
- stock PyAudio and pysocks are upgraded to the carried versions.
- Unit tests for the template, the loader and the version parsing.
Vulkan loading on real hardware is verified after merge by reinstalling the package on the acceptance machine.
Fixes #43
Fixes #44
python3-pywhispercpp was installed as 0.0.0. setup.py passes no version to
setup() and takes it from setuptools-scm, which the Void build did not
install; the template's PYWHISPERCPP_VERSION export is never read. The app
read 0.0.0 as an old binding and skipped GPU device selection. Install
setuptools-scm, pin the version with SETUPTOOLS_SCM_PRETEND_VERSION, and
make the app treat a 0.0.0 distribution as unknown so the runtime feature
probe decides.
The CPU backend was built with every SIMD option off, so the real-time
factor on an AVX2 host was about 1.7. Build with GGML_BACKEND_DL and
GGML_CPU_ALL_VARIANTS instead: one CPU library per instruction-set level,
with the x86-64 baseline always shipped. The binding loads the variants
from its own directory (patches/), and pre_install places them beside the
extension. The app's library preloader skips those variants: they export
identical symbols, so preloading them RTLD_GLOBAL would let one variant
serve every other. The install smoke asserts that the installed package
reports 1.5.0, that the baseline variant holds no AVX code, that the AVX2
variant does, and that the CPU and Vulkan backends load from the package.
Fixes#43Fixes#44
xavierk
merged commit 0c48db5b5e into main2026-11-06 18:51:30 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Description
Fixes two defects found in the hardware acceptance run (#19, #32).
python3-pywhispercpppackage reported version 0.0.0. The sdist takes its version from setuptools-scm, and the xbps build root has no git metadata. The template now setsSETUPTOOLS_SCM_PRETEND_VERSIONand addspython3-setuptools_scmto hostmakedepends. The app also treats 0.0.0 as unknown rather than old, so a GPU device selection is not refused because of a missing version.GGML_BACKEND_DL=ONandGGML_CPU_ALL_VARIANTS=ON. A small patch makes the extension load the backend libraries from its own directory, and ggml picks the best variant the host supports. The x64 baseline variant always ships, so the package still runs on any x86-64 CPU. The app's preloader no longer preloads the CPU variants, because they export the same symbols.Verification
build-release.sh release v0.18.5), exit 0.libggml-cpu-haswell.sois loaded on this host;Vulkan loading on real hardware is verified after merge by reinstalling the package on the acceptance machine.
Fixes #43
Fixes #44