feat: publish Linux ARM64 builds and keep runner paths out of binaries - #8
Merged
Merged
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 packagesv1.0.0 shipped nothing for
aarch64-unknown-linux-gnu. Anyone running thison an ARM server or a Raspberry Pi had no asset at all — not even a tarball.
gcc-aarch64-linux-gnu;fail-fastdisabled so one architecture failing cannot cost the release the other's
packages;
cargo checkdoes not link, so itneeds no cross-linker there; linking is exercised by the release workflow.
Verified locally:
cargo check --target aarch64-unknown-linux-gnu --all-targetsis clean.fix:runner paths in published binariesEach v1.0.0 binary carries 49 absolute paths from the CI runner, embedded in
panic messages by
file!()expansions in the toolchain and dependencysources.
strip = trueremoves debug symbols but not these.CONTRIBUTING.mdalready told anyone building a binary by hand to remappaths first, while the release workflow did not do it itself. Now it does, on
every target, resolving the home directory through
cygpathon Windows sothe 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 willpropose 1.1.0.
Untested
The ARM64 Debian and RPM leg.
cargo deb --targetandcargo generate-rpm --targetboth claim to remap thetarget/releaseassetpaths in
Cargo.toml, but this cannot be proven until a release runs. Withfail-fast: falsethe x86-64 packages and every tarball still publish if itfails, and the fix would be a follow-up rather than a broken release.