Skip to content

Commit 23ec697

Browse files
committed
[vcpkg] Qemu: simplify portfile even further
Signed-off-by: Mustafa Kemal Gilor <mustafa.gilor@canonical.com>
1 parent 5eb23de commit 23ec697

2 files changed

Lines changed: 17 additions & 41 deletions

File tree

3rd-party/vcpkg-ports/qemu/portfile.cmake

Lines changed: 17 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -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")

src/cmake/qemu-system-install-and-copy.cmake

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,3 @@ install(DIRECTORY "${QEMU_FIRMWARE_DIR}/"
5252
COMPONENT multipassd
5353
)
5454

55-

0 commit comments

Comments
 (0)