Skip to content

Add Windows on ARM (WoA) Support for CI and Wheel Building #1043

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

RS-Gits
Copy link

@RS-Gits RS-Gits commented Jul 7, 2025

Windows on ARM (WoA) devices are steadily becoming more common, yet many Python packages still lack prebuilt wheels and CI coverage for this platform.

With GitHub Actions now providing native WoA runners (windows-11-arm), this change introduces:

  • Adds CI support for WoA using GitHub's windows-11-arm runner
  • Configures Rust target triple for ARM64: aarch64-pc-windows-msvc
  • Updates windows job matrix to include ARM64-specific logic while excluding unsupported Python versions (e.g., 3.8)
  • Updates wheel-builder.yml to produce WoA-compatible wheels

Copy link
Member

@reaperhulk reaperhulk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the contribution, a few small comments, although we may want to hold off on merge for this until actions/partner-runner-images#77 lands.

@@ -45,16 +45,20 @@ jobs:
CARGO_TARGET_DIR: ${{ format('{0}/src/_bcrypt/target/', github.workspace) }}

windows:
runs-on: windows-latest
runs-on: ${{ matrix.WINDOWS.ARCH == 'arm64' && 'windows-11-arm' || 'windows-latest' }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rather than sticking logic in here I'd prefer we just add a new key (perhaps IMAGE) to the windows matrix entries so this can just be ${{ matrix.WINDOWS.RUNNER }}. That will add an extra windows-latest but I prefer that.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the review! I’ve updated the Windows matrix to use a RUNNER key as suggested, and removed the inline runs-on logic accordingly.

@@ -64,6 +68,10 @@ jobs:
with:
python-version: ${{ matrix.PYTHON.VERSION }}
architecture: ${{ matrix.WINDOWS.ARCH }}
- uses: dtolnay/rust-toolchain@b3b07ba8b418998c39fb20f53e8b695cdcc8de1b
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this still necessary? Have they still not fixed the windows-arm runners to have rust in the default image? Looks like no: actions/partner-runner-images#77 (comment)

Having a partner manage your GitHub-hosted CI images is not a great choice GitHub...

I'm weakly against merging this until they fix their core image.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm pinging the maintainers of runner image . New release should happen very soon.

@@ -222,13 +222,14 @@ jobs:

windows:
needs: [sdist]
runs-on: windows-latest
runs-on: ${{ matrix.WINDOWS.ARCH == 'arm64' && 'windows-11-arm' || 'windows-latest' }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment as the other runs-on 😄

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

Successfully merging this pull request may close these issues.

3 participants