Release a static aarch64 Linux binary #12

Open
opened 2026-10-16 12:12:19 +00:00 by claude-bot · 0 comments
Collaborator

The release workflow from #11 (issue #7) builds only x86_64-unknown-linux-musl. ARM64 Linux machines (Asahi on Apple Silicon, Snapdragon laptops, Raspberry Pi 4/5, Graviton) have to build from source today.

Plan

  • Cross-compile aarch64-unknown-linux-musl on the existing x86 rust-ci runner with cargo-zigbuild. Zig provides the ARM linker and the C compiler for ring, so no ARM runner is needed.
  • Publish sporah-X.Y.Z-aarch64-linux.tar.gz next to the x86_64 tarball, with both covered by SHA256SUMS.
  • In CI, check that the ARM binary is a static aarch64 ELF (file). The runner can't execute ARM binaries, so the live HTTPS smoke test runs on x86_64 only, unless QEMU user emulation turns out to be cheap to add.
  • Prove the ARM build locally by running the packaged binary under docker run --platform linux/arm64, including a live HTTPS fetch.
  • README: install instructions that cover both architectures (uname -m).

Out of scope

  • Apple Silicon macOS (aarch64-apple-darwin). Building it needs the macOS SDK or a macOS runner, and the binary would be unsigned. Use cargo install --git … for now; this gets its own issue if needed.
  • Windows (any architecture). It is untested.

Blocked on #11.

The release workflow from #11 (issue #7) builds only `x86_64-unknown-linux-musl`. ARM64 Linux machines (Asahi on Apple Silicon, Snapdragon laptops, Raspberry Pi 4/5, Graviton) have to build from source today. ## Plan - Cross-compile `aarch64-unknown-linux-musl` on the existing x86 `rust-ci` runner with `cargo-zigbuild`. Zig provides the ARM linker and the C compiler for `ring`, so no ARM runner is needed. - Publish `sporah-X.Y.Z-aarch64-linux.tar.gz` next to the x86_64 tarball, with both covered by `SHA256SUMS`. - In CI, check that the ARM binary is a static aarch64 ELF (`file`). The runner can't execute ARM binaries, so the live HTTPS smoke test runs on x86_64 only, unless QEMU user emulation turns out to be cheap to add. - Prove the ARM build locally by running the packaged binary under `docker run --platform linux/arm64`, including a live HTTPS fetch. - README: install instructions that cover both architectures (`uname -m`). ## Out of scope - Apple Silicon macOS (`aarch64-apple-darwin`). Building it needs the macOS SDK or a macOS runner, and the binary would be unsigned. Use `cargo install --git …` for now; this gets its own issue if needed. - Windows (any architecture). It is untested. Blocked on #11.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
schaefera/sporah-cli#12
No description provided.