Skip to content

Move cibuildwheel configuration to pyproject.toml#30252

Open
QuLogic wants to merge 1 commit into
matplotlib:mainfrom
QuLogic:cibw-pyproject
Open

Move cibuildwheel configuration to pyproject.toml#30252
QuLogic wants to merge 1 commit into
matplotlib:mainfrom
QuLogic:cibw-pyproject

Conversation

@QuLogic

@QuLogic QuLogic commented Jul 3, 2025

Copy link
Copy Markdown
Member

PR summary

This allows developers to test out the build locally. With this, I was able to fix the test command by setting PIP_PREFER_BINARY to avoid re-building Pillow, which accidentally dropped manylinux2014 wheels in the latest release: python-pillow/Pillow#9057

Note also that we previously set CIBW_AFTER_BUILD, but this doesn't seem to be a valid setting. Thus I have dropped the twine check, which only tests the README rendering and so checking the sdist is sufficient. Additionally, I have commented out the license check, as we cannot do multiple licenses with meson-python without PEP639 (#28982).

PR checklist

@github-actions github-actions Bot added the CI: Run cibuildwheel Run wheel building tests on a PR label Jul 3, 2025
@QuLogic QuLogic added the Build label Jul 3, 2025
@QuLogic

QuLogic commented Jul 3, 2025

Copy link
Copy Markdown
Member Author

Here for example, Pillow 11.2 (instead of the latest 11.3) was installed because of the missing manylinux2014 wheels: https://github.com/matplotlib/matplotlib/actions/runs/16042179733/job/45265805907?pr=30252#step:4:1161

This allows developers to test out the build locally. With this, I was
able to fix the test command by setting `PIP_PREFER_BINARY` to avoid
re-building Pillow, which accidentally dropped manylinux2014 wheels in
the latest release: python-pillow/Pillow#9057

Note also that we previously set `CIBW_AFTER_BUILD`, but this doesn't
seem to be a valid setting. Thus I have dropped the `twine check`, which
only tests the `README` rendering and so checking the sdist is
sufficient. Additionally, I have commented out the license check, as we
cannot do multiple licenses with meson-python without PEP639 (matplotlib#28982).

I have also removed the cpython-freedthreading and cpython-prelease
experimental options, as Python 3.13 free-threading is no longer
supported in cibuildwheel 4 and Python 3.14 is no longer a prerelease.
@QuLogic

QuLogic commented Jun 24, 2026

Copy link
Copy Markdown
Member Author

This has become relevant again since some of our dependencies no longer have wheels for the test command.

Note, I also dropped the cpython-freethreading and cpython-prerelease options as cibuildwheel 4 dropped the former and the latter is unnecessary with Python 3.14 having its final release.

@QuLogic QuLogic added this to the v3.11.1 milestone Jun 24, 2026
@tacaswell

Copy link
Copy Markdown
Member

How does this interact with running the "real" cibuildwheel in the release repo?

@QuLogic

QuLogic commented Jun 25, 2026

Copy link
Copy Markdown
Member Author

Environment variables should take precedence, so whatever's in the release repo should override, but we can probably drop common stuff like the Windows flags, thus simplifying the release repo a bit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Build CI: Run cibuildwheel Run wheel building tests on a PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants