Skip to content

ci: fall back to plain build frontend for odd-arch wheels#771

Merged
bdraco merged 3 commits into
aio-libs:masterfrom
bdraco:ci/odd-arch-build-frontend
May 19, 2026
Merged

ci: fall back to plain build frontend for odd-arch wheels#771
bdraco merged 3 commits into
aio-libs:masterfrom
bdraco:ci/odd-arch-build-frontend

Conversation

@bdraco
Copy link
Copy Markdown
Member

@bdraco bdraco commented May 19, 2026

What do these changes do?

Override CIBW_BUILD_FRONTEND=build for the build-wheels-for-odd-archs
matrix in .github/workflows/ci-cd.yml, so cibuildwheel uses plain pip
to drive the per-ABI builds for the QEMU-emulated odd arches
(aarch64, armv7l, ppc64le, riscv64, s390x x
manylinux/musllinux).

The project's pyproject.toml sets build-frontend = "build[uv]",
which requires a uv binary on PATH inside the build container.
The pypa tested-arch manylinux/musllinux images ship uv preinstalled,
but the odd-arch images (as of the 2026.03.20-1 tag) do not. Without
this override, every odd-arch musllinux job fails at
cibuildwheel: Command ['which', 'uv'] failed with code 1, which
fail-fast cancels the matching manylinux jobs.

Comment in reusable-cibuildwheel.yml updated 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.yml plus 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

  • I think the code is well written
  • Unit tests for the changes exist; N/A, CI workflow change
  • Documentation reflects the changes; N/A
  • If you provide code modification, please add yourself to CONTRIBUTORS.txt
  • Add a new news fragment into the CHANGES/ folder
Agent run details (optional, for reviewers)
  • The build-wheels-for-odd-archs matrix is gated on pre-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-files ran clean on the commit.
  • New terms added to docs/spelling_wordlist.txt for the news
    fragment: aarch64, armv7l, musllinux, ppc64le,
    preinstalled, s390x.

Drafted with Claude Code (Opus 4.7); reviewed by @bdraco before flipping out of draft.

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.
@bdraco bdraco marked this pull request as ready for review May 19, 2026 17:23
@bdraco bdraco merged commit e4c54e6 into aio-libs:master May 19, 2026
58 of 59 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant