* feat(packaging): build thin .deb and .rpm with nfpm and attach them to releases Adds packaging/native: an nfpm config that produces a .deb and an .rpm from the release wheel. The packages stay thin - Python, GTK, PyGObject and the typelibs are distro Depends; only pywhispercpp and pynput are vendored because the first is unpackaged on both distros and the second is missing on Fedora. The Debian 12 build image and the nfpm download are pinned in tool_checksums.txt. just native-packages builds both in the pinned container, and native-smoke installs the built package per distro: debian:12 and ubuntu:24.04 exercise the .deb, fedora:42 the .rpm, then each runs vocalinux --version plus an import smoke of the app and the vendored extension. unified-pipeline.yml gates on the same three-distro matrix, and release.yml attaches both arches to the release and covers them in SHA256SUMS and the provenance manifest. Refs #600 * fix(packaging): preserve launcher args and document Wayland input group The launcher joined $* into an unquoted exec, re-splitting file paths that contain spaces before argparse saw them. Exec "$@" directly and re-quote each argument for the inner shell of 'sg input -c'. On Wayland the packages could not grant the 'input' group membership evdev hotkeys need; name the usermod step and its caveat in INSTALL.md and the release notes. * test(packaging): add return types to the native packaging tests --------- Co-authored-by: Jatin K Malik <jatinkrmalik@gmail.com>
27 lines
1.2 KiB
Bash
Executable File
27 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Run the native package build inside the pinned Debian 12 image.
|
|
#
|
|
# Usage: docker-build.sh <path-to-wheel> <version> [output-dir]
|
|
#
|
|
# This is what CI calls and what you should call locally, so that what you
|
|
# get is what CI gets: the base image pins the pip that resolves the vendored
|
|
# wheels, and building on the host instead means shipping whatever that host
|
|
# happens to run. Debian 12 is old enough that its pip accepts every manylinux
|
|
# tag in the pinned wheels.
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT="$(cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")/../.." && pwd)"
|
|
IMAGE="$(awk '$1=="base-image" {print $3}' "$REPO_ROOT/packaging/native/tool_checksums.txt")"
|
|
if [ -z "$IMAGE" ]; then
|
|
echo "No base-image pin in packaging/native/tool_checksums.txt" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# The wheel and output dir are given as host paths; the repo is mounted at
|
|
# the same place it lives, so relative arguments keep working inside. The
|
|
# container needs python3, pip, curl and tar — install-build-tools.sh adds
|
|
# them before handing off to build.sh.
|
|
exec docker run --rm \
|
|
-v "$REPO_ROOT:$REPO_ROOT" -w "$REPO_ROOT" \
|
|
"$IMAGE" bash packaging/native/container-build.sh "$@"
|