ci(py): build the aarch64 wheel on an arm64 runner - #40
Merged
Conversation
The aarch64-linux wheel was cross-built from an x86_64 runner, where
`maturin-action` selects `ghcr.io/rust-cross/manylinux2014-cross:aarch64`
and builds with the `aarch64-unknown-linux-gnu-gcc` that image ships.
That compiler does not define `__ARM_ARCH` while assembling, so `ring`
(rustls -> ureq -> plugmem-host) stops at
#error "ARM assembler must define __ARM_ARCH"
and the job dies before maturin ever gets a wheel. It is the one cell in
the matrix that cross-compiles C: every other target either builds
natively or, on aarch64-windows, hands the assembly to MSVC's arm64
tools.
Running the row on `ubuntu-24.04-arm` removes the cross compiler
instead of patching around it -- the action picks the native
`quay.io/pypa/manylinux2014_aarch64` when the host is arm64. GitHub's
arm64 runners are free for public repositories. The alternative,
`manylinux: 2_28`, would also dodge the old gcc, but by raising the
wheel's glibc floor from 2.17 to 2.28 for that architecture alone.
Two things follow from the container being native:
* the row can build the free-threaded wheel after all. The reason it
could not was that the only 3.14t interpreter in reach belonged to
the host and had the wrong architecture; the manylinux image carries
its own `/opt/python/cp314-cp314t` and the action puts it on PATH.
Eleven wheels now, not ten.
* `setup-python` is skipped on both linux rows. `maturin-action`
mounts the workspace into the container and nothing else -- the
hosted tool cache is not visible in there -- so on those rows it was
installing an interpreter the build could never see.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`py-build` lives in release.yml and only runs on a `pin/v*` tag, which is how the `ring` cross-compile failure this PR fixes could only be found mid-release. This copies that matrix into CI with the publishing removed, so the six targets are exercised on the pull request. The job is not in `ci-pass`'s `needs`, so deleting it needs no other edit and a failure here does not block the merge gate. Banners in ci.yml mark exactly what to remove. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The dry run did its job: all six targets built, eleven wheels and the sdist came out, nothing was published. The aarch64-linux row that this branch fixes is green on a native arm64 runner, so the matrix in release.yml is now known-good before a tag depends on it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@openai.com>
Co-authored-by: codex <codex@openai.com>
Co-authored-by: codex <codex@openai.com>
Co-authored-by: codex <codex@openai.com>
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.
No description provided.