-
Notifications
You must be signed in to change notification settings - Fork 16
Refactor Windows on ARM build script #193
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
base: main
Are you sure you want to change the base?
Conversation
Use the standard repo structure for build.
Hi Mathew, Fixes in the Refactored Code:
|
Thanks - could you check I have made those changes as you intended them? By the way, I think you can make pull request to my branch with the changes directly. |
Hi Mathew, I was going through the bat script and noticed the environment variables are currently being set using inline quotes (e.g., set var="value"), which embeds the quotes inside the variable value. So the actual variable value is like: A safer and more robust approach would be:
This version quotes the values correctly and handles paths with spaces or special characters safely. Thanks! |
Current code correct? |
Yep, looks perfect now.👍 |
@Harishmcw - can you think of a way to avoid leaving behind a modified |
Hi @matthew-brett , To avoid leaving a modified pyproject.toml file, we can create a backup of it. Add this line after ln No.68:
This creates a backup of the original pyproject.toml file as pyproject.toml.bak before any modifications are made. This ensures that we have a copy of the original file. Add this line after ln No.117:
This line restores the original pyproject.toml file from the backup (pyproject.toml.bak). The /Y option automatically confirms the overwrite, ensuring that the original file is restored and no modified version is left behind. Let me know if you need any further clarification or adjustments! Thanks! |
How about the current code? |
Yes, the current code works as expected. However, it does leave behind the pyproject_64_32.toml file after the process. |
I don't see that - I think the |
Ah, you're right — I missed that move command. Thanks for pointing that out, and sorry for the confusion! |
It seems github has opened the windows11-arm64 runners for public repos like this. Want to add a workflow? |
Recording progress here. I've started a @vksukumarx worked out how to install LLVM directly via the installer (see the runner config). The current problem is that the
This is a known problem that will apparently be fixed in the next version of the runner : actions/partner-runner-images#84 I have tried using I have also tried to solve this by installing
but, no matter what directory I try, this always give me:
Someone else ran into the same error on the ARM64 image. There is an open request to install msys2 on the runner but it's not clear whether that will happen. Any other suggestions for a working native CMake welcome. Msys2 might also be a good way to get To make installs easier, I have also asked the team to install actions/partner-runner-images#95 although, as noted there, I have worked out how to do this in a workflow, with considerable experimentation. Suggestions? |
|
a170a34
to
eae33a4
Compare
Thanks - good thought - with that unblocked, I worked through the rest, the build is now passing. My remaining worries are:
|
Add GHA workflow for building on Windows on ARM.
e4a4758
to
6845b50
Compare
Hi @matthew-brett, To clarify:
|
For my own understanding - is this correct? The builds can be 32-bit or 64-bit builds - meaning - binaries for 32-bit for 64-bit architecture. Call this "binary-bits". In e.g. The builds can have 64- or 32-bit API interfaces to BLAS / LAPACK. Call this "API-bits". It doesn't make sense to have binary-bits = 32 and API-bits = 64. Windows on ARM (WoA) effectively only exists in 64-bit binary interface form. The current WoA build script builds binary-bits=64 and API-bits=32. The Is that right? |
I renamed |
Yes, that's correct — the current WoA build script builds with binary-bits = 64 and API-bits = 32 (i.e., INTERFACE64=0). |
Hi, what's the current roadblocks here? |
@mattip - is there anything you are waiting for here? If you agree this is the right approach, it could go in? But is there another tack you would prefer? |
Something seems off with the wheel zipped into the build artifact. I see a single wheel I assume the wheel can be used to build scipy/numpy? I am fine with merging this as-is, it would be nice to provide an win-arm64 wheel with 64-bit interfaces for NumPy, which would enable using larger arrays. |
It also shouldn't be a |
Hi @mattip
|
Use the standard repo structure for build.