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

+19 -35
View File
@@ -1,52 +1,36 @@
# snapx-bin - SnapX (https://github.com/SnapXL/SnapX), screenshot/sharing
# tool forked from ShareX, C#/.NET Avalonia UI.
#
# Upstream ships a self-contained Linux bundle per (pre)release, but the
# asset names embed build metadata (e.g. ...-0.4.0-alpha.0+g7eafb0f-X64...)
# that cannot be derived from the version alone. build_artifact() therefore
# resolves the asset by pattern via the GitHub API and repackages it under
# our own predictable name. All upstream releases are marked prerelease, so
# latest_version() reads the release list instead of /latest.
# Upstream ships a self-contained Linux bundle per (pre)release which the
# PKGBUILD installs unchanged. The asset names embed build metadata
# (e.g. ...-0.4.0-alpha.0+g7eafb0f-X64...) that cannot be derived from the
# version alone, so refresh_checksums() resolves the asset via the GitHub API
# and syncs the _asset variable in the PKGBUILD along with the checksums.
# All upstream releases are marked prerelease, so latest_version() reads the
# release list instead of /latest.
UPSTREAM_REPO="SnapXL/SnapX"
BUILD_DEPS=()
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases" --jq '.[0].tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir destdir asset
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
# refresh_checksums <version> <pkgbuild-path>
refresh_checksums() {
local ver="$1" pkgbuild="$2"
local asset sha_bin sha_src
asset="$(gh api "repos/$UPSTREAM_REPO/releases/tags/v$ver" --jq '.assets[].name' \
| grep '^SnapX-UI-Release-Linux-' | grep -v musl | grep -- '-X64\.tar\.zst$')"
[[ "$(wc -l <<< "$asset")" -eq 1 ]] || { echo "expected exactly one UI asset, got: $asset" >&2; return 1; }
gh release download "v$ver" -R "$UPSTREAM_REPO" --pattern "$asset" --dir "$workdir"
mkdir -p "$destdir/opt/snapx"
tar -xf "$workdir/$asset" -C "$destdir/opt/snapx"
chmod 755 "$destdir/opt/snapx/snapx-ui"
sha_bin="$(curl -sfL "https://github.com/$UPSTREAM_REPO/releases/download/v$ver/$asset" \
| sha256sum | cut -d' ' -f1)"
sha_src="$(curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/v$ver.tar.gz" \
| sha256sum | cut -d' ' -f1)"
# upstream's launcher resolves its own directory, so a symlink from
# /usr/bin would break it - use a wrapper instead
mkdir -p "$destdir/usr/bin"
cat > "$destdir/usr/bin/snapx-ui" << 'EOF'
#!/bin/sh
exec /opt/snapx/snapx-ui "$@"
EOF
chmod 755 "$destdir/usr/bin/snapx-ui"
# desktop file, icons and metainfo from the source tree
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/v$ver.tar.gz" | tar -xz -C "$workdir"
cp -a "$workdir/SnapX-$ver/packaging/usr/share" "$destdir/usr/"
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr opt
rm -rf "$workdir" "$destdir"
sed -i \
-e "s|^_asset=.*|_asset=\"$asset\"|" \
-e "s|^sha256sums=.*|sha256sums=('$sha_bin' '$sha_src')|" \
"$pkgbuild"
}