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.
36 lines
1.3 KiB
Bash
Executable File
36 lines
1.3 KiB
Bash
Executable File
#!/bin/sh
|
|
# Smoke gate for all Void templates (ticket #28): lint, build, install
|
|
# and version/import smoke for every template, one command, from a clean
|
|
# checkout. Runs under podman, never Docker; no host Void install needed.
|
|
#
|
|
# Usage: packaging/void/smoke.sh
|
|
# or: just void-smoke
|
|
#
|
|
# Builds every template under packaging/void/srcpkgs in dependency order
|
|
# (leaves first, the app last — it resolves the others from the local
|
|
# repository at install time) by delegating each package to build.sh,
|
|
# which runs xlint, xbps-src, install and the payload/version/import
|
|
# smoke in the pinned Void container. Fails fast naming the package; the
|
|
# harness echoes each stage, so the output shows which package broke at
|
|
# which stage.
|
|
set -eu
|
|
|
|
CDPATH=""
|
|
HERE=$(dirname -- "$0")
|
|
HERE=$(cd -- "$HERE" && pwd)
|
|
|
|
# Dependency order: the app last. tests/test_void_smoke_gate.py fails if
|
|
# this list drifts from packaging/void/srcpkgs or the app moves earlier.
|
|
PKGS="python3-PyAudio python3-pynput python3-pywhispercpp voculinux"
|
|
|
|
for PKG in $PKGS; do
|
|
echo "== smoke $PKG"
|
|
"$HERE/build.sh" "$PKG" || {
|
|
echo "FAIL: $PKG (see the stage above: xlint, xbps-src, install, payload/version/import smoke)" >&2
|
|
exit 1
|
|
}
|
|
echo "OK: $PKG linted, built, installed and smoked"
|
|
done
|
|
|
|
echo "SMOKE GATE PASSED: $PKGS"
|