feat(void): add package smoke gate across all templates
Ticket xavierk/voculinux#28, needs #27. One documented command (packaging/void/smoke.sh, just void-smoke) lints, builds, installs and smoke-tests every template under packaging/void/srcpkgs in dependency order in the pinned Void container via podman, failing fast naming the package with the harness echoing each stage. The gate caught three latent breaks in the per-package harness and the app template, fixed here: - container-main.sh scoped the libggml scan to python3-pywhispercpp and gave the leaf packages their own import smokes (pynput by presence: no display in the container), failing loudly for packages without a smoke recipe; - voculinux template drops the deprecated wrksrc override (xbps-src renames the single-top-dir archive itself; xlint rejects wrksrc) and builds the PEP 517 wheel (the sdist ships no setup.py); - post_install promotes the pre-rename sdist names (desktop entry content, icons, /usr/bin launchers) to the renamed identity, and the payload smoke rejects pre-rename leftovers in OS-visible paths. Offline policy tests (tests/test_void_smoke_gate.py) pin the gate to the template set, the app-last order, podman-only pinned inputs and per-package failure identity; the #27 policy tests and the rename sweep cover the harness and template contracts.
This commit is contained in:
@@ -2,7 +2,9 @@
|
||||
pkgname=voculinux
|
||||
version=0.18.5
|
||||
revision=1
|
||||
build_style=python3-module
|
||||
# The release sdist ships no setup.py (setuptools pyproject-only), so the
|
||||
# build goes through the PEP 517 wheel (cf. Solaar, PhotoCollage).
|
||||
build_style=python3-pep517
|
||||
hostmakedepends="python3-setuptools"
|
||||
makedepends="python3-devel"
|
||||
depends="python3 python3-gobject python3-cairo gtk+3 libayatana-appindicator ibus gobject-introspection python3-numpy python3-requests python3-pysocks python3-psutil python3-evdev python3-xlib python3-tqdm python3-platformdirs python3-PyAudio python3-pynput python3-pywhispercpp"
|
||||
@@ -12,21 +14,34 @@ license="AGPL-3.0-only"
|
||||
homepage="https://github.com/VocaHQ/vocalinux"
|
||||
distfiles="https://github.com/VocaHQ/vocalinux/releases/download/v${version}/vocalinux-${version}.tar.gz"
|
||||
checksum=1def4d8f0f14f2df2f2fee64ca29e6865e3d82e551f7d465c2a78ec6d4d72b1d
|
||||
# The 0.18.5 release asset still carries the pre-rename archive root, so
|
||||
# build under that directory. The first release cut after the rename ships
|
||||
# the archive under the new name; that bump drops this override and points
|
||||
# distfiles at the renamed asset with its published digest.
|
||||
wrksrc="vocalinux-${version}"
|
||||
# The 0.18.5 release asset still carries the pre-rename archive root.
|
||||
# xbps-src moves a single-top-dir archive to pkgname-version itself, so no
|
||||
# wrksrc override is needed (wrksrc is deprecated and xlint rejects it).
|
||||
# The first release cut after the rename ships the archive under the new
|
||||
# name; that bump points distfiles at the renamed asset with its digest.
|
||||
|
||||
post_install() {
|
||||
# Entry points land on PATH through the module build; install the
|
||||
# renamed desktop entry, the full icon set, and the marker the app
|
||||
# reads to present package-manager updates (see INSTALL.msg).
|
||||
# The 0.18.5 sdist predates the rename: the entry and icons still
|
||||
# carry the old names. Promote them at install time — the entry lands
|
||||
# as voculinux.desktop with rewritten Name/Exec/Icon, old-prefixed
|
||||
# icons land renamed (vinstall takes the installed name, as vman
|
||||
# uses it). The first release cut after the rename ships the new
|
||||
# names; that bump drops the renames. Entry points land on PATH
|
||||
# through the wheel build; the marker is what the app reads to
|
||||
# present package-manager updates (see INSTALL.msg).
|
||||
vlicense LICENSE
|
||||
sed -e 's/vocalinux/voculinux/g' -e 's/Vocalinux/Voculinux/g' \
|
||||
vocalinux.desktop > voculinux.desktop
|
||||
vinstall voculinux.desktop 644 usr/share/applications
|
||||
for icon in resources/icons/scalable/*.svg; do
|
||||
vinstall "$icon" 644 usr/share/icons/hicolor/scalable/apps
|
||||
vinstall "$icon" 644 usr/share/icons/hicolor/scalable/apps \
|
||||
"$(basename "$icon" | sed 's/^vocalinux/voculinux/')"
|
||||
done
|
||||
# The wheel's entry points still carry the old names: promote the
|
||||
# launchers (this runs before the provides hooks, so cmd:voculinux
|
||||
# is what the package provides).
|
||||
mv "${DESTDIR}/usr/bin/vocalinux" "${DESTDIR}/usr/bin/voculinux"
|
||||
mv "${DESTDIR}/usr/bin/vocalinux-gui" "${DESTDIR}/usr/bin/voculinux-gui"
|
||||
vmkdir usr/share/voculinux
|
||||
touch "${DESTDIR}/usr/share/voculinux/packaged"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user