microsoft / vcpkg

C++ Library Manager for Windows, Linux, and MacOS
MIT License
22.2k stars 6.16k forks source link

[openssl] Build error on x64-windows #38723

Open Advik-B opened 1 month ago

Advik-B commented 1 month ago

Copy issue body from P:/Github/Discord_Bot/deps/vcpkg/installed/vcpkg/issue_body.md

Package: openssl:x64-windows@3.3.0#1

Host Environment

To Reproduce

vcpkg install dpp

Failure logs

-- Using cached openssl-openssl-openssl-3.3.0.tar.gz.
-- Cleaning sources at P:/Github/Discord_Bot/deps/vcpkg/buildtrees/openssl/src/nssl-3.3.0-961d78b8a1.clean. Use --editable to skip cleaning for the packages you specify.
-- Extracting source P:/Github/Discord_Bot/deps/vcpkg/downloads/openssl-openssl-openssl-3.3.0.tar.gz
-- Applying patch cmake-config.patch
-- Applying patch command-line-length.patch
-- Applying patch script-prefix.patch
-- Applying patch windows/install-layout.patch
-- Applying patch windows/install-pdbs.patch
-- Applying patch unix/android-cc.patch
-- Applying patch unix/move-openssldir.patch
-- Applying patch unix/no-empty-dirs.patch
-- Applying patch unix/no-static-libs-for-shared.patch
-- Using source at P:/Github/Discord_Bot/deps/vcpkg/buildtrees/openssl/src/nssl-3.3.0-961d78b8a1.clean
-- Found external ninja('1.11.0').
-- Getting CMake variables for x64-windows
-- Getting CMake variables for x64-windows
-- Prerunning x64-windows-dbg
-- Building x64-windows-dbg
-- Restarting build without parallelism
CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:134 (message):
    Command failed: "D:/Programs/Visual Studio/VC/Tools/MSVC/14.39.33519/bin/Hostx64/x64/nmake.exe" /NOLOGO /G /U /F makefile install_dev install_modules INSTALL_PDBS=ON
    Working Directory: P:/Github/Discord_Bot/deps/vcpkg/buildtrees/openssl/x64-windows-dbg
    See logs for more information:
      P:\Github\Discord_Bot\deps\vcpkg\buildtrees\openssl\install-x64-windows-dbg-nmake-out.log
      P:\Github\Discord_Bot\deps\vcpkg\buildtrees\openssl\install-x64-windows-dbg-nmake-err.log

Call Stack (most recent call first):
  scripts/cmake/vcpkg_build_nmake.cmake:156 (vcpkg_execute_build_process)
  ports/openssl/windows/portfile.cmake:74 (vcpkg_build_nmake)
  ports/openssl/portfile.cmake:68 (include)
  scripts/ports.cmake:175 (include)
P:\Github\Discord_Bot\deps\vcpkg\buildtrees\openssl\install-x64-windows-dbg-nmake-err.log ``` cl : Command line warning D9025 : overriding '/Zi' with '/Z7' NMAKE : fatal error U1077: '"D:\Programs\Visual Studio\VC\Tools\MSVC\14.39.33519\bin\Hostx64\x64\cl.exe" /Zi /Fdossl_static.pdb /Gs0 /GF /Gy /MDd -nologo -DWIN32 -D_WINDOWS -W3 -utf-8 -MP -D_DEBUG -MDd -Z7 -Ob0 -Od -RTC1 -I"crypto" -I"." -I"include" -I"providers\common\include" -I"providers\implementations\include" -D"L_ENDIAN" -D"OPENSSL_PIC" -D"OPENSSLDIR=\"P:\\Github\\Discord_Bot\\deps\\vcpkg\\packages\\openssl_x64-windows\\debug\"" -D"ENGINESDIR=\"P:\\Github\\Discord_Bot\\deps\\vcpkg\\packages\\openssl_x64-windows\\debug\\lib\\engines-3\"" -D"MODULESDIR=\"P:\\Github\\Discord_Bot\\deps\\vcpkg\\packages\\openssl_x64-windows\\debug\\bin\"" -D"OPENSSL_BUILDING_OPENSSL" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"DEBUG" -D"_DEBUG" -DAES_ASM -DBSAES_ASM -DCMLL_ASM -DECP_NISTZ256_ASM -DGHASH_ASM -DKECCAK1600_ASM -DMD5_ASM -DOPENSSL_BN_ASM_GF2m -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_USE_APPLINK -DPADLOCK_ASM -DPOLY1305_ASM -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DX25519_ASM -c /Focrypto\libcrypto-shlib-cversion.obj "crypto\cversion.c"' : return code '0x2' Stop. NMAKE : fatal error U1077: '"D:\Programs\Visual Studio\VC\Tools\MSVC\14.39.33519\bin\Hostx64\x64\nmake.exe" /LU _build_libs' : return code '0x2' Stop. ```
P:\Github\Discord_Bot\deps\vcpkg\buildtrees\openssl\install-x64-windows-dbg-nmake-out.log ``` "D:\Programs\Visual Studio\VC\Tools\MSVC\14.39.33519\bin\Hostx64\x64\nmake.exe" /LU depend "D:\Programs\Visual Studio\VC\Tools\MSVC\14.39.33519\bin\Hostx64\x64\nmake.exe" /LU _build_libs "D:\Programs\Visual Studio\VC\Tools\MSVC\14.39.33519\bin\Hostx64\x64\cl.exe" /Zi /Fdossl_static.pdb /Gs0 /GF /Gy /MDd -nologo -DWIN32 -D_WINDOWS -W3 -utf-8 -MP -D_DEBUG -MDd -Z7 -Ob0 -Od -RTC1 -I"crypto" -I"." -I"include" -I"providers\common\include" -I"providers\implementations\include" -D"L_ENDIAN" -D"OPENSSL_PIC" -D"OPENSSLDIR=\"P:\\Github\\Discord_Bot\\deps\\vcpkg\\packages\\openssl_x64-windows\\debug\"" -D"ENGINESDIR=\"P:\\Github\\Discord_Bot\\deps\\vcpkg\\packages\\openssl_x64-windows\\debug\\lib\\engines-3\"" -D"MODULESDIR=\"P:\\Github\\Discord_Bot\\deps\\vcpkg\\packages\\openssl_x64-windows\\debug\\bin\"" -D"OPENSSL_BUILDING_OPENSSL" -D"OPENSSL_SYS_WIN32" -D"WIN32_LEAN_AND_MEAN" -D"UNICODE" -D"_UNICODE" -D"_CRT_SECURE_NO_DEPRECATE" -D"_WINSOCK_DEPRECATED_NO_WARNINGS" -D"DEBUG" -D"_DEBUG" -DAES_ASM -DBSAES_ASM -DCMLL_ASM -DECP_NISTZ256_ASM -DGHASH_ASM -DKECCAK1600_ASM -DMD5_ASM -DOPENSSL_BN_ASM_GF2m -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_USE_APPLINK -DPADLOCK_ASM -DPOLY1305_ASM -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DX25519_ASM -c /Focrypto\libcrypto-shlib-cversion.obj "crypto\cversion.c" cversion.c crypto\cversion.c(60): warning C4129: 'V': unrecognized character escape sequence crypto\cversion.c(60): warning C4129: 'T': unrecognized character escape sequence crypto\cversion.c(60): warning C4129: 'M': unrecognized character escape sequence crypto\cversion.c(60): warning C4129: 'H': unrecognized character escape sequence crypto\cversion.c(60): warning C4129: 'c': unrecognized character escape sequence crypto\cversion.c(60): error C2143: syntax error: missing ';' before 'constant' crypto\cversion.c(60): error C2143: syntax error: missing ';' before 'string' ```
Pospelove commented 1 month ago

Same issue

This is the first commit that has this issue (discovered via git bisect) https://github.com/microsoft/vcpkg/commit/e2f6384a79f01b1b619446a55a5b11b7d8d55b53

See also https://github.com/openssl/openssl/compare/openssl-3.2.0...openssl-3.1.4

@dg0yt

Pospelove commented 1 month ago

We can further bisect inside openssl if that'd be helpful. what do you think @dg0yt ?

P.S. https://github.com/microsoft/vcpkg/pull/37716 didn't fix that for me

dg0yt commented 1 month ago

Thank for working on this, I really can't do much more for a toolchain I don't use but which passes CI.

We can further bisect inside openssl if that'd be helpful. what do you think @dg0yt ?

P.S. #37716 didn't fix that for me

Given the changes in https://github.com/microsoft/vcpkg/commit/e2f6384a79f01b1b619446a55a5b11b7d8d55b53, it is not clear whether the problem is from port changes or openssl changes. The immediate quick fix is probably to pass the particular tool as pure file name, and to add its location to PATH, so that backslashes and spaces are taken out of the multi-interpreter control flow. But any addition to PATH is a potential source for a new class of problems. I would prefer a fix which to the actual spot which breaks parsing the tool filepath.