Skip to content

Add x86_64 musl prebuilt target and installer support - #15

Merged
morgaesis merged 1 commit into
mainfrom
feat/musl-target
Jun 13, 2026
Merged

morgaesis merged 1 commit into
mainfrom
feat/musl-target

Conversation

@morgaesis

Copy link
Copy Markdown
Contributor

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.

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.
@morgaesis
morgaesis merged commit 60637bf into main Jun 13, 2026
5 of 6 checks passed

@postil-dev postil-dev Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 error install.sh:53 — Installer constructs non-existent aarch64-musl target · confidence 0.90 · kind: risk

Model: moonshotai/kimi-k2.6

Comment thread install.sh
Comment on lines +53 to +56
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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

error 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.

@morgaesis
morgaesis deleted the feat/musl-target branch July 2, 2026 04:06
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