Skip to content

BLD: Build a single wheel in each job - #34

Draft
bashtage wants to merge 2 commits into
mainfrom
one-wheel-per-job
Draft

bashtage wants to merge 2 commits into
mainfrom
one-wheel-per-job

Conversation

@bashtage

@bashtage bashtage commented Nov 6, 2026

Copy link
Copy Markdown
Owner

As in statsmodels-wheels (MacPython/statsmodels-wheels#225), every job now
builds one wheel. The Linux job built three wheels for each Python: manylinux
x86_64, musllinux x86_64 and manylinux aarch64, the last under QEMU emulation.

  • Linux x86_64 has two jobs for each Python, selected by a new variant axis:
    default builds the manylinux wheel and musllinux the musllinux wheel
    (CIBW_SKIP skips the other one). The variant is excluded on every other
    runner.
  • Linux aarch64 is built natively on ubuntu-24.04-arm, so the QEMU step is
    removed. Its wheels are still not tested (CIBW_TEST_SKIP is unchanged).
  • CIBW_ARCHS_LINUX is native, like CIBW_ARCHS_MACOS.
  • The musllinux jobs are named "..., musllinux".

cibuildwheel 4.3.5 --print-build-identifiers on the expanded matrix gives 39
jobs and 39 wheels, one in each job, and the same 39 wheels as the old matrix
(27 jobs): cp310 to cp315 for manylinux x86_64 and aarch64, musllinux x86_64,
Windows AMD64, macOS arm64 and x86_64, and cp313 to cp315 for Windows ARM64.

Second commit (BLD: Build main without uploading): The workflow built v7.1 with PYPI_UPLOAD true. PyPI accepts files for a
release only for 14 days after its first upload, so every Windows ARM64 job
failed in the upload step with "400 Uploading new files to releases older than
14 days is not allowed", after building and testing its wheel.

Building main with PYPI_UPLOAD false makes the runs of this repository trial
builds of the next release. For the release of 7.2, set BUILD_COMMIT to "v7.2"
and PYPI_UPLOAD to true.

🤖 Generated with Claude Code

As in statsmodels-wheels (MacPython/statsmodels-wheels#225), every job now
builds one wheel. The Linux job built three wheels for each Python: manylinux
x86_64, musllinux x86_64 and manylinux aarch64, the last under QEMU emulation.

- Linux x86_64 has two jobs for each Python, selected by a new variant axis:
  default builds the manylinux wheel and musllinux the musllinux wheel
  (CIBW_SKIP skips the other one). The variant is excluded on every other
  runner.
- Linux aarch64 is built natively on ubuntu-24.04-arm, so the QEMU step is
  removed. Its wheels are still not tested (CIBW_TEST_SKIP is unchanged).
- CIBW_ARCHS_LINUX is native, like CIBW_ARCHS_MACOS.
- The musllinux jobs are named "..., musllinux".

cibuildwheel 4.3.5 --print-build-identifiers on the expanded matrix gives 39
jobs and 39 wheels, one in each job, and the same 39 wheels as the old matrix
(27 jobs): cp310 to cp315 for manylinux x86_64 and aarch64, musllinux x86_64,
Windows AMD64, macOS arm64 and x86_64, and cp313 to cp315 for Windows ARM64.
The workflow built v7.1 with PYPI_UPLOAD true. PyPI accepts files for a
release only for 14 days after its first upload, so every Windows ARM64 job
failed in the upload step with "400 Uploading new files to releases older than
14 days is not allowed", after building and testing its wheel.

Building main with PYPI_UPLOAD false makes the runs of this repository trial
builds of the next release. For the release of 7.2, set BUILD_COMMIT to "v7.2"
and PYPI_UPLOAD to true.
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