diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml index 6f357ba..d280912 100644 --- a/.forgejo/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -74,24 +74,26 @@ jobs: # via `convert`, librsvg2-bin pour le SVG). run: | apt-get update - # crossbuild-essential-arm64 is the official Debian - # meta-package for arm64 cross-compilation. It pulls - # in gcc-aarch64-linux-gnu, binutils-aarch64-linux-gnu, - # libc6-dev:arm64, linux-libc-dev:arm64, and sets up - # dpkg-cross (CONFIG_SITE under /etc/dpkg-cross/). - # For our package, the key bits are: - # - binutils-aarch64-linux-gnu (provides - # aarch64-linux-gnu-objdump needed by dh_makeshlibs) - # - libc6-dev:arm64 and friends (so dpkg-shlibdeps can - # resolve the arm64 binaries' NEEDED entries against - # the cross-arch shlibs cache installed on the host). - # The arm64 gcc isn't strictly needed (we have no C - # code to compile — only dotnet publish), but it doesn't - # hurt and keeps the environment consistent for any - # future C-coded debhelper rules. + # Cross-build deps for arm64: + # 1. dpkg --add-architecture arm64 + apt-get update — make + # apt aware of arm64 packages. + # 2. Install the arm64 RUNTIME libs (libc6:arm64, etc.) + # so dpkg-shlibdeps can resolve the .so dependencies + # of the arm64 binaries via the on-host shlibs cache. + # The runtime libs (not -dev:arm64) is what carries + # the SONAME metadata that dpkg-shlibdeps matches. + # 3. crossbuild-essential-arm64 pulls gcc/binutils for + # arm64, plus dpkg-cross CONFIG_SITE files under + # /etc/dpkg-cross/. The cross-gcc is unused for our + # dotnet-only build but harmless. + dpkg --add-architecture arm64 + apt-get update apt-get install -y --no-install-recommends \ build-essential debhelper imagemagick librsvg2-bin \ - ca-certificates crossbuild-essential-arm64 + ca-certificates crossbuild-essential-arm64 \ + libc6:arm64 libstdc++6:arm64 \ + libfontconfig1:arm64 libfreetype6:arm64 \ + libgtk-3-0:arm64 rm -rf /var/lib/apt/lists/* : > "$STATE_FILE"