diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml index d615125..ea64d47 100644 --- a/.forgejo/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -83,12 +83,27 @@ jobs: # host. We add arm64 as a foreign architecture and pull # them in. --no-install-recommends keeps the install # surface minimal. - dpkg --add-architecture arm64 + set -e + dpkg --add-architecture arm64 || { echo "::error::dpkg --add-architecture arm64 failed"; exit 1; } apt-get update + # Verify each arm64 package is actually installable. Bail + # early with a clear message if any are missing from the + # configured apt sources — silent apt-get install + # failures are the worst kind of workflow bug. + for pkg in libc6:arm64 libstdc++6:arm64 \ + libfontconfig1:arm64 libfreetype6:arm64 \ + libgtk-3-0:arm64; do + if ! apt-cache show "$pkg" >/dev/null 2>&1; then + echo "::error::arm64 package '$pkg' is not available in apt sources" + exit 1 + fi + done apt-get install -y --no-install-recommends \ libc6:arm64 libstdc++6:arm64 \ libfontconfig1:arm64 libfreetype6:arm64 \ - libgtk-3-0:arm64 + libgtk-3-0:arm64 || { echo "::error::Failed to install arm64 shlibs"; exit 1; } + # Sanity-check: the libs must be visible to dpkg-shlibdeps. + dpkg -l libc6:arm64 libstdc++6:arm64 | tail -3 rm -rf /var/lib/apt/lists/* : > "$STATE_FILE"