Build native arm64 macOS wheels#466
Open
vinay553 wants to merge 7 commits into
Open
Conversation
Comment on lines
+65
to
+70
| expected_platforms = { | ||
| "linux": lambda name: "manylinux" in name, | ||
| "macos": lambda name: "macosx_" in name | ||
| and name.endswith("_arm64.whl"), | ||
| "windows": lambda name: name.endswith("win_amd64.whl"), | ||
| } |
Contributor
There was a problem hiding this comment.
The Linux platform check accepts any wheel whose name contains manylinux. If the Linux build produces the wrong architecture, such as manylinux_aarch64, each cp3xx linux check can still pass as long as there are 15 wheels. The release validation would then allow a bundle that is missing the intended Linux x86_64 wheels.
Artifacts
Repro: fixture generator for wrong-architecture manylinux wheels
- Contains supporting evidence from the run (text/x-python; charset=utf-8).
Repro: validator output showing wrong-architecture manylinux wheels pass with exit code 0
- Keeps the command output available without making the summary code-heavy.
Ran code and verified through T-Rex
Prompt To Fix With AI
This is a comment left during a code review.
Path: scripts/validate_release_artifacts.py
Line: 65-70
Comment:
**Pin Linux architecture**
The Linux platform check accepts any wheel whose name contains `manylinux`. If the Linux build produces the wrong architecture, such as `manylinux_aarch64`, each `cp3xx linux` check can still pass as long as there are 15 wheels. The release validation would then allow a bundle that is missing the intended Linux `x86_64` wheels.
How can I resolve this? If you propose a fix, please make it concise.
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.
Summary
This PR fixes the tagged PyPI publish path for
scale-nucleus0.18.8 native wheels.Root Cause
There were two publish-path issues:
universal2on a CircleCI Apple Silicon runner, but the build produced anarm64wheel that cibuildwheel then tried to test underx86_64.cibuildwheelfrom a Python 3.10 host. That resolved to an older compatible builder that did not produce the requestedcp314Linux wheel.The fix is to make the wheel builder deterministic and align the macOS architecture request with what the runner actually builds.
Changes
arm64wheels instead ofuniversal2.cibuildwheel==4.1.0.cimg/python:3.12so the pinned builder can run and build the full Python 3.10 through 3.14 target matrix.cibuildwheel.0.18.8and add the changelog entry.The release workflow remains tag-only for
build_sdist, platform wheel builds, andpypi_publish.Validation
circleci config validate .circleci/config.ymlcircleci config process .circleci/config.ymlpre-commit run --all-filesNUCLEUS_PYTEST_API_KEY=dummy pytest tests/test_local_deduplication.py -qcibuildwheelmatrix through Colima/Docker forcp310throughcp314cp310throughcp314.Greptile Summary
scale-nucleus0.18.8.cibuildwheel==4.1.0and runs Linux builds from a Python 3.12 image.arm64and updates the Windows host interpreter setup.Confidence Score: 5/5
The changes are limited to release packaging configuration and version metadata, with no review comments identified.
The updated wheel build configuration is narrowly scoped and the provided validation covers CircleCI config processing, pre-commit checks, focused tests, and platform wheel build paths.
What T-Rex did
Comments Outside Diff (1)
.circleci/config.yml, line 289-320 (link)These branch filters make
build_sdistand all three wheel jobs tag-only again because they ignore every branch while keeping the existing tag filter. A normal PR branch will skip the release artifact jobs, so the pinnedcibuildwheelmatrix is not exercised until the release tag. Please let these jobs run on PR branches while keeping onlypypi_publishtag-only; when doing that, restore the empty-CIRCLE_TAGguard in the sdist tag/version check so PR sdist builds do not fail before packaging.Prompt To Fix With AI
Reviews (5): Last reviewed commit: "Select Windows host Python for wheel bui..." | Re-trigger Greptile