openssl/openssl

3.6.0 `install_programs` fails with MSVC/jom

Aperta

#28.744 aperta il 4 ott 2025

 (2 commenti) (1 reazione) (0 assegnatari)C (11.262 fork)batch import
help wantedtriaged: bug

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.

Guida contributor