ci: fall back to plain build frontend for odd-arch wheels#771
Merged
Conversation
The pypa odd-arch manylinux/musllinux containers do not ship uv preinstalled, but pyproject.toml selects build-frontend = "build[uv]". cibuildwheel's pre-build 'which uv' check fails every odd-arch job in that case. Override CIBW_BUILD_FRONTEND=build for the odd-arches matrix so the wheels build via plain pip until upstream ships uv in those images.
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.
What do these changes do?
Override
CIBW_BUILD_FRONTEND=buildfor thebuild-wheels-for-odd-archsmatrix in
.github/workflows/ci-cd.yml, so cibuildwheel uses plain pipto drive the per-ABI builds for the QEMU-emulated odd arches
(
aarch64,armv7l,ppc64le,riscv64,s390xxmanylinux/musllinux).
The project's
pyproject.tomlsetsbuild-frontend = "build[uv]",which requires a
uvbinary onPATHinside the build container.The pypa tested-arch manylinux/musllinux images ship
uvpreinstalled,but the odd-arch images (as of the
2026.03.20-1tag) do not. Withoutthis override, every odd-arch musllinux job fails at
cibuildwheel: Command ['which', 'uv'] failed with code 1, whichfail-fast cancels the matching manylinux jobs.
Comment in
reusable-cibuildwheel.ymlupdated to call out the split.Are there changes in behavior for the user?
No user-visible API change. Keeps odd-arch wheels building on future
tagged releases.
Is it a substantial burden for the maintainers to support this?
No; the override is two lines in
ci-cd.ymlplus a comment update,and can be reverted once the pypa odd-arch images ship
uv.Related issue number
Port of aio-libs/yarl#1720 to this repo.
Checklist
CONTRIBUTORS.txtCHANGES/folderAgent run details (optional, for reviewers)
build-wheels-for-odd-archsmatrix is gated onpre-deploy,which only runs on tag pushes; this change cannot be smoke-tested
on a PR. Verification path is the next tagged release.
pre-commit run --all-filesran clean on the commit.docs/spelling_wordlist.txtfor the newsfragment:
aarch64,armv7l,musllinux,ppc64le,preinstalled,s390x.Drafted with Claude Code (Opus 4.7); reviewed by @bdraco before flipping out of draft.