Skip to content

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

Merged
bdraco merged 1 commit into
aio-libs:masterfrom
bdraco:ci/cibuildwheel-odd-arch-fallback
May 19, 2026
Merged

ci: fall back to plain build frontend for odd-arch wheels#1352
bdraco merged 1 commit into
aio-libs:masterfrom
bdraco:ci/cibuildwheel-odd-arch-fallback

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, cibuildwheel's pre-build which uv check would fail
every odd-arch job. Same regression as the one observed on yarl's
v1.24.0 release CI after switching to the uv build frontend in #1350.

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 once the
build[uv] frontend ships in a release.

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

Ports aio-libs/yarl#1720 to multidict,
which made the same build[uv] switch in #1350.

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.
  • make doc-spelling was run locally; the 5 misspellings it reports
    all pre-date this branch on master (verified by stashing the
    diff and re-running). The new CHANGES/1352.contrib.rst fragment
    introduces no new misspellings and no docs/spelling_wordlist.txt
    changes were needed.
  • pre-commit run was run on the three touched files and passed
    (Validate GitHub Workflows, yamllint, changelog :user: role).

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 would fail every odd-arch job.
Override CIBW_BUILD_FRONTEND=build for the odd-arches matrix so the
wheels build via plain pip until upstream ships uv in those images.
@psf-chronographer psf-chronographer Bot added the bot:chronographer:provided There is a change note present in this PR label May 19, 2026
@bdraco bdraco marked this pull request as ready for review May 19, 2026 16:50
@bdraco bdraco requested review from asvetlov and webknjaz as code owners May 19, 2026 16:50
@bdraco bdraco enabled auto-merge (squash) May 19, 2026 16:50
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented May 19, 2026

Merging this PR will not alter performance

✅ 242 untouched benchmarks


Comparing bdraco:ci/cibuildwheel-odd-arch-fallback (f7428e6) with master (1ad8b48)

Open in CodSpeed

@bdraco bdraco merged commit 6696a1c into aio-libs:master May 19, 2026
55 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot:chronographer:provided There is a change note present in this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant