Mysterious issue to build pyFFTW with Numpy 2.0 on Windows

Hi, We have a strange issue with building pyFFTW with Numpy 2.0 on Windows. I observed it before when a build in the CI tried to use Numpy 2.0. The solution was to pin the Numpy version used for the build to <2.0. However, now I'm trying in this PR (https://github.com/pyFFTW/pyFFTW/pull/383) to make pyFFTW compatible with Numpy 2.0. With few simple changes, it works well on Linux and Macosx but not on Windows. The meaningful part of the log seems to be: INFO:root:"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -DPYFFTW_HAVE_DOUBLE=1 -DPYFFTW_HAVE_DOUBLE_OMP=0 -DPYFFTW_HAVE_DOUBLE_THREADS=1 -DPYFFTW_HAVE_DOUBLE_MULTITHREADING=1 -DPYFFTW_HAVE_DOUBLE_MPI=0 -DPYFFTW_HAVE_SINGLE=1 -DPYFFTW_HAVE_SINGLE_OMP=0 -DPYFFTW_HAVE_SINGLE_THREADS=1 -DPYFFTW_HAVE_SINGLE_MULTITHREADING=1 -DPYFFTW_HAVE_SINGLE_MPI=0 -DPYFFTW_HAVE_LONG=1 -DPYFFTW_HAVE_LONG_OMP=0 -DPYFFTW_HAVE_LONG_THREADS=1 -DPYFFTW_HAVE_LONG_MULTITHREADING=1 -DPYFFTW_HAVE_LONG_MPI=0 -DPYFFTW_HAVE_MPI=0 -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -ID:\a\pyFFTW\pyFFTW\include -ID:\a\pyFFTW\pyFFTW\pyfftw -IC:\Users\runneradmin\AppData\Local\Temp\pip-build-env-zhyzy1bf\overlay\Lib\site-packages\numpy\_core\include -IC:\Users\runneradmin\AppData\Local\Temp\cibw-run-g1feworz\cp310-win_amd64\build\venv\include -ID:\a\pyFFTW\pyFFTW\include\win -IC:\Users\runneradmin\AppData\Local\Temp\cibw-run-g1feworz\cp310-win_amd64\build\venv\include -IC:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget-cpython\python.3.10.11\tools\include -IC:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget-cpython\python.3.10.11\tools\Include -IC:\Users\runneradmin\AppData\Local\Temp\cibw-run-g1feworz\cp310-win_amd64\build\venv\include -IC:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget-cpython\python.3.10.11\tools\include -IC:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget-cpython\python.3.10.11\tools\Include "-IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\ATLMFC\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "-IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\ATLMFC\include" "-IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /Tcpyfftw\pyfftw.c /Fobuild\temp.win-amd64-cpython-310\Release\pyfftw\pyfftw.obj pyfftw.c D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2061: syntax error: identifier 'fftw_complex' D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2059: syntax error: ';' D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2143: syntax error: missing ')' before '*' D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2081: 'fftw_complex': name in formal parameter list illegal D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2143: syntax error: missing '{' before '*' D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2143: syntax error: missing ';' before '*' D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2059: syntax error: 'type' D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2059: syntax error: ')' D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): fatal error C1003: error count exceeds 100; stopping compilation error: command 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.40.33807\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2 I don't understand how Numpy 2.0 can lead to such error. But people in this list might be able to give good explanations and advice (?) Pierre -- Pierre Augier - CR CNRS http://www.legi.grenoble-inp.fr LEGI (UMR 5519) Laboratoire des Ecoulements Geophysiques et Industriels BP53, 38041 Grenoble Cedex, France tel:+33.4.56.52.86.16

The most probably change seems to me that NumPy now includes `complex.h`. But not sure that is the right direction or why it would lead to cryptic errors. - Sebastian On Wed, 2024-07-03 at 10:30 +0200, PIERRE AUGIER wrote:
Hi,
We have a strange issue with building pyFFTW with Numpy 2.0 on Windows. I observed it before when a build in the CI tried to use Numpy 2.0. The solution was to pin the Numpy version used for the build to <2.0.
However, now I'm trying in this PR (https://github.com/pyFFTW/pyFFTW/pull/383) to make pyFFTW compatible with Numpy 2.0. With few simple changes, it works well on Linux and Macosx but not on Windows.
The meaningful part of the log seems to be:
INFO:root:"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\bin\HostX86\x64\cl.e xe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -DPYFFTW_HAVE_DOUBLE=1 - DPYFFTW_HAVE_DOUBLE_OMP=0 -DPYFFTW_HAVE_DOUBLE_THREADS=1 - DPYFFTW_HAVE_DOUBLE_MULTITHREADING=1 -DPYFFTW_HAVE_DOUBLE_MPI=0 - DPYFFTW_HAVE_SINGLE=1 -DPYFFTW_HAVE_SINGLE_OMP=0 - DPYFFTW_HAVE_SINGLE_THREADS=1 -DPYFFTW_HAVE_SINGLE_MULTITHREADING=1 - DPYFFTW_HAVE_SINGLE_MPI=0 -DPYFFTW_HAVE_LONG=1 - DPYFFTW_HAVE_LONG_OMP=0 -DPYFFTW_HAVE_LONG_THREADS=1 - DPYFFTW_HAVE_LONG_MULTITHREADING=1 -DPYFFTW_HAVE_LONG_MPI=0 - DPYFFTW_HAVE_MPI=0 -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION - ID:\a\pyFFTW\pyFFTW\include -ID:\a\pyFFTW\pyFFTW\pyfftw - IC:\Users\runneradmin\AppData\Local\Temp\pip-build-env- zhyzy1bf\overlay\Lib\site-packages\numpy\_core\include - IC:\Users\runneradmin\AppData\Local\Temp\cibw-run-g1feworz\cp310- win_amd64\build\venv\include -ID:\a\pyFFTW\pyFFTW\include\win - IC:\Users\runneradmin\AppData\Local\Temp\cibw-run-g1few orz\cp310-win_amd64\build\venv\include - IC:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget- cpython\python.3.10.11\tools\include - IC:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget- cpython\python.3.10.11\tools\Include - IC:\Users\runneradmin\AppData\Local\Temp\cibw-run-g1feworz\cp310- win_amd64\build\venv\include - IC:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget- cpython\python.3.10.11\tools\include - IC:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget- cpython\python.3.10.11\tools\Include "-IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\include" "- IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\ATLMFC\include" "- IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\W indows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" "- IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" "- IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\include" "- IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.40.33807\ATLMFC\include" "- IC:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "- IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /Tcpyfftw\pyfftw.c /Fobuild\temp.win -amd64-cpython-310\Release\pyfftw\pyfftw.obj pyfftw.c D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2061: syntax error: identifier 'fftw_complex' D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2059: syntax error: ';' D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2143: syntax error: missing ')' before '*' D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2081: 'fftw_complex': name in formal parameter list illegal D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2143: syntax error: missing '{' before '*' D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2143: syntax error: missing ';' before '*' D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2059: syntax error: 'type' D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): error C2059: syntax error: ')' D:\a\pyFFTW\pyFFTW\pyfftw\fftw3.h(358): fatal error C1003: error count exceeds 100; stopping compilation error: command 'C:\\Program Files\\Microsoft Visual Studio\\2022\\Enterprise\\VC\\Tools\\MSVC\\14.40.33807\\bin\\HostX86\ \x64\\cl.exe' failed with exit code 2
I don't understand how Numpy 2.0 can lead to such error. But people in this list might be able to give good explanations and advice (?)
Pierre
-- Pierre Augier - CR CNRS http://www.legi.grenoble-inp.fr LEGI (UMR 5519) Laboratoire des Ecoulements Geophysiques et Industriels BP53, 38041 Grenoble Cedex, France tel:+33.4.56.52.86.16 _______________________________________________ NumPy-Discussion mailing list -- numpy-discussion@python.org To unsubscribe send an email to numpy-discussion-leave@python.org https://mail.python.org/mailman3/lists/numpy-discussion.python.org/ Member address: sebastian@sipsolutions.net
participants (2)
-
PIERRE AUGIER
-
Sebastian Berg