Repository navigation
ci: build full cp310-cp313 macOS wheels via cibuildwheel - #35
Merged
ddehilster merged 1 commit intoJul 1, 2026
Merged
Conversation
The macOS job used a bare `pip wheel .`, which built exactly one wheel for the runner's host Python (currently cp314) and bundled no ICU dylibs. So macOS users on cp310-cp313 had no wheel and fell through to the unbuildable sdist -- the same gap just fixed for Windows/Linux cp313. Switch the job to cibuildwheel@v2.23.4 (matching the other platforms), installing ICU through the vcpkg manifest with johnwason/vcpkg-action and letting cibuildwheel default delocate vendor the dylibs. Drop the cp*-macosx_arm64 skip from pyproject: macOS-latest is an arm64 runner, so that skip would otherwise leave the job with nothing to build. Verified the matrix with cibuildwheel --print-build-identifiers --platform macos --arch arm64: cp310/cp311/cp312/cp313-macosx_arm64. publish.yml runs on pull_request, so this PR CI builds the macOS wheels without publishing -- inspect that run before merging/releasing. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Follow-up to #34 (which fixed the missing cp313 wheels on Linux/Windows). The macOS job was still under-building:
A bare
pip wheel .builds exactly one wheel — for the runner's host Python (currently cp314) — and bundles no ICU dylibs. So macOS users on cp310–cp313 got no wheel and fell through to the source sdist, which can't build without a local ICU/vcpkg toolchain. Recent releases show this: only a lonecp314-macosx_arm64wheel, nothing for cp310–cp313.Fix
publish.yml: convert the macOS job topypa/cibuildwheel@v2.23.4(same as the Linux/Windows jobs). ICU comes from the vcpkg manifest viajohnwason/vcpkg-action(mirroring the Windows job), and cibuildwheel's default delocate repair vendors the dylibs into each wheel — something the barepip wheelnever did.pyproject.toml: dropcp*-macosx_arm64fromskip.macOS-latestis an arm64 (Apple Silicon) runner, so with the skip in place cibuildwheel would build nothing. (It was only harmless before because the barepip wheelbypassed cibuildwheel entirely.)Result
cibuildwheel --print-build-identifiers --platform macos --arch arm64against this config:Full cp310–cp313 coverage, consistent with Linux/Windows. Note this intentionally drops the lone cp314 wheel — cibuildwheel 2.23.4's build set is cp310–cp313, matching the other platforms. The wheels also pick up cibuildwheel's default arm64 deployment target (macosx_11_0), so they install on more Macs than the previous macosx_15+/26 tags.
Validation
publish.ymlrunson: pull_request(the upload/release steps are gated onrefs/tags/v*), so this PR's CI builds the macOS wheels without publishing. Please check the "Build wheels on MacOS" job on this PR produces cp310–cp313macosx_arm64wheels before merging. After merge, a normal release (the Release workflow) will publish them.Not in scope
Intel macOS (
macosx_x86_64) wheels — would need an Intel runner (macos-13) or cross-build; the project has only ever shipped arm64. Can be a separate PR if desired.🤖 Generated with Claude Code