Open
Description
The Windows static builds currently have multiple object files defining libffi symbols. As the build log demonstrates:
9>Lib:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\bin\HostX86\x64\Lib.exe /OUT:"C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCbuild\amd64\_ctypes.lib" libffi.lib /LIBPATH:"C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\libffi\\" /NOLOGO /MACHINE:X64 /LTCG /EXPORT:DllGetClassObject,PRIVATE /EXPORT:DllCanUnloadNow,PRIVATE "C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\obj\39amd64_Release\_ctypes\python_nt.res"
"C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\obj\39amd64_Release\_ctypes\_ctypes.obj"
"C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\obj\39amd64_Release\_ctypes\callbacks.obj"
"C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\obj\39amd64_Release\_ctypes\callproc.obj"
"C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\obj\39amd64_Release\_ctypes\cfield.obj"
"C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\obj\39amd64_Release\_ctypes\malloc_closure.obj"
"C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\obj\39amd64_Release\_ctypes\stgdict.obj"
18>Lib:
select.vcxproj -> C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCbuild\amd64\select.lib
FinalizeBuildStatus:
Deleting file "C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\obj\39amd64_Release\select\select.tlog\unsuccessfulbuild".
Touching "C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\obj\39amd64_Release\select\select.tlog\select.lastbuildstate".
18>Done Building Project "C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\select.vcxproj" (Build target(s)).
24>Link:
LINK : /LTCG specified but no code generation required; remove /LTCG from the link command line to improve linker performance
9>malloc_closure.obj : warning LNK4006: ffi_closure_alloc already defined in libffi.lib(closures.obj); second definition ignored [C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\_ctypes.vcxproj]
9>malloc_closure.obj : warning LNK4006: ffi_closure_free already defined in libffi.lib(closures.obj); second definition ignored [C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\_ctypes.vcxproj]
9>cfield.obj : warning LNK4006: ffi_type_void already defined in libffi.lib(types.obj); second definition ignored [C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\_ctypes.vcxproj]
9>cfield.obj : warning LNK4006: ffi_type_uint8 already defined in libffi.lib(types.obj); second definition ignored [C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\_ctypes.vcxproj]
9>cfield.obj : warning LNK4006: ffi_type_sint8 already defined in libffi.lib(types.obj); second definition ignored [C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\_ctypes.vcxproj]
9>cfield.obj : warning LNK4006: ffi_type_uint16 already defined in libffi.lib(types.obj); second definition ignored [C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\_ctypes.vcxproj]
9>cfield.obj : warning LNK4006: ffi_type_sint16 already defined in libffi.lib(types.obj); second definition ignored [C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\_ctypes.vcxproj]
9>cfield.obj : warning LNK4006: ffi_type_uint32 already defined in libffi.lib(types.obj); second definition ignored [C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\_ctypes.vcxproj]
9>cfield.obj : warning LNK4006: ffi_type_sint32 already defined in libffi.lib(types.obj); second definition ignored [C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\_ctypes.vcxproj]
9>cfield.obj : warning LNK4006: ffi_type_uint64 already defined in libffi.lib(types.obj); second definition ignored [C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\_ctypes.vcxproj]
9>cfield.obj : warning LNK4006: ffi_type_sint64 already defined in libffi.lib(types.obj); second definition ignored [C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\_ctypes.vcxproj]
9>cfield.obj : warning LNK4006: ffi_type_float already defined in libffi.lib(types.obj); second definition ignored [C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\_ctypes.vcxproj]
9>cfield.obj : warning LNK4006: ffi_type_double already defined in libffi.lib(types.obj); second definition ignored [C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\_ctypes.vcxproj]
9>cfield.obj : warning LNK4006: ffi_type_pointer already defined in libffi.lib(types.obj); second definition ignored [C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCBuild\_ctypes.vcxproj]
_ctypes.vcxproj -> C:\Users\gps\AppData\Local\Temp\python-build-3uvcddyb\Python-3.9.2\PCbuild\amd64\_ctypes.lib
9>FinalizeBuildStatus:
This can cause linking failures unless /FORCE:MULTIPLE
is used.
Ideally we would build with LNK4006 as a hard error. Although this may be difficult given how many errors we're seeing and how much we're abusing the Visual Studio build system.
This is related to indygreg/PyOxidizer#360 (but we can work around this issue in PyOxidizer by using /FORCE:MULTIPLE
).