From efddac29420010be228152dadc614bb4c197aeae Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Mon, 17 Aug 2026 18:52:20 +0100 Subject: [PATCH] workflow: install binutils-aarch64-linux-gnu for dh_makeshlibs dh_makeshlibs is invoked by debhelper during cross-builds to produce the .shlibs cache, and it calls arch-specific objdump to read ELF symbols of the bin we're shipping. For arm64 that means aarch64-linux-gnu-objdump, which is provided by binutils-aarch64-linux-gnu (~50 Mo in apt). binutils-aarch64-linux-gnu ships the cross-binutils without the cross-gcc; we don't need gcc-arm64 because there's no C code in this package (the build is pure dotnet publish). --- .forgejo/workflows/release.yml | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml index 8c1ee26..c2d216c 100644 --- a/.forgejo/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -76,18 +76,19 @@ jobs: apt-get update apt-get install -y --no-install-recommends \ build-essential debhelper imagemagick librsvg2-bin \ - ca-certificates - # No arm64 shlibs install needed: \`dotnet publish - # --runtime linux-arm64\` cross-compiles natively on amd64 - # (no arm64 toolchain required), and dpkg-buildpackage - # is invoked with -Pcross so debhelper skips the - # arch-specific helper tools (aarch64-linux-gnu-objdump - # for dh_makeshlibs, etc.) that aren't available on the - # host. dh_shlibdeps works without arm64 libs because - # we don't ship arm64 build dependencies in debian/control - # (the dotnet-sdk-10.0 there is only meaningful for amd64 - # native builds; dpkg-buildpackage -d skips that check - # for arm64 cross). + ca-certificates binutils-aarch64-linux-gnu + # binutils-aarch64-linux-gnu provides aarch64-linux-gnu-objdump, + # which dh_makeshlibs needs to read the ELF symbol table of + # the PostIt.Desktop arm64 binary. Without it, dh_makeshlibs + # fails with "Can't exec 'aarch64-linux-gnu-objdump': No + # such file or directory" (~50 Mo, standard cross-toolkit + # binutils — no arm64 GCC needed because there's no C code to + # compile, only .NET to publish). + # + # We don't install libc6:arm64 etc. — dpkg-buildpackage -d + # skips the build-deps check (we don't need the arm64 SDK), + # and -Pcross toggles the cross-build profile so debhelper + # adapts to the cross-build context. rm -rf /var/lib/apt/lists/* : > "$STATE_FILE"