JamesTheAwesomeDude / pypqc

Attempt to expose Wiggers and Stebila's PQClean via Python CFFI
Other
0 stars 1 forks source link

Fix CI for Windows on ARM #21

Open JamesTheAwesomeDude opened 5 months ago

JamesTheAwesomeDude commented 5 months ago

Currently, cibuildwheel chokes on the Windows ARM

https://github.com/JamesTheAwesomeDude/pypqc/actions/runs/7732081525/job/21082534390#step:6:6743

repairing C:\Users\runneradmin\AppData\Local\Temp\cibw-run-1w7x52kl\cp39-win_arm64\built_wheel\pypqc-0.0.6.2rc3-cp39-abi3-win_arm64.whl finding DLL dependencies FileNotFoundError: Unable to find library: vcruntime140.dll

JamesTheAwesomeDude commented 4 months ago

Technically, this looks like a problem with delvewheel.

However, now I'm wondering if delvewheel is entirely broken anyway, as it's not attempting to include that DLL on AMD64:

https://github.com/JamesTheAwesomeDude/pypqc/actions/runs/7733488201/job/21085686387#step:7:4051

Repairing wheel... + delvewheel repair -w C:\Users\runneradmin\AppData\Local\Temp\cibw-run-a31gm3va\cp37-win_amd64\repaired_wheel C:\Users\runneradmin\AppData\Local\Temp\cibw-run-a31gm3va\cp37-win_amd64\built_wheel\pypqc-0.0.6.2rc3-cp37-abi3-win_amd64.whl repairing C:\Users\runneradmin\AppData\Local\Temp\cibw-run-a31gm3va\cp37-win_amd64\built_wheel\pypqc-0.0.6.2rc3-cp37-abi3-win_amd64.whl finding DLL dependencies no external dependencies are needed wheel copied to C:\Users\runneradmin\AppData\Local\Temp\cibw-run-a31gm3va\cp37-win_amd64\repaired_wheel\pypqc-0.0.6.2rc3-cp37-abi3-win_amd64.whl

It might be worth getting a 100% fresh AMD64 Windows installation, putting a fresh Python installation on it, then installing that wheel and seeing if it works without the user having to install the VC Redistributable manually. (I don't remember if the CPython Windows installer includes that, or what; I don't see the DLL in any of the Windows wheels, yet they still "work on my machine"... I guess a remote possibility is the VC Redistributable is getting statically linked into those fat .pyd files?)

If it works, then we might want to just skip the repairwheel step on Windows, since it looks like it might be a no-op for CPython on Windows; and PyPy doesn't have any ABI3 on any platform anyway, so it's not needed there...