Repository navigation
feat: build Windows ARM64 wheels - #1925
johnnynunez wants to merge 1 commit into
Conversation
Add the hosted windows-11-arm runner to the cibuildwheel matrix so releases also ship native win_arm64 wheels with the Cython extensions.
|
Thanks for contributing! A quick note: this project is in the process of moving from LGPL-2.1 to Apache 2.0, and may keep LGPL-2.1-or-later as an OR option so GPL-2.0-only projects can keep using the library, see #1835. By continuing with this pull request you agree that this new contribution is offered under both Apache 2.0 and LGPL-2.1-or-later, so it is covered under either outcome. This notice does not affect your previous contributions. If you would like to consent to relicensing those as well, please post the consent statement on #1835; silence is never treated as consent for past work. If offering this contribution under these licenses does not work for you, no hard feelings; reply with the exact phrase |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1925 +/- ##
=======================================
Coverage 99.87% 99.87%
=======================================
Files 33 33
Lines 3913 3913
Branches 568 568
=======================================
Hits 3908 3908
Misses 3 3
Partials 2 2 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Merging this PR will not alter performance
|
|
Traveling this week, but will take a look as soon as I can |
Adds the hosted
windows-11-armrunner to thebuild_wheelsmatrix so releases also ship nativewin_arm64wheels with the Cython extensions compiled. Today Windows on Arm users get the sdist and need a local compiler, or end up on the pure-Python fallback. GitHub'swindows-11-armrunners are free for public repositories.On that runner cibuildwheel's default
autoarch selects ARM64 only, and the existingCIBW_SKIPapplies unchanged, so it builds the same CPython versions as the other platforms: cp310, cp311, cp312, cp313, cp314, cp314t, cp315, cp315t (there is no PyPy for Windows ARM64).Test plan
build_wheelsonly runs after a release on master, so I verified it in my fork with a build-only copy of the job (same cibuildwheel pin and env, no release/publish steps, one job per Python version) and ran the test suite (pytest --timeout=60 tests, without coverage) against each installed wheel, plus an x64 control lane with the same harness:https://github.com/johnnynunez/python-zeroconf/actions/runs/38311471960
.pyd, PE machine ARM64), and the tests imported the compiledzeroconffrom the installed wheel, not the source tree./proc, macOS-only,SO_REUSEPORT, multicast loopback on GitHub Windows runners); the xfail/xpass split varies between runs on both architectures.Side note, not changed here: when all versions are built in one job (as in
build_wheels), the cp314t/cp315t Windows wheels also pick up the cp314/cp315.pydfiles from the previous build. The current cp314twin_amd64wheel on PyPI has 36.pydfiles for this reason. The free-threaded interpreter doesn't load the extra files, so they are harmless, and the new ARM64 lane will behave the same way.