Inconsistently getting error 1104 while building a clib (CFFI) extension on Windows

Only on Windows (I’ve been testing on Windows 10 22H2 build 19045.3930; MSVC 14.37.32822; the issue occurs on CPython 3.11.7 and PyPy3.10 7.3.15), only when installing my package by name from PyPI, I get a compilation error.

What makes this problem interesting is that I can install the very same file Pip claims to be using from PyPI, and it compiles without issue!

REM this does not work due to LNK1104 on libsphincs_sha2_128f_simple_clean.exp
python -m pip install -Iv "pypqc==0.0.6.post1"

REM this works without a hitch, however... why???
python -m pip install -Iv "https://files.pythonhosted.org/packages/93/5b/8d35d55549281b260445b652cef91b7e087472ba84a6c4504ba0fce06049/pypqc-0.0.6.post1.tar.gz"

What’s bizarre is that it compiles many other modules (McEliece, Falcon, Kyber, etc.) without a problem. I can’t imagine what’s causing the discrepancy here.

I only have that sdist uploaded, and that exact file is named by Pip at the start of the build, so “it’s grabbing a bdist wheel” just isn’t in the cards as an explanation. pip cache purge didn’t fix this. I kinda don’t have any other ideas, at this point.

I’ve run both commands several times to assure myself that this bizarre behavior wasn’t just a coincidence of a transient build failure. This behavior seems to be “real”, though it doesn’t show up on Rocky Linux 9 when I tested it there.

Does anyone have insights on what might be causing this build to only fail when PyPI’s used “properly”? If this were just a “build error”, I’d try other support channels, but this is a build error that’s showing up after I already tested an sdist and uploaded it to PyPI; only then does this error start showing up. I haven’t been able not to reproduce it yet (I only have the 1 Windows machine for testing at the moment), but I also haven’t been able to duplicate this error (which shows up only after the thing’s already compiled and linked like 7 different modules without any issue; see below) when building from the sdist or from the master source tree, either with pip install or python -m build.

Abridged Build Log
(.venv-cpython) C:\…>python -m pip install -Iv "pypqc==0.0.6.post1"
Using pip 23.3.2 from C:\…\.venv-cpython\Lib\site-packages\pip (python 3.11)
Collecting pypqc==0.0.6.post1
  Using cached pypqc-0.0.6.post1.tar.gz (710 kB)
  Running command pip subprocess to install build dependencies
  Collecting cffi>=1.14.5
    Using cached cffi-1.16.0-cp311-cp311-win_amd64.whl.metadata (1.5 kB)
  Collecting setuptools>=49.5.0
    Using cached setuptools-69.0.3-py3-none-any.whl.metadata (6.3 kB)
  Collecting pycparser (from cffi>=1.14.5)
    Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)
  Using cached cffi-1.16.0-cp311-cp311-win_amd64.whl (181 kB)
  Using cached setuptools-69.0.3-py3-none-any.whl (819 kB)
  Installing collected packages: setuptools, pycparser, cffi
  Successfully installed cffi-1.16.0 pycparser-2.21 setuptools-69.0.3
  Installing build dependencies ... done
  Running command Getting requirements to build wheel
[…]
  running egg_info
[…]
  Getting requirements to build wheel ... done
  Running command pip subprocess to install backend dependencies
  Collecting wheel
    Using cached wheel-0.42.0-py3-none-any.whl.metadata (2.2 kB)
  Using cached wheel-0.42.0-py3-none-any.whl (65 kB)
  Installing collected packages: wheel
  Successfully installed wheel-0.42.0
  Installing backend dependencies ... done
  Running command Preparing metadata (pyproject.toml)
[…]
  running dist_info
[…]
  Preparing metadata (pyproject.toml) ... done
Collecting cffi>=1.0.0 (from pypqc==0.0.6.post1)
  Obtaining dependency information for cffi>=1.0.0 from https://files.pythonhosted.org/packages/5a/c7/694814b3757878b29da39bc2f0cf9d20295f4c1e0a0bde7971708d5f23f8/cffi-1.16.0-cp311-cp311-win_amd64.whl.metadata
  Using cached cffi-1.16.0-cp311-cp311-win_amd64.whl.metadata (1.5 kB)
Collecting pycparser (from cffi>=1.0.0->pypqc==0.0.6.post1)
  Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)
Using cached cffi-1.16.0-cp311-cp311-win_amd64.whl (181 kB)
Building wheels for collected packages: pypqc
  Running command Building wheel for pypqc (pyproject.toml)
[…]
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build\lib.win-amd64-cpython-311
  creating build\lib.win-amd64-cpython-311\pqc
  copying pqc\demo.py -> build\lib.win-amd64-cpython-311\pqc
  copying pqc\_util.py -> build\lib.win-amd64-cpython-311\pqc
  copying pqc\__init__.py -> build\lib.win-amd64-cpython-311\pqc
  copying pqc\__main__.py -> build\lib.win-amd64-cpython-311\pqc
  running egg_info
[…]
  creating build\lib.win-amd64-cpython-311\pqc\kem
  copying pqc\kem\__init__.py -> build\lib.win-amd64-cpython-311\pqc\kem
  copying pqc\kem\hqc_128.py -> build\lib.win-amd64-cpython-311\pqc\kem
  copying pqc\kem\hqc_192.py -> build\lib.win-amd64-cpython-311\pqc\kem
  copying pqc\kem\hqc_256.py -> build\lib.win-amd64-cpython-311\pqc\kem
  copying pqc\kem\kyber1024.py -> build\lib.win-amd64-cpython-311\pqc\kem
  copying pqc\kem\kyber512.py -> build\lib.win-amd64-cpython-311\pqc\kem
  copying pqc\kem\kyber768.py -> build\lib.win-amd64-cpython-311\pqc\kem
  copying pqc\kem\mceliece348864.py -> build\lib.win-amd64-cpython-311\pqc\kem
  copying pqc\kem\mceliece460896.py -> build\lib.win-amd64-cpython-311\pqc\kem
  copying pqc\kem\mceliece6688128.py -> build\lib.win-amd64-cpython-311\pqc\kem
  copying pqc\kem\mceliece6960119.py -> build\lib.win-amd64-cpython-311\pqc\kem
  copying pqc\kem\mceliece8192128.py -> build\lib.win-amd64-cpython-311\pqc\kem
  creating build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\dilithium2.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\dilithium3.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\dilithium5.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\falcon_1024.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\falcon_512.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\sphincs_sha2_128f_simple.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\sphincs_sha2_128s_simple.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\sphincs_sha2_192f_simple.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\sphincs_sha2_192s_simple.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\sphincs_sha2_256f_simple.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\sphincs_sha2_256s_simple.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\sphincs_shake_128f_simple.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\sphincs_shake_128s_simple.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\sphincs_shake_192f_simple.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\sphincs_shake_192s_simple.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\sphincs_shake_256f_simple.py -> build\lib.win-amd64-cpython-311\pqc\sign
  copying pqc\sign\sphincs_shake_256s_simple.py -> build\lib.win-amd64-cpython-311\pqc\sign
  running build_ext
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libsphincs_shake_256s_simple_clean.c'
  creating build\temp.win-amd64-cpython-311
  creating build\temp.win-amd64-cpython-311\Release
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libsphincs_shake_256s_simple_clean.c'
  already up-to-date
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libsphincs_shake_192s_simple_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libsphincs_shake_192f_simple_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libsphincs_shake_128s_simple_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libsphincs_shake_128f_simple_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libsphincs_sha2_256s_simple_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libsphincs_sha2_256f_simple_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libsphincs_sha2_192s_simple_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libsphincs_sha2_192f_simple_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libsphincs_sha2_128s_simple_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libsphincs_sha2_128f_simple_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libmceliece8192128f_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libmceliece6960119f_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libmceliece6688128f_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libmceliece460896f_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libmceliece348864f_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libkyber1024_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libkyber768_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libkyber512_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libhqc_256_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libhqc_192_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libhqc_128_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libfalcon_1024_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libfalcon_512_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libdilithium5_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libdilithium3_clean.c'
  generating cffi module 'build\\temp.win-amd64-cpython-311\\Release\\pqc._lib.libdilithium2_clean.c'
  building 'pqc._lib.libdilithium2_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libdilithium2_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium2/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium2/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium2/clean/ntt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium2/clean/packing.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium2/clean/poly.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium2/clean/polyvec.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium2/clean/reduce.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium2/clean/rounding.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium2/clean/sign.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium2/clean/symmetric-shake.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libdilithium2_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libdilithium2_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium2/clean/../../../common\libdilithium2_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium2/clean/../../../common\libdilithium2_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium2/clean/../../../common\libdilithium2_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libdilithium3_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libdilithium3_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium3/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium3/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium3/clean/ntt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium3/clean/packing.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium3/clean/poly.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium3/clean/polyvec.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium3/clean/reduce.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium3/clean/rounding.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium3/clean/sign.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium3/clean/symmetric-shake.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libdilithium3_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libdilithium3_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium3/clean/../../../common\libdilithium3_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium3/clean/../../../common\libdilithium3_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium3/clean/../../../common\libdilithium3_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libdilithium5_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libdilithium5_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium5/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium5/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium5/clean/ntt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium5/clean/packing.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium5/clean/poly.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium5/clean/polyvec.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium5/clean/reduce.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium5/clean/rounding.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium5/clean/sign.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium5/clean/symmetric-shake.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libdilithium5_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libdilithium5_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium5/clean/../../../common\libdilithium5_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium5/clean/../../../common\libdilithium5_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/dilithium5/clean/../../../common\libdilithium5_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libfalcon_512_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libfalcon_512_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-512/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-512/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-512/clean/codec.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-512/clean/common.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-512/clean/fft.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-512/clean/fpr.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-512/clean/keygen.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-512/clean/pqclean.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-512/clean/rng.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-512/clean/sign.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-512/clean/vrfy.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libfalcon_512_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libfalcon_512_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-512/clean/../../../common\libfalcon_512_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-512/clean/../../../common\libfalcon_512_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-512/clean/../../../common\libfalcon_512_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libfalcon_1024_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libfalcon_1024_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-1024/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-1024/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-1024/clean/codec.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-1024/clean/common.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-1024/clean/fft.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-1024/clean/fpr.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-1024/clean/keygen.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-1024/clean/pqclean.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-1024/clean/rng.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-1024/clean/sign.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-1024/clean/vrfy.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libfalcon_1024_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libfalcon_1024_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-1024/clean/../../../common\libfalcon_1024_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-1024/clean/../../../common\libfalcon_1024_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/falcon-1024/clean/../../../common\libfalcon_1024_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libhqc_128_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libhqc_128_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/code.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/fft.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/gf.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/gf2x.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/hqc.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/kem.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/parsing.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/reed_muller.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/reed_solomon.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/shake_ds.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/shake_prng.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/vector.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libhqc_128_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libhqc_128_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/../../../common\libhqc_128_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/../../../common\libhqc_128_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-128/clean/../../../common\libhqc_128_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libhqc_192_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libhqc_192_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/code.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/fft.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/gf.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/gf2x.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/hqc.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/kem.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/parsing.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/reed_muller.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/reed_solomon.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/shake_ds.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/shake_prng.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/vector.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libhqc_192_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libhqc_192_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/../../../common\libhqc_192_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/../../../common\libhqc_192_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-192/clean/../../../common\libhqc_192_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libhqc_256_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libhqc_256_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/code.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/fft.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/gf.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/gf2x.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/hqc.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/kem.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/parsing.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/reed_muller.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/reed_solomon.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/shake_ds.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/shake_prng.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/vector.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libhqc_256_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libhqc_256_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/../../../common\libhqc_256_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/../../../common\libhqc_256_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/hqc-256/clean/../../../common\libhqc_256_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libkyber512_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libkyber512_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber512/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber512/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber512/clean/cbd.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber512/clean/indcpa.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber512/clean/kem.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber512/clean/ntt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber512/clean/poly.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber512/clean/polyvec.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber512/clean/reduce.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber512/clean/symmetric-shake.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber512/clean/verify.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libkyber512_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libkyber512_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber512/clean/../../../common\libkyber512_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber512/clean/../../../common\libkyber512_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber512/clean/../../../common\libkyber512_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libkyber768_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libkyber768_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber768/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber768/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber768/clean/cbd.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber768/clean/indcpa.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber768/clean/kem.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber768/clean/ntt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber768/clean/poly.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber768/clean/polyvec.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber768/clean/reduce.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber768/clean/symmetric-shake.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber768/clean/verify.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libkyber768_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libkyber768_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber768/clean/../../../common\libkyber768_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber768/clean/../../../common\libkyber768_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber768/clean/../../../common\libkyber768_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libkyber1024_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libkyber1024_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber1024/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber1024/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber1024/clean/cbd.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber1024/clean/indcpa.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber1024/clean/kem.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber1024/clean/ntt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber1024/clean/poly.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber1024/clean/polyvec.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber1024/clean/reduce.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber1024/clean/symmetric-shake.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber1024/clean/verify.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libkyber1024_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libkyber1024_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber1024/clean/../../../common\libkyber1024_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber1024/clean/../../../common\libkyber1024_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/kyber1024/clean/../../../common\libkyber1024_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libmceliece348864f_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libmceliece348864f_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/benes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/bm.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/controlbits.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/crypto_int16.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/crypto_int32.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/crypto_uint16.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/crypto_uint32.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/crypto_uint64.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/decrypt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/encrypt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/gf.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/operations.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/pk_gen.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/root.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/sk_gen.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/synd.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/transpose.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/util.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libmceliece348864f_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libmceliece348864f_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/../../../common\libmceliece348864f_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/../../../common\libmceliece348864f_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece348864f/clean/../../../common\libmceliece348864f_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libmceliece460896f_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libmceliece460896f_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/benes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/bm.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/controlbits.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/crypto_int16.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/crypto_int32.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/crypto_uint16.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/crypto_uint32.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/crypto_uint64.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/decrypt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/encrypt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/gf.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/operations.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/pk_gen.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/root.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/sk_gen.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/synd.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/transpose.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/util.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libmceliece460896f_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libmceliece460896f_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/../../../common\libmceliece460896f_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/../../../common\libmceliece460896f_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece460896f/clean/../../../common\libmceliece460896f_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libmceliece6688128f_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libmceliece6688128f_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/benes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/bm.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/controlbits.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/crypto_int16.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/crypto_int32.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/crypto_uint16.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/crypto_uint32.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/crypto_uint64.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/decrypt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/encrypt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/gf.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/operations.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/pk_gen.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/root.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/sk_gen.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/synd.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/transpose.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/util.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libmceliece6688128f_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libmceliece6688128f_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/../../../common\libmceliece6688128f_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/../../../common\libmceliece6688128f_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6688128f/clean/../../../common\libmceliece6688128f_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libmceliece6960119f_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libmceliece6960119f_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/benes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/bm.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/controlbits.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/crypto_int16.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/crypto_int32.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/crypto_uint16.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/crypto_uint32.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/crypto_uint64.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/decrypt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/encrypt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/gf.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/operations.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/pk_gen.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/root.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/sk_gen.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/synd.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/transpose.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/util.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libmceliece6960119f_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libmceliece6960119f_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/../../../common\libmceliece6960119f_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/../../../common\libmceliece6960119f_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece6960119f/clean/../../../common\libmceliece6960119f_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libmceliece8192128f_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libmceliece8192128f_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/../../../common/fips202.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/benes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/bm.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/controlbits.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/crypto_int16.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/crypto_int32.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/crypto_uint16.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/crypto_uint32.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/crypto_uint64.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/decrypt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/encrypt.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/gf.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/operations.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/pk_gen.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/root.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/sk_gen.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/synd.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/transpose.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/util.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libmceliece8192128f_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libmceliece8192128f_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/../../../common\libmceliece8192128f_clean.lib
     Creating library build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/../../../common\libmceliece8192128f_clean.lib and object build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_kem/mceliece8192128f/clean/../../../common\libmceliece8192128f_clean.exp
  Generating code
  Finished generating code
  building 'pqc._lib.libsphincs_sha2_128f_simple_clean' extension
[…]
  "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\…\.venv-cpython\libs "/LIBPATH:C:\Program Files\Python311\libs" "/LIBPATH:C:\Program Files\Python311" /LIBPATH:C:\…\.venv-cpython\PCbuild\amd64 "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.37.32822\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" Advapi32.lib /EXPORT:PyInit_libsphincs_sha2_128f_simple_clean build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/../../../common/randombytes.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/../../../common/sha2.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/address.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/context_sha2.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/fors.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/hash_sha2.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/merkle.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/sign.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/thash_sha2_simple.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/utils.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/utilsx1.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/wots.obj build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/wotsx1.obj build\temp.win-amd64-cpython-311\Release\build\temp.win-amd64-cpython-311\Release\pqc._lib.libsphincs_sha2_128f_simple_clean.obj /OUT:build\lib.win-amd64-cpython-311\pqc\_lib\libsphincs_sha2_128f_simple_clean.pyd /IMPLIB:build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/../../../common\libsphincs_sha2_128f_simple_clean.lib
  LINK : fatal error LNK1104: cannot open file 'build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/../../../common\libsphincs_sha2_128f_simple_clean.exp'
  error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.37.32822\\bin\\HostX86\\x64\\link.exe' failed with exit code 1104
  error: subprocess-exited-with-error

  × Building wheel for pypqc (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> See above for output.

  note: This error originates from a subprocess, and is likely not a problem with pip.
  full command: 'C:\…\.venv-cpython\Scripts\python.exe' 'C:\…\.venv-cpython\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py' build_wheel 'C:\…\AppData\Local\Temp\tmp9_e4u_p_'
  cwd: C:\…\AppData\Local\Temp\pip-install-0jnzxlrz\pypqc_9a61973c9cb44604a2f4fd68011db0a1
  Building wheel for pypqc (pyproject.toml) ... error
  ERROR: Failed building wheel for pypqc
Failed to build pypqc
ERROR: Could not build wheels for pypqc, which is required to install pyproject.toml-based projects

You seem to be running into a path length limitation (~256 characters). The longer module name, as compared to those that succeeded, is the reason that the build fails at that point.

The MAX_PATH limitation can be removed when installing Python (as an option at the end of the installation) or by modifying the registry directly: Removing the MAX_PATH Limitation.

2 Likes

This is true. Unfortunately, link.exe doesn’t support longer paths, so removing the restriction won’t help.

I’m pretty sure pip has a way to override the build location it uses when installing. That would be my recommendation (the convenient fix is to publish wheels along with the sdist, so that only you as the publisher have to get it right). It may be just be setting $env:TEMP before you start, but hopefully there’s a way to override all the extra subdirectories that get added, which are the real problem.

1 Like

Not generically it doesn’t: On install, add a pep517 backend agnostic and documented option to set a build directory · Issue #12461 · pypa/pip · GitHub

As you say, usually setting TEMP works.

1 Like

Hmm. Looks like that was deprecated in version 20.2 and is now totally removed.

Fortunately, it looks like the library it calls can be configured via environment variables; set "TMPDIR=C:\temp" fixed the build in my case.

Thanks for the help; I would not have realized this on my own, given that the error didn’t occur when using the same tool to build directly from the sdist.

Tangent about setuptools

In this case, the filename itself (plus the randomized prefixes Pip adds) just became inherently so long that I couldn’t fit it legally inside any subdirectory of my user folder…

build\temp.win-amd64-cpython-311\Release\Modules/PQClean/crypto_sign/sphincs-sha2-128f-simple/clean/../../../common\libsphincs_sha2_128f_simple_clean.exp

Even with set "TMPDIR=%USERPROFILE%\TMP", compilation still failed… :melting_face:

The path, however, had been inappropriately inflated — obviously, ../../../common shouldn’t be there — looking into that a bit more, it looks like setuptools assumes that the first item in objects passed to link() is the path it should use for /IMPLIB, which would be reasonable… except that before that line runs, it alphabetizes them first, rather than respecting the original order passed in by CFFI.

I tried patching setuptools to not sort these, just to see if the unmolested path would have been short enough for the default mkdtemp() behavior to work, but I had a hard time getting those changes to apply to pypa/build. (Maybe there was an issue with vendoring; I’m out of energy troubleshooting that today, though.)


Indeed; you’re sadly 100% correct. Once I searched around about that, I found the “upstream” thread about this:

https://developercommunity.visualstudio.com/t/clexe-compiler-driver-cannot-handle-long-file-path/975889

1 Like

A normal build these days is going to run in a new isolated environment, and will redownload the latest public release of setuptools rather than your patched one. Your options here are:

  • disable isolated builds (which probably won’t repro the scenario properly)
  • use a tool like simpleindex to substitute PyPI’s setuptools with your own patched wheel (overriding the index-url should affect build tools)
  • I believe you can set PIP_FIND_LINKS and PIP_NO_INDEX to override pip’s isolated build tools install to point at a local directory, though I’m not sure if build has equivalents

One other trick you may be able to pull is defining the setuptools builddir(?) option in setup.cfg/distutils.cfg. Provided the build itself finds the config file (which IIRC means in your user directory, or named in DIST_EXTRA_CONFIG environment variable), you should be able to smuggle the build directory past pip and setuptools will find it directly - this is the moral equivalent of passing the option on the command line directly to setuptools, which obviously we can’t do anymore. That’s just a starting point, not specific instructions, but I’m sure you’ll figure it out if you go this way. It’s not really suitable for distribution though, and probably is considered internal details these days and will eventually break.

What I’d tried is editing pyproject.toml to define my modified setuptools as a build dependency:

…
[build-system]
requires = [
    'cffi >= 1.14.5',
    'setuptools @ git+https://github.com/JamesTheAwesomeDude/pypa-setuptools.git@site-patches/pypqc',
]

It seemed that pypa/build was picking this up and using it for the build; it claimed to be—

Abridged build log
(.venv-cpython) C:\…>python -m pip install -Iv "pypqc == 0.0.6.1-dev2" --extra-index-url=https://test.pypi.org/simple/
Using pip 23.3.2 from C:\…\.venv-cpython\Lib\site-packages\pip (python 3.11)
Looking in indexes: https://pypi.org/simple, https://test.pypi.org/simple/
Collecting pypqc==0.0.6.1-dev2
  Using cached https://test-files.pythonhosted.org/packages/1f/94/5f8a5ded65dc627bb40e09b531fb505038e119b895f6f7f29d2a64f662d6/pypqc-0.0.6.1.dev2.tar.gz (786 kB)
  Running command pip subprocess to install build dependencies
  Looking in indexes: https://pypi.org/simple, https://test.pypi.org/simple/
  Collecting setuptools@ git+https://github.com/JamesTheAwesomeDude/pypa-setuptools.git@site-patches/pypqc
    Cloning https://github.com/JamesTheAwesomeDude/pypa-setuptools.git (to revision site-patches/pypqc) to C:\temp\pip-install-na3b2r6k\setuptools_9ae4bf4f75f24663b1383c1f851b868e
    Running command git clone --filter=blob:none --quiet https://github.com/JamesTheAwesomeDude/pypa-setuptools.git 'C:\temp\pip-install-na3b2r6k\setuptools_9ae4bf4f75f24663b1383c1f851b868e'
    error: RPC failed; curl 56 Failure when receiving data from the peer
    Running command git checkout -b site-patches/pypqc --track origin/site-patches/pypqc
    branch 'site-patches/pypqc' set up to track 'origin/site-patches/pypqc'.
    Switched to a new branch 'site-patches/pypqc'
    Resolved https://github.com/JamesTheAwesomeDude/pypa-setuptools.git to commit 559a247edbd8290f88bef15d5cc0fe9be3b74985
    Getting requirements to build wheel: started
    Getting requirements to build wheel: finished with status 'done'
    Installing backend dependencies: started
    Installing backend dependencies: finished with status 'done'
    Preparing metadata (pyproject.toml): started
    Preparing metadata (pyproject.toml): finished with status 'done'
  Collecting cffi>=1.14.5
    Using cached cffi-1.16.0-cp311-cp311-win_amd64.whl.metadata (1.5 kB)
  Collecting pycparser (from cffi>=1.14.5)
    Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)
  Using cached cffi-1.16.0-cp311-cp311-win_amd64.whl (181 kB)
  Building wheels for collected packages: setuptools
    Building wheel for setuptools (pyproject.toml): started
    Building wheel for setuptools (pyproject.toml): finished with status 'done'
    Created wheel for setuptools: filename=setuptools-69.0.3+site.post20240125-py3-none-any.whl size=825682 sha256=6e5a12dc7d9a8922feedcd1e4c4ea078eecd2b33336153dcfda52f6d061c8dbe
    Stored in directory: C:\temp\pip-ephem-wheel-cache-vpv7o_bj\wheels\47\ac\41\0395e9d2d64d3a96a1586b1c9079c1430e98c8aca04647bd7e
  Successfully built setuptools
  Installing collected packages: setuptools, pycparser, cffi
  Successfully installed cffi-1.16.0 pycparser-2.21 setuptools-69.0.3+site.post20240125
  Installing build dependencies ... done
  Running command Getting requirements to build wheel
[…]

—but none of the print calls I injected for validation were actually showing up later in the build log.

Next time I take a crack at this, I’ll definitely try a non-isolated build. (As for reproducibility, now that I know it’s a path length issue, I can just manually create a path with a padded name to make up the difference; or just inspect the link.exe call in the build log to verify that it’s not being called on a path that inappropriately includes ../../../common before I push it to Test PyPI to actually try for the repro.)

(post deleted by author)