fix(release): static musl Linux binaries, so the installer runs on Debian 12 (D158) #33
Reference in New Issue
Block a user
No description provided.
Delete Branch "ci/static-musl-installer"
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?
Found by the Rust phase 18 walk (§34.3 step 7). The org lead chose static musl (D158).
edgewas deleted at the #32 cutover, so this goes straight intomain.The defect
The released Linux installer is linked against the release runner's glibc and needs glibc 2.39:
It fails on the first line on Debian 12 (2.36) and Ubuntu 22.04 (2.35), which are the hosts an operator is most likely to have. v0.2.0 was the same, so this predates phase 18. Step 7 had to be walked on Debian 13. The sidecar it installs has been static since D149.
The change (release.yml only)
LINUX_TARGETandARM64_TARGETare nowx86_64-unknown-linux-muslandaarch64-unknown-linux-musl.cargo zigbuild.ring(under ureq's rustls) compiles C, so each target needs a musl-targeting C compiler. Ubuntu packages one for x86_64 only; zig covers both, installed from PyPI (ziglang,cargo-zigbuild). Thegcc-aarch64-linux-gnuandlibc6-dev-arm64-crosspackages are no longer needed.filedoesn't call statically linked, so a regression fails the release instead of an operator's first run.Proof
In
rust:1-slim-bookworm, with the same commands: both targets build,filereports "ELF 64-bit … x86-64 … statically linked" and "… ARM aarch64 … statically linked", and the x86_64 binary runs. PR checks don't run the release build, so the release run on merge is the first CI proof. If it fails, it fails before tagging.Merging releases v0.3.1. I'll then re-walk step 7 on the Debian 12 rig with the downloaded binary.
🤖 Generated with Claude Code
https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY