fix(release): actually build the arm64 binary it packages #18
Reference in New Issue
Block a user
No description provided.
Delete Branch "fix/release-arm64-build"
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?
What & why
The cutover merged and
release.ymlfired — and died at the packaging step:installer#10addedlinux-aarch64in three of the four places it belongs — therustup target add, thecpintodist/, and theSHA256SUMSline — but never added a build step for it. Nothing produced the binary, so the run got all the way to packaging before noticing.This is not fallout from the cutover merge. The step is absent from
edgeat8e52583too, i.e. beforemainwas merged into it;release.ymlauto-merged without dropping anything. It has simply never existed.No tag and no release were created — the run planned
v0.1.0and failed before tagging — so merging this and re-running produces a clean first release.What changed
CC/ARenv pattern the Windows cross build already uses.libc6-dev-arm64-crossin the apt install.gcc-aarch64-linux-gnuonly recommends it and that step runs--no-install-recommends, so without it the Rust half of the build succeeds and thenring(underureq's rustls) dies compiling C on a missingbits/libc-header-start.h. This is the same trap PLAN.md §5.2 records for both crates.How it was tested
Reproduced the CI environment in
rust:1-slim-bookworm— the same apt line including--no-install-recommends, then the same cargo invocation:Builds clean and emits the binary at exactly the path the packaging step reads.
Also: the workflow parses as YAML (13 steps, all three build steps present), and contains no empty
${{ }}tokens — the trap that silently skipped a step inbundle.yml.After this merges
Re-running the release should publish
v0.1.0with four assets:linux-x86_64,linux-aarch64,windows-x86_64.exe, andSHA256SUMS.Worth knowing: the
syncworkflow (project-tree sync) also failed on the cutover commit. That is a separate issue and is not addressed here.Checklist
AI-assisted contributions (required)
Claude Code (Opus 5). I have reviewed and understandevery change, and take responsibility for it. AI-authored commits are
marked with a
Co-Authored-Bytrailer.License
(GNU GPL v3.0 or later), and I have the right to contribute it.
The first release attempt failed at packaging: cp: cannot stat 'target/aarch64-unknown-linux-gnu/release/runicgateway-installer': No such file or directory installer#10 added linux-aarch64 in three of the four places it belongs — the rustup target, the `cp` into dist/, and the SHA256SUMS line — but never added a build step for it. Nothing ever produced the binary, so the run got all the way to packaging before noticing. No tag or release was created, so a retry is clean. Two changes: - Build arm64, with the same linker/CC/AR env pattern the Windows cross build already uses. - Name `libc6-dev-arm64-cross` in the apt install. gcc-aarch64-linux-gnu only *recommends* it and this step runs --no-install-recommends, so without it the Rust half builds and then `ring` (under ureq's rustls) dies compiling C on a missing bits/libc-header-start.h. Verified by reproducing CI in rust:1-slim-bookworm — the same apt line including --no-install-recommends, then the same cargo invocation. Builds clean and emits a 4.6 MB binary at exactly the path the packaging step reads. Co-Authored-By: Claude <noreply@anthropic.com>