Fix 1877#1905
Merged
Merged
Conversation
Build musllinux (Alpine / musl libc) wheels so `pip`/`uv install autobahn` on Alpine gets a prebuilt wheel instead of a failing source build (the python-build-standalone interpreter uv downloads is clang-built, and its sysconfig --rtlib=compiler-rt flag breaks Alpine's gcc). Building inside the pypa musllinux container uses its gcc-built /opt/python, so NVX compiles and auditwheel auto-tags musllinux_1_2. - wheels-docker.yml: add a musllinux_1_2_x86_64 matrix entry. Since the pypa musllinux image ships no PyPy, build CPython only via a new `build_envs` matrix field (cpy311-314) instead of `just build-all` (which includes pypy311). The manylinux entry keeps building all. - wheels-arm64.yml: add 4 CPython musllinux_1_2_aarch64 entries (cpy311-314), mirroring the manylinux CPython entries. No build-script/recipe changes needed: build-arm64-wheel.sh only installs curl/git if absent (preinstalled in the musllinux image), and auditwheel auto-detects musl. Verified locally on asgard1 (both arches: x86_64 native + aarch64 under QEMU, pulling the pypa musllinux images): uv selects the musl /opt/python GIL interpreter, NVX compiles under gcc with no --rtlib error, and the wheels are correctly tagged, e.g. autobahn-26.7.1.dev1-cp314-cp314-musllinux_1_2_x86_64.whl and ...-musllinux_1_2_aarch64.whl. Release wiring (release.yml + fileset targets + docs) follows in a second commit once the build jobs are green on CI. Note: This work was completed with AI assistance (Claude Code).
…ssbario#1877) The x86_64 musllinux build job failed in "Validate wheels integrity" with "/usr/bin/python3: No module named pip". The build itself succeeded and produced correctly-tagged wheels (cp311-cp314, GIL ABI, musllinux_1_2_x86_64); only the validation tooling tripped. Root cause: between steps, GitHub reconstructs PATH from $GITHUB_PATH and drops the /opt/python entries added in "Setup Python environment", so `python3` falls back to the container's system interpreter. On manylinux (AlmaLinux) that interpreter bundles pip, so validation worked; on musllinux (Alpine) the system python3 has no pip, so `python3 -m pip install ... twine` hard-failed. The existing `ensurepip` fallback is a no-op on Alpine (built without ensurepip). Fix: in the validation step, if `python3 -m pip` is unavailable, re-expose a pypa /opt/python CPython (all bundle pip) on PATH before installing twine. This is a no-op on manylinux (system python3 already has pip), so manylinux behavior is unchanged; it only kicks in on musllinux. Note: This work was completed with AI assistance (Claude Code).
Contributor
Author
…ssbario#1877) Second musllinux-only glitch in "Validate wheels integrity": after the pip fix, twine ran and PASSED, but the next line failed with "bad substitution". Root cause: the musllinux (Alpine) container ships no bash, so GitHub Actions runs the step under busybox sh (ash). `TWINE_EXIT=${PIPESTATUS[0]}` uses a bash array, which ash does not support -> "bad substitution". manylinux (AlmaLinux) has bash, so it never hit this. Fix: capture twine's exit status POSIX-style -- redirect output to a file inside an if/else and read $? -- instead of `tee` + ${PIPESTATUS[0]}. Output is still shown (cat) and the error-grep on the file is unchanged. Works identically under bash (manylinux) and ash (musllinux). Note: This work was completed with AI assistance (Claude Code).
Contributor
Author
|
very good, phase 1 is done, artifacts produced: |
Phase 1 (build jobs) is green on CI; this wires the musllinux_1_2 wheels
(CPython 3.11-3.14, x86_64 + aarch64) through the release pipeline so they are
published alongside the manylinux wheels.
release.yml:
- Artifact discovery: +5 job outputs and +5 findArtifact() prefix lookups
(x86_64 bundle `artifacts-musllinux_1_2_x86_64`; 4 per-interpreter aarch64
`artifacts-arm64-cpython-3.NN-musllinux_1_2_aarch64`). findArtifact matches by
prefix, so the runtime meta-checksum suffix on each artifact is handled.
- Downloads: +5 download-artifact-verified steps in each of the 3 release jobs
(release-development, release-nightly, release-stable/PyPI) — x86_64 into
wheelhouse/ (dist/ for PyPI), aarch64 into wheelhouse-arm64/ (dist/ for PyPI),
reusing the existing bundle dirs. Each bundle carries its own CHECKSUMS.sha256;
as with the existing 6 aarch64 bundles, the directory-level re-verify checks the
surviving checksum file — the authoritative gate remains check-release-fileset.
- Fileset gates (x3): +8 targets each — cpyNN-linux-{x86_64,aarch64}-musllinux_1_2
for NN in 11/12/13/14. The action's ABI-tag regex (`musllinux_1_2` vs the wheel
platform tag) cleanly separates musllinux from manylinux, so a missing or
mis-tagged musllinux wheel now fails the release in strict mode.
docs/wheels-inventory.rst: musllinux subsections for x86_64 and aarch64 (CPython
only; PyPy-on-musl noted as follow-up) + two musllinux_1_2 platform-tag entries.
docs/changelog.rst: 26.7.1 Build & CI/CD bullet for crossbario#1877.
Also tidy the build-metadata banners in wheels-docker.yml and wheels-arm64.yml so
musl builds no longer print "manylinux Build Information" / "Manylinux Tag"
(cosmetic; the wheels were always correctly tagged by auditwheel).
Note: This work was completed with AI assistance (Claude Code).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

fixes #1877