Skip to content

BLD: Build a single wheel in each Linux job - #225

Merged
bashtage merged 1 commit into
MacPython:mainfrom
bashtage:wip-split-linux-wheels
Nov 5, 2026
Merged

bashtage merged 1 commit into
MacPython:mainfrom
bashtage:wip-split-linux-wheels

Conversation

@bashtage

@bashtage bashtage commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

Each ubuntu-latest job built three wheels for its Python version in a row: manylinux x86_64, manylinux aarch64 under QEMU emulation and musllinux x86_64. In the run of 5 November the Linux jobs took 35 to 66 minutes, all other jobs at most 24 minutes, and one job status covered three wheels.

Changes

  • manylinux aarch64 is built natively on the ubuntu-24.04-arm runner, and CIBW_ARCHS_LINUX is native, so no wheel is built under emulation. The QEMU setup step is removed.
  • New variant dimension in the matrix (default, musllinux). The musllinux variant of ubuntu-latest builds only the musllinux x86_64 wheel (CIBW_SKIP skips the manylinux wheels), and every other job skips musllinux wheels, as before for aarch64. The extra variants of the other operating systems are excluded.
  • The musllinux job is named ubuntu-latest, Python cp313, musllinux; the other job names are unchanged, and ubuntu-24.04-arm, Python cp313 is new.

The set of wheels is unchanged. A simulation of the matrix rules of GitHub Actions on the old file gives the 38 jobs of that run; on the new file it gives 54 jobs that each select exactly one wheel, the same 54 wheels (the run had 30 jobs with one wheel and 8 with three).

Not changed

  • Tests are still skipped for aarch64 (CIBW_TEST_SKIP), as for the emulated build. The native runner could run them.
  • The upload steps are untouched. Each job now uploads one wheel.

Not verified

  • The workflow has not run on GitHub. In particular, the pwsh step and setup-miniconda on ubuntu-24.04-arm are untested (the setup-miniconda README lists Linux ARM as supported), and so is the build of manylinux aarch64 on the ARM runner.

Written with Claude Code (Claude Sonnet 5.5).

🤖 Generated with Claude Code

Each ubuntu-latest job built three wheels for its Python version in a
row: manylinux x86_64, manylinux aarch64 under QEMU emulation and
musllinux x86_64. One job status covered all three wheels, and the
Linux jobs of the run of 5 November took 35 to 66 minutes, against at
most 24 minutes for all other jobs.

- Build manylinux aarch64 natively on the ubuntu-24.04-arm runner and set
  CIBW_ARCHS_LINUX to native, so no wheel is built under emulation. The
  QEMU setup step is removed.
- Add a variant dimension to the matrix. The musllinux variant of
  ubuntu-latest builds only the musllinux x86_64 wheel and all other jobs
  skip musllinux wheels, as before for aarch64.

The set of wheels is unchanged. Tests are still skipped for aarch64.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@bashtage
bashtage marked this pull request as ready for review November 5, 2026 07:15
@bashtage
bashtage merged commit 271b000 into MacPython:main Nov 5, 2026
6 of 54 checks passed
@bashtage
bashtage deleted the wip-split-linux-wheels branch November 5, 2026 07:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant