Skip to content

Conversation

@K20shores
Copy link
Contributor

@K20shores K20shores commented Dec 11, 2025

Description

In response to the conversation about #5883 in #5919, I'm adding tests for Windows ARM runners, both with and without Mingw. This uses the windows-arm-11 runner.

Fortunately, I didn't see the same build error reported in #5883. These are still good tests to add, though. In my testing, the issue was present in pybind11 3.0.0, but it was fixed when updating to 3.0.1. It appears that #5757 includes a fix that already addresses #5883.

For mingw under windows arm with clang, I've had to update the visibility tests. I believe it's scoped appropriately, but I may be wrong.

Suggested changelog entry:

  • Add CI tests for windows-11-arm with clang/MSVC (currently python 3.13), windows-11-arm with clang/mingw (currently python 3.12)

📚 Documentation preview 📚: https://pybind11--5932.org.readthedocs.build/

@K20shores K20shores requested a review from henryiii as a code owner December 11, 2025 20:55
@K20shores
Copy link
Contributor Author

@rwgk @baburton I've added this PR in response to comments on #5919. It seems the issue has already been fixed in the latest version of pybind11 (3.0.1). At least, it fixes it for me. @baburton, if you try 3.0.1 do you see the same error?

K20shores and others added 5 commits December 11, 2025 15:52
Rename the Windows ARM clang jobs to windows_arm_clang_msvc and windows_arm_clang_msys2 and adjust their display names to clang-msvc / clang-msys2. The first runs clang against the MSVC/Windows SDK toolchain and python.org CPython for Windows ARM, while the second runs clang inside the MSYS2/MinGW-w64 CLANGARM64 environment with MSYS2 Python.

Using clearly distinguished job names makes it easier to discuss failures and behavior in each environment without ambiguity, both in logs and in PR review discussions.
Limit the windows_arm_clang_msvc job to Python 3.13 and the windows_arm_clang_msys2 job to Python 3.12 to stay within our constrained GitHub Actions resources. Keep both jobs using a matrix over os and python so their structure stays aligned and it remains easy to expand coverage when needed.
@rwgk
Copy link
Collaborator

rwgk commented Dec 13, 2025

I worked on this PR with the help of Cursor. Initially I wasn't clear about the nature of the differences between the two new jobs.

After adding two commits, I asked Cursor for it's opinion, this came back (and I agree):

This looks merge-ready to me.

  • CI changes: The two Windows ARM jobs are clearly named (windows_arm_clang_msvc / windows_arm_clang_msys2), structurally aligned, and trimmed to a single Python each to respect free GHA limits while keeping the matrix shape extensible.

  • Tests/requirements: The NumPy pinning now cleanly separates ARM64 CPython (2.3.0 for ≥3.11) from non‑ARM64, which matches the practical wheel availability story.

  • XFAIL: The unnamed‑namespace XFAIL condition now correctly covers “any libc++” (including Windows ARM MSYS2) plus non‑Windows Clang, which aligns with the environments where the issue is known.

@K20shores could you please review the two commits I added (I also merged master)?

  • commit 832a6ab — Clarify Windows ARM clang job naming
  • commit 40a9321 — Reduce Windows ARM clang matrix size

@baburton could you please confirm that your original issue is resolved already on master (or 3.0.1)?

@K20shores
Copy link
Contributor Author

@rwgk I left a comment on commit 40a9321. Everything looks good to me, unless you think my comment there requires more changes

…sion is determined by the msys2/setup-msys2 action and cannot be changed
@rwgk
Copy link
Collaborator

rwgk commented Dec 13, 2025

@rwgk I left a comment on commit 40a9321. Everything looks good to me, unless you think my comment there requires more changes

I added commit c727eef

As soon as I see that the windows_arm_clang_msys2 job succeeds I'l merge this PR. Thanks!

@rwgk
Copy link
Collaborator

rwgk commented Dec 13, 2025

Huh, what's that error?

  error: clangarm64: signature from "Christoph Reiter (MSYS2 development key) <[email protected]>" is invalid
  error: failed to synchronize all databases (invalid or corrupted database (PGP signature))
  Error: The process 'C:\Windows\system32\cmd.exe' failed with exit code 1

@rwgk rwgk closed this Dec 13, 2025
@rwgk rwgk reopened this Dec 13, 2025
@rwgk
Copy link
Collaborator

rwgk commented Dec 13, 2025

@rwgk rwgk merged commit 41a4d0c into pybind:master Dec 13, 2025
76 of 171 checks passed
@baburton
Copy link

baburton commented Dec 13, 2025

@baburton could you please confirm that your original issue is resolved already on master (or 3.0.1)?

I'm out of town for the weekend and not somewhere that I can readily test this; however, looking at the relevant change in the sources between 3.0.0 and 3.0.1 (pybind11 no longer switches on hidden visibility under windows), I would fully expect that this resolves the problem. (I experienced my build failure under 3.0.0, not 3.0.1.) I should be able to test this properly next week.

@github-actions github-actions bot added the needs changelog Possibly needs a changelog entry label Dec 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs changelog Possibly needs a changelog entry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants