The signed Void release depended on a fork sdist attached to the release before the tag existed, and the app template carried a PENDING checksum that had to be filled by hand. Every release is now built from its tag alone: - packaging/void/build-release.sh is the one release path. The Gitea workflow, the local dry run and the smoke gate all call it. - The canonical reproducible sdist is built from the tag with scripts/build_reproducible_wheel.py (Python 3.11, pinned uv). - render-voculinux.sh pins version, _tag and checksum in the container's build tree only, and places the sdist where xbps-src resolves its distfile. The committed template keeps a zero placeholder until the post-release checksum pull request. - xbps version is __version__ with the hyphen removed (0.19.0-beta becomes 0.19.0beta), which xbps sorts below the final release. - Builds run without the key; signing runs with the key mounted read-only and no network; the install smoke runs in a clean image without the key. - The workflow gates the tag and the key before any container starts, writes the key to a 0600 tmpfs file, and publishes only the staged set (sdist, packages, signatures, repodata, client key). - smoke.sh runs the same pipeline with a throwaway key.
25 lines
949 B
Bash
Executable File
25 lines
949 B
Bash
Executable File
#!/bin/sh
|
|
# Smoke gate for all Void templates (ticket #28): one command builds every
|
|
# template in dependency order, signs the result with a throwaway key, installs
|
|
# voculinux from that repository in a clean Void image and smokes it. The gate
|
|
# runs the same code path as a release (packaging/void/build-release.sh), so a
|
|
# gate that passes is a release that would build.
|
|
#
|
|
# Usage: packaging/void/smoke.sh
|
|
# or: just void-smoke
|
|
#
|
|
# Podman only, never Docker. Nothing is published, and the release key is not
|
|
# used. Needs the same tools as a release: podman, openssl, git, python3.11,
|
|
# and uv 0.12.x or 0.13.x (see packaging/void/README.md).
|
|
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.
|
|
PKGS="python3-PyAudio python3-pynput python3-pywhispercpp voculinux"
|
|
|
|
exec "$HERE/build-release.sh" smoke
|