feat/release-page #2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/release-page"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The previous version wrote RELEASE_BODY to a state file using the '<<EOF ... EOF' heredoc syntax, then 'source'd that file at the top of each subsequent step. Bash cannot parse that file as shell input: the heredoc body contains markdown with backticks, asterisks, colons, etc., which bash tries to interpret as commands ('postit: command not found', '1.0.6: command not found', etc.). Switch to JSON via jq: jq handles all escaping correctly via --arg/--argjson. Each step reads the fields it needs with `jq -r '.field' $STATE_FILE`. Also fixes a botched jq merge in the validation step that mixed `jq -n ... > STATE_FILE` with a `<<< "" ` here-string to the same file.The Makefile's 'mv ... || true' swallows non-zero exits from make deb. Combined with set -e missing, this made the arm64 build step exit 0 silently even when dpkg-buildpackage failed. Add set -x for the arm64 step specifically (amd64 already works, no need to spam the log) and wrap make deb in a '|| { echo ...; exit 1; }' so the step fails loudly on any make-level error.The previous two attempts (wget + dpkg-deb -x from packages.debian.org, apt-get install libc6:arm64) were wrong approaches. The Debian-recommended way is the crossbuild-essential-<ARCH> meta-package, which pulls in: - gcc-aarch64-linux-gnu / g++-aarch64-linux-gnu (cross-gcc, unused for our managed-only build but installed for consistency) - binutils-aarch64-linux-gnu (provides aarch64-linux-gnu-objdump needed by dh_makeshlibs — replaces the previous binutils-only install) - libc6-dev:arm64, linux-libc-dev:arm64 (cross-libc for dpkg-shlibdeps to resolve the arm64 binaries' NEEDED entries against the system shlibs cache) - dpkg-cross CONFIG_SITE files under /etc/dpkg-cross/ With crossbuild-essential-arm64 installed: - dh_makeshlibs finds its aarch64-linux-gnu-objdump ✓ - dh_shlibdeps can resolve arm64 binaries against the on-host shlibs cache ✓ - dpkg-buildpackage -Pcross,nocheck runs cleanly The environment for the arm64 make deb is now: CONFIG_SITE=/etc/dpkg-cross/cross-config.arm64 \ DEB_HOST_ARCH=arm64 DEB_BUILD_ARCH=amd64 \ DEB_BUILD_OPTIONS=nocheck \ make deb POSTIT_GIT_TAG= POSTIT_RUNTIME=linux-arm64 which matches the Debian cross-build recipe documented at https://wiki.debian.org/CrossCompiling (Build without a build environment section). debian/rules also drops the now-unused override_dh_shlibdeps override (the stage dir hack) — standard dh_shlibdeps now works because the cross-libc is installed.crossbuild-essential-arm64 only pulls gcc-aarch64-linux-gnu + binutils-aarch64-linux-gnu + dpkg-cross. It does NOT transitively pull libc6:arm64 (verified on the Debian package index: the Depends chain stops at gcc-12-aarch64-linux-gnu, which doesn't depend on libc6:arm64). So dh_makeshlibs works (binutils is there), but dh_shlibdeps has no arm64 shlibs cache to read from. Add explicit runtime libs after a dpkg --add-architecture arm64 + apt-get update: 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 \ libc6:arm64 libstdc++6:arm64 \ libfontconfig1:arm64 libfreetype6:arm64 \ libgtk-3-0:arm64 If the arm64 packages are unavailable from the runner's configured apt sources, this run will fail with 'Unable to locate package libc6:arm64' — but that was a real failure mode already explored in earlier runs (run #31, before we had dpkg --add-architecture arm64 in place).When the workflow runs make deb twice in a row (amd64, then arm64), the second rm -f ../postit_*1.0.6-1*.deb glob matched BOTH postit_1.0.6-1_amd64.deb (produced by the first build) and postit_1.0.6-1_arm64.deb (about to be produced). So the second rm was erasing the first build's output before its own make ran. Result: postit_1.0.6-1_amd64.deb was created and then deleted by the arm64 build, leaving only the .deb arm64 in /src/. The 'Localiser les .deb produits' step failed with amd64=''. Scope the rm to this build's arch tag via DPKG_HOST: rm -f ../postit_<TAG>-1_${DPKG_HOST}.deb \ ../postit_<TAG>-1_${DPKG_HOST}.buildinfo \ ../postit_<TAG>-1_${DPKG_HOST}.changes DPKG_HOST is already computed in the recipe for the dpkg- buildpackage call — we just reuse it for the rm.