Skip to content

feat: publish Linux ARM64 builds and keep runner paths out of binaries - #8

Merged
fenrick merged 2 commits into
mainfrom
feat/arm64-linux-builds
Sep 9, 2026
Merged

fenrick merged 2 commits into
mainfrom
feat/arm64-linux-builds

Conversation

@fenrick

@fenrick fenrick commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Two follow-ups to the v1.0.0 release, kept as separate commits so the
changelog files each one correctly.

feat: Linux ARM64 builds and packages

v1.0.0 shipped nothing for aarch64-unknown-linux-gnu. Anyone running this
on an ARM server or a Raspberry Pi had no asset at all — not even a tarball.

  • added to the release matrix, cross-compiled from an x86-64 runner with
    gcc-aarch64-linux-gnu;
  • the Debian and RPM job now builds both architectures, with fail-fast
    disabled so one architecture failing cannot cost the release the other's
    packages;
  • CI checks the target on every push. cargo check does not link, so it
    needs no cross-linker there; linking is exercised by the release workflow.

Verified locally: cargo check --target aarch64-unknown-linux-gnu --all-targets is clean.

fix: runner paths in published binaries

Each v1.0.0 binary carries 49 absolute paths from the CI runner, embedded in
panic messages by file!() expansions in the toolchain and dependency
sources. strip = true removes debug symbols but not these.

CONTRIBUTING.md already told anyone building a binary by hand to remap
paths first, while the release workflow did not do it itself. Now it does, on
every target, resolving the home directory through cygpath on Windows so
the prefix matches the native path rustc records.

Verified locally: the remap takes the count from 49 to 0, and rustc accepts
the Windows-style prefix form.

This releases as 1.1.0, not 1.0.1

I said 1.0.1 when I offered this. That was wrong: adding a platform is a new
capability, so the feat: commit makes it a minor bump. release-please will
propose 1.1.0.

Untested

The ARM64 Debian and RPM leg. cargo deb --target and
cargo generate-rpm --target both claim to remap the target/release asset
paths in Cargo.toml, but this cannot be proven until a release runs. With
fail-fast: false the x86-64 packages and every tarball still publish if it
fails, and the fix would be a follow-up rather than a broken release.

Nothing built for aarch64-unknown-linux-gnu, so anyone running this on an
ARM server or a Raspberry Pi had no asset at all — not even a tarball.

Adds that target to the release matrix, cross-compiled from an x86-64
runner with gcc-aarch64-linux-gnu, and extends the Debian and RPM
packaging job to build for both architectures. That job now runs with
fail-fast disabled, so one architecture failing cannot cost the release
the other's packages.

CI checks the new target on every push alongside the existing four.
`cargo check` does not link, so it needs no cross-linker; linking is
exercised by the release workflow.
The 1.0.0 binaries each carry 49 absolute paths from the CI runner,
embedded in panic messages by file!() expansions in the toolchain and
dependency sources. `strip = true` removes debug symbols but not these.

CONTRIBUTING.md already told anyone building a binary by hand to remap
paths first; the release workflow did not do it itself. It does now, on
every target, resolving the home directory through cygpath on Windows so
the prefix matches the native path rustc records.
@fenrick
fenrick merged commit c54612a into main Sep 9, 2026
7 checks passed
@fenrick
fenrick deleted the feat/arm64-linux-builds branch September 9, 2026 13:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant