@@ -83,8 +83,8 @@ if(VCPKG_TARGET_IS_WINDOWS)
8383 #
8484 # NOTE: MinGW packages are fetched via pacman and are not version-pinned.
8585 # Builds are not fully hermetic on Windows. The MSYS2 base tarball is
86- # pinned to limit variance. pacman -S and -Sy require network access,
87- # which is atypical for vcpkg ports.
86+ # pinned to limit variance. pacman requires network access, which is
87+ # atypical for vcpkg ports.
8888 ###########################################################################
8989
9090 if (NOT VCPKG_TARGET_ARCHITECTURE STREQUAL "x64" )
@@ -109,6 +109,14 @@ if(VCPKG_TARGET_IS_WINDOWS)
109109 set (MINGW_ENV "export MSYSTEM=MINGW64 && source /etc/profile" )
110110 set (MSYS2_SETUP_STAMP "${MSYS2_DIR} /.qemu-vcpkg-setup-complete" )
111111
112+ macro (msys2_exec COMMAND_STRING LOGNAME_SUFFIX )
113+ vcpkg_execute_required_process (
114+ COMMAND ${MINGW_SHELL} "${COMMAND_STRING} "
115+ WORKING_DIRECTORY "${MSYS2_DIR} "
116+ LOGNAME ${LOGNAME_SUFFIX} -${TARGET_TRIPLET}
117+ )
118+ endmacro ()
119+
112120 vcpkg_download_distfile (MSYS2_ARCHIVE
113121 URLS "https://github.com/msys2/msys2-installer/releases/download/2025-02-21/msys2-base-x86_64-20250221.tar.zst"
114122 FILENAME "msys2-base-x86_64-20250221.tar.zst"
@@ -140,48 +148,17 @@ if(VCPKG_TARGET_IS_WINDOWS)
140148 set (BUILD_DIR "${CURRENT_BUILDTREES_DIR} /${TARGET_TRIPLET} -rel" )
141149 file (MAKE_DIRECTORY "${BUILD_DIR} " )
142150 to_msys_path ("${BUILD_DIR} " BUILD_DIR_UNIX )
143- list (JOIN QEMU_COMMON_OPTIONS " " COMMON_OPTIONS_STRING)
144151
145- if (NOT EXISTS "${MSYS2_SETUP_STAMP} " )
146- # Initial shell launch to let MSYS2 set up its environment
147- vcpkg_execute_required_process (
148- COMMAND ${MINGW_SHELL} "true"
149- WORKING_DIRECTORY "${MSYS2_DIR} "
150- LOGNAME msys2-init-${TARGET_TRIPLET}
151- )
152- vcpkg_execute_required_process (
153- COMMAND ${MINGW_SHELL} "pacman -Rdd --noconfirm mingw-w64-x86_64-pkg-config || true && pacman -Sy --noconfirm && pacman -S --noconfirm --needed ${MINGW_PACKAGES_STRING} "
154- WORKING_DIRECTORY "${MSYS2_DIR} "
155- LOGNAME msys2-packages-${TARGET_TRIPLET}
156- )
157- vcpkg_execute_required_process (
158- COMMAND ${MINGW_SHELL} "${MINGW_ENV} && rm -f /mingw64/lib/python3.*/EXTERNALLY-MANAGED && python -m ensurepip && python -m pip install distlib '${SOURCE_PATH_UNIX} '/python/wheels/*.whl"
159- WORKING_DIRECTORY "${MSYS2_DIR} "
160- LOGNAME msys2-python-deps-${TARGET_TRIPLET}
161- )
152+ if (NOT EXISTS "${MSYS2_SETUP_STAMP} " )
153+ msys2_exec ("true" msys2-init )
154+ msys2_exec ("pacman -Rdd --noconfirm mingw-w64-x86_64-pkg-config || true && pacman -Sy --noconfirm && pacman -S --noconfirm --needed ${MINGW_PACKAGES_STRING} " msys2-packages )
155+ msys2_exec ("${MINGW_ENV} && rm -f /mingw64/lib/python3.*/EXTERNALLY-MANAGED && python -m ensurepip && python -m pip install distlib '${SOURCE_PATH_UNIX} '/python/wheels/*.whl" msys2-python-deps )
162156 file (TOUCH "${MSYS2_SETUP_STAMP} " )
163157 endif ()
164158
165- # Configure
166- vcpkg_execute_required_process (
167- COMMAND ${MINGW_SHELL} "${MINGW_ENV} && cd '${BUILD_DIR_UNIX} ' && '${SOURCE_PATH_UNIX} /configure' --static --enable-tools --target-list='${QEMU_TARGET_LIST} ' --prefix='${INSTALL_PREFIX_UNIX} ' --extra-cflags='-UNDEBUG' --extra-ldflags='-liconv' ${COMMON_OPTIONS_STRING} "
168- WORKING_DIRECTORY "${BUILD_DIR} "
169- LOGNAME configure-${TARGET_TRIPLET}
170- )
171-
172- # Build
173- vcpkg_execute_required_process (
174- COMMAND ${MINGW_SHELL} "${MINGW_ENV} && cd '${BUILD_DIR_UNIX} ' && ninja -j${VCPKG_CONCURRENCY} "
175- WORKING_DIRECTORY "${BUILD_DIR} "
176- LOGNAME build -${TARGET_TRIPLET}
177- )
178-
179- # Install
180- vcpkg_execute_required_process (
181- COMMAND ${MINGW_SHELL} "${MINGW_ENV} && cd '${BUILD_DIR_UNIX} ' && ninja install"
182- WORKING_DIRECTORY "${BUILD_DIR} "
183- LOGNAME install -${TARGET_TRIPLET}
184- )
159+ msys2_exec ("${MINGW_ENV} && cd '${BUILD_DIR_UNIX} ' && '${SOURCE_PATH_UNIX} /configure' --static --enable-tools --target-list='${QEMU_TARGET_LIST} ' --prefix='${INSTALL_PREFIX_UNIX} ' --extra-cflags='-UNDEBUG' --extra-ldflags='-liconv'" configure )
160+ msys2_exec ("${MINGW_ENV} && cd '${BUILD_DIR_UNIX} ' && ninja -j${VCPKG_CONCURRENCY} " build )
161+ msys2_exec ("${MINGW_ENV} && cd '${BUILD_DIR_UNIX} ' && ninja install" install )
185162
186163 # ninja install puts binaries in the prefix root; move to bin/
187164 file (MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR} /bin" )
0 commit comments