Metriche repository
- Star
- (30.157 stelle)
- Metriche merge PR
- (Nessuna PR mergiata in 30 g)
Descrizione
Primary issue
While trying to update the vcpkg port from 3.5.4 to 3.6.0, the windows (MSVC) builds with jom failed with
Error: dependent 'apps\\openssl.exe' does not exist.
I only access MSVC in vcpkg CI, so I cannot easily provide an actual minimal example apart from running vcpkg install openssl[tools] on https://github.com/microsoft/vcpkg/pull/47632. But I can provide the essence of the issue.
Analysis
The windows build is invoked for install_runtime, which breaks down to this summary of makefile rules.
install_runtime: install_programs
install_programs: install_runtime_libs build_inst_programs
build_inst_programs: build_generated
$(MAKE) /$(MAKEFLAGS) depend
$(MAKE) /$(MAKEFLAGS) _build_inst_programs
_build_inst_programs: build_inst_programs_nodep
build_inst_programs_nodep: $(INSTALL_PROGRAMS) $(SCRIPTS)
INSTALL_PROGRAMS="apps\\openssl.exe"
After some investigation, I found https://github.com/openssl/openssl/commit/b7e4e17645b559635dde5b947697bfa7a29e61db: Before that change, install_programs was resolved like this:
install_runtime: install_programs
install_programs: install_runtime_libs build_programs
build_programs: build_generated
$(MAKE) /$(MAKEFLAGS) depend
$(MAKE) /$(MAKEFLAGS) _build_programs
_build_programs: build_programs_nodep
build_programs_nodep: $(PROGRAMS) $(SCRIPTS)
PROGRAMS=apps\openssl.exe
So in 3.6.0, the dependency changed from apps\openssl.exe to "apps\\openssl.exe".
But the build rule is unchanged spelled as:
apps\openssl.exe: [...]
At least jom seems to be unable to make a connection here. Removing quotify1 from the generation of INSTALL_PROGRAMS resolves the problem. However, I do not know possible side effects - this variable is in a group of variables which use quotes.
Secondary issue
The port build in vcpkg retries building with nmake when jom fails. This build reports a different problem.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.44.35207\bin\Hostx64\x64\cl.exe" -nologo -DWIN32 -D_WINDOWS -utf-8 -MP -MD -O2 -Oi -Gy -DNDEBUG -Z7 "apps\\openssl.c"' : return code '0x2'
(stderr) which is probably linked to (stdout)
apps\\openssl.c(10): fatal error C1083: Cannot open include file: 'internal/e_os.h': No such file or directory
Obviously, there are no compile flags giving include dirs.