Repository navigation
Add x86_64 musl prebuilt target and installer support - #15
Conversation
Add x86_64-unknown-linux-musl to the release build matrix so Alpine and other musl-libc systems get a prebuilt, statically linked binary. The musl leg runs on an ubuntu runner with musl-tools installed for the musl-gcc linker wrapper; packaging, checksum, and cosign keyless signing are identical to the existing targets, producing postil-x86_64-unknown-linux-musl.tar.gz with .sha256, .sig, and .pem. install.sh now detects musl (via ldd --version or the /lib/ld-musl-* loader) and maps to the musl asset instead of refusing the install. The glibc path and the checksum/signature verification flow are unchanged.
There was a problem hiding this comment.
The installer now maps every musl Linux host to a musl target, but only x86_64 musl is released, so aarch64 musl systems will try to download a non-existent asset. The release workflow change itself looks correct.
error
install.sh:53— Installer constructs non-existent aarch64-musl target · confidence 0.90 · kind: risk
Model: moonshotai/kimi-k2.6
| if [ "$os" = "Linux" ]; then | ||
| if { ldd --version 2>&1 | grep -qi musl; } || ls /lib/ld-musl-* >/dev/null 2>&1; then | ||
| os_part="unknown-linux-musl" | ||
| fi |
There was a problem hiding this comment.
Installer constructs non-existent aarch64-musl target
error · confidence 0.90 · kind: risk
The musl detection sets os_part="unknown-linux-musl" for any Linux architecture, but the release matrix only publishes x86_64-unknown-linux-musl. On an aarch64 musl host the installer will request aarch64-unknown-linux-musl, which does not exist, regressing from the previous clear source-build error. Restrict the musl mapping to arch_part="x86_64" and keep the source-build error for other architectures.
Adds an x86_64-unknown-linux-musl leg to the release matrix (installs musl-tools on the runner; packaging, checksum, and cosign signing are already parameterized by target so the new asset gets the same .tar.gz/.sha256/.sig/.pem treatment) and replaces the installer's hard musl refusal with detection that maps musl hosts to the new asset, keeping the checksum and signature verification path unchanged. The static musl build was verified end-to-end (statically linked, postil --version works); cargo test stays green.