Skip to content

ci: probe glibc linux natives on musl/Alpine#46

Merged
dfa1 merged 2 commits into
mainfrom
ci/musl-probe
Jun 28, 2026
Merged

ci: probe glibc linux natives on musl/Alpine#46
dfa1 merged 2 commits into
mainfrom
ci/musl-probe

Conversation

@dfa1

@dfa1 dfa1 commented Jun 28, 2026

Copy link
Copy Markdown
Owner

Adds a non-gating musl-probe job (linux-x86_64, linux-aarch64) that runs the current glibc native inside an Alpine/musl JDK container — settling empirically whether the *-linux-gnu natives load on musl, instead of guessing.

How

Action steps (checkout, setup-java, Maven fetch, javac) run on the glibc host; only the final java runs in amazoncorretto:25-alpine. This sidesteps the "node-based actions need glibc" problem with container: jobs. continue-on-error: true so a load failure documents the gap without breaking the workflow.

Expected outcome

The native is built for x86_64-linux-gnu / aarch64-linux-gnu (glibc; no -static), so it likely fails to load on stock Alpine (no libc.so.6). If so, that's the signal to ship musl natives — a cheap fix: add x86_64-linux-musl / aarch64-linux-musl triples to build-zstd.sh.

If it unexpectedly passes, even better — glibc natives work on musl and no new artifacts are needed.

Either way the probe turns a guess into a fact. Image is swappable if amazoncorretto:25-alpine has issues.

🤖 Generated with Claude Code

dfa1 and others added 2 commits June 28, 2026 08:47
Add a non-gating (continue-on-error) musl-probe job for linux-x86_64 and
linux-aarch64. The natives are built for the *-linux-gnu ABI, so this
checks empirically whether they load on musl rather than guessing.

The action steps (checkout, setup-java, Maven fetch, javac) run on the
glibc host; only the final `java` runs inside an Alpine/musl JDK container
(amazoncorretto:25-alpine), so node-based actions never run under musl. If
the probe fails, the fix is to add x86_64-linux-musl / aarch64-linux-musl
target triples to build-zstd.sh and ship two more native jars.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Instead of a separate musl-probe job, add the two Alpine/musl legs to the
smoke matrix (container + experimental flags). Steps branch on matrix.container:
native legs run via JBang on the host; musl legs fetch+compile on the glibc
host then run java inside an Alpine/musl JDK container. continue-on-error is
per-leg (matrix.experimental), so the six native legs gate and the two musl
probes don't.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@dfa1 dfa1 merged commit eb8de7d into main Jun 28, 2026
1 check passed
@dfa1 dfa1 deleted the ci/musl-probe branch June 28, 2026 06:51
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