Group A: source upstream binaries instead of self-built artifacts

The AUR does not allow packages to ship a binary tarball built by the
maintainer - a -bin package must repackage a deliverable published by
upstream. These six packages now do that:

  snapx-bin            upstream's self-contained Linux tar.zst
  zapzap-bin           upstream's pure-Python wheel
  faugus-launcher-bin  upstream's arch-independent .deb
  wiiudownloader-bin   upstream's AppImage
  waydroid-helper-bin  upstream's AppImage
  chiaki-ng-bin        upstream's AppImage

All six drop build_artifact() and switch to refresh_checksums(), so CI no
longer builds or hosts anything - it only tracks upstream's assets.

Where the asset name carries build metadata that does not follow from
pkgver (snapx, faugus-launcher), refresh_checksums() resolves it via the
GitHub API and syncs an _asset variable in the PKGBUILD.

Dependency lists are re-derived from what the bundles actually resolve
outside themselves; the AppImage payloads land in /opt with wrappers in
/usr/bin, because their entry points resolve paths relative to argv[0].
This commit is contained in:
Felitendo committed 2026-07-27 17:40:53 +02:00
1 parent c25c2790e8
commit fa1c190d17
19 files changed
+428 -379

No files matched your search

+22 -42
View File
@@ -1,54 +1,34 @@
# faugus-launcher-bin - prebuilt package of https://github.com/Faugus/faugus-launcher
# (GTK4 game launcher for running Windows games through UMU-Launcher, Python).
# faugus-launcher-bin - Faugus Launcher
# (https://github.com/Faugus/faugus-launcher), a GTK4 front-end for running
# Windows games through UMU-Launcher.
#
# Upstream ships AppImage/deb/rpm but no Arch-friendly binary, so
# build_artifact() builds the meson project from the release tarball.
# Upstream publishes an architecture-independent .deb per release, which the
# PKGBUILD repackages. The Debian revision in the asset name is not derived
# from the version, so refresh_checksums() resolves the asset via the GitHub
# API and syncs the _asset variable in the PKGBUILD along with the checksum.
#
# Upstream tags carry no "v" prefix.
UPSTREAM_REPO="Faugus/faugus-launcher"
# Installed in CI (pacman) before build_artifact runs.
# (Translations ship as prebuilt .mo files, so no gettext needed.)
BUILD_DEPS=(meson ninja python)
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir destdir srctree sitedir
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
# refresh_checksums <version> <pkgbuild-path>
refresh_checksums() {
local ver="$1" pkgbuild="$2"
local asset sha
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/$ver.tar.gz" | tar -xz -C "$workdir"
srctree="$workdir/faugus-launcher-$ver"
asset="$(gh api "repos/$UPSTREAM_REPO/releases/tags/$ver" --jq '.assets[].name' \
| grep -E "^faugus-launcher_${ver}-[0-9]+_all\.deb$")"
[[ "$(wc -l <<< "$asset")" -eq 1 ]] || { echo "expected exactly one deb, got: $asset" >&2; return 1; }
meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release
meson install -C "$workdir/build" --destdir "$destdir"
sha="$(curl -sfL "https://github.com/$UPSTREAM_REPO/releases/download/$ver/$asset" \
| sha256sum | cut -d' ' -f1)"
# meson installs the python modules into site-packages, whose path changes
# with every Python minor bump and would silently break a prebuilt package.
# Relocate to a fixed dir and put it on the launcher's PYTHONPATH (the
# launcher script already appends any pre-set PYTHONPATH to its own).
sitedir="$(find "$destdir/usr/lib" -maxdepth 2 -type d -name site-packages)"
[[ -d "$sitedir/faugus" ]] || { echo "faugus module not found in $sitedir" >&2; return 1; }
mkdir -p "$destdir/usr/lib/faugus-launcher"
mv "$sitedir/faugus" "$destdir/usr/lib/faugus-launcher/"
rm -rf "$destdir/usr/lib/python"*
head -1 "$destdir/usr/bin/faugus-launcher" | grep -qx '#!/bin/sh' \
|| { echo "unexpected launcher script format" >&2; return 1; }
sed -i '1a export PYTHONPATH="/usr/lib/faugus-launcher${PYTHONPATH:+:$PYTHONPATH}"' \
"$destdir/usr/bin/faugus-launcher"
# These caches are generated by pacman hooks; shipping them would cause
# file conflicts on install.
rm -f "$destdir/usr/share/applications/mimeinfo.cache" \
"$destdir/usr/share/icons/hicolor/icon-theme.cache"
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr
rm -rf "$workdir" "$destdir"
sed -i \
-e "s|^_asset=.*|_asset=\"$asset\"|" \
-e "s|^sha256sums=.*|sha256sums=('$sha')|" \
"$pkgbuild"
}