From 9a1328225649e33c905395f4c4e0921bffb7dd39 Mon Sep 17 00:00:00 2001 From: Alexey Edelev Date: Wed, 6 Aug 2025 14:50:18 +0200 Subject: [PATCH] Add vcpkg provisioning on macos platforms MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Iee721367772f64a956bf421a8564845506138c33 Reviewed-by: Simo Fält Reviewed-by: Alexey Edelev --- coin/platform_configs/macos.yaml | 8 ++++++++ .../common/shared/triplets/arm64-osx-qt.cmake | 13 +++++++++++++ .../common/shared/triplets/x64-osx-qt.cmake | 13 +++++++++++++ .../provisioning/common/unix/install-vcpkg-ports.sh | 3 ++- .../qtci-macos-13-arm/31-install-vcpkg.sh | 6 ++++++ .../qtci-macos-13-arm/32-install-vcpkg-ports.sh | 10 ++++++++++ .../qtci-macos-13-x86_64/31-install-vcpkg.sh | 6 ++++++ .../qtci-macos-13-x86_64/32-install-vcpkg-ports.sh | 10 ++++++++++ .../qtci-macos-14-arm/31-install-vcpkg.sh | 6 ++++++ .../qtci-macos-14-arm/32-install-vcpkg-ports.sh | 10 ++++++++++ .../qtci-macos-14-x86_64/31-install-vcpkg.sh | 6 ++++++ .../qtci-macos-14-x86_64/32-install-vcpkg-ports.sh | 10 ++++++++++ .../qtci-macos-15-arm/31-install-vcpkg.sh | 6 ++++++ .../qtci-macos-15-arm/32-install-vcpkg-ports.sh | 10 ++++++++++ .../qtci-macos-15-x86_64/31-install-vcpkg.sh | 6 ++++++ .../qtci-macos-15-x86_64/32-install-vcpkg-ports.sh | 10 ++++++++++ .../qtci-macos-26-arm/31-install-vcpkg.sh | 6 ++++++ .../qtci-macos-26-arm/32-install-vcpkg-ports.sh | 9 +++++++++ 18 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 coin/provisioning/common/shared/triplets/arm64-osx-qt.cmake create mode 100644 coin/provisioning/common/shared/triplets/x64-osx-qt.cmake create mode 100644 coin/provisioning/qtci-macos-13-arm/31-install-vcpkg.sh create mode 100755 coin/provisioning/qtci-macos-13-arm/32-install-vcpkg-ports.sh create mode 100644 coin/provisioning/qtci-macos-13-x86_64/31-install-vcpkg.sh create mode 100755 coin/provisioning/qtci-macos-13-x86_64/32-install-vcpkg-ports.sh create mode 100644 coin/provisioning/qtci-macos-14-arm/31-install-vcpkg.sh create mode 100755 coin/provisioning/qtci-macos-14-arm/32-install-vcpkg-ports.sh create mode 100644 coin/provisioning/qtci-macos-14-x86_64/31-install-vcpkg.sh create mode 100755 coin/provisioning/qtci-macos-14-x86_64/32-install-vcpkg-ports.sh create mode 100644 coin/provisioning/qtci-macos-15-arm/31-install-vcpkg.sh create mode 100755 coin/provisioning/qtci-macos-15-arm/32-install-vcpkg-ports.sh create mode 100644 coin/provisioning/qtci-macos-15-x86_64/31-install-vcpkg.sh create mode 100755 coin/provisioning/qtci-macos-15-x86_64/32-install-vcpkg-ports.sh create mode 100644 coin/provisioning/qtci-macos-26-arm/31-install-vcpkg.sh create mode 100755 coin/provisioning/qtci-macos-26-arm/32-install-vcpkg-ports.sh diff --git a/coin/platform_configs/macos.yaml b/coin/platform_configs/macos.yaml index ca7849a7..c2695e18 100644 --- a/coin/platform_configs/macos.yaml +++ b/coin/platform_configs/macos.yaml @@ -17,6 +17,8 @@ Configurations: Environment variables: [ 'CMAKE_ARGS=-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DOPENSSL_ROOT_DIR={{.Env.OPENSSL_DIR}}', 'NON_QTBASE_CMAKE_ARGS=-DFEATURE_gds=OFF -DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE -DINPUT_headersclean=ON -DQT_FEATURE_open62541_security=OFF', + 'VCPKG_HOST_TRIPLET=universal-osx-qt', + 'VCPKG_TARGET_TRIPLET=universal-osx-qt', ] # Test on all supported macOS versions (deployment targets) @@ -91,6 +93,8 @@ Configurations: Environment variables: [ 'CMAKE_ARGS=-DOPENSSL_ROOT_DIR={{.Env.OPENSSL_DIR}}', 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE', + 'VCPKG_HOST_TRIPLET=universal-osx-qt', + 'VCPKG_TARGET_TRIPLET=universal-osx-qt', ] - Id: 'macos-26-x86_64-developer-build' @@ -111,6 +115,8 @@ Configurations: Environment variables: [ 'CMAKE_ARGS=-DOPENSSL_ROOT_DIR={{.Env.OPENSSL_DIR}}', 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE', + 'VCPKG_HOST_TRIPLET=universal-osx-qt', + 'VCPKG_TARGET_TRIPLET=universal-osx-qt', ] - Id: 'macos-26-arm64-developer-build' @@ -121,6 +127,8 @@ Configurations: Environment variables: [ 'CMAKE_ARGS=-DOPENSSL_ROOT_DIR={{.Env.OPENSSL_DIR}}', 'NON_QTBASE_CMAKE_ARGS=-DFFMPEG_DIR={{.Env.FFMPEG_DIR}} -DQT_DEPLOY_FFMPEG=TRUE', + 'VCPKG_HOST_TRIPLET=arm64-osx-qt', + 'VCPKG_TARGET_TRIPLET=arm64-osx-qt', ] # Test on all supported macOS versions (deployment targets) diff --git a/coin/provisioning/common/shared/triplets/arm64-osx-qt.cmake b/coin/provisioning/common/shared/triplets/arm64-osx-qt.cmake new file mode 100644 index 00000000..e8f0279e --- /dev/null +++ b/coin/provisioning/common/shared/triplets/arm64-osx-qt.cmake @@ -0,0 +1,13 @@ +set(VCPKG_CMAKE_SYSTEM_NAME Darwin) +set(VCPKG_OSX_ARCHITECTURES arm64) +set(VCPKG_TARGET_ARCHITECTURE arm64) + +# Default settings of the triplet from the official vcpkg registry +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE static) + +# Qt custom per-port customizations +if(PORT MATCHES "openssl") + set(VCPKG_LIBRARY_LINKAGE dynamic) + set(VCPKG_FIXUP_ELF_RPATH ON) +endif() diff --git a/coin/provisioning/common/shared/triplets/x64-osx-qt.cmake b/coin/provisioning/common/shared/triplets/x64-osx-qt.cmake new file mode 100644 index 00000000..e1e7c04f --- /dev/null +++ b/coin/provisioning/common/shared/triplets/x64-osx-qt.cmake @@ -0,0 +1,13 @@ +set(VCPKG_CMAKE_SYSTEM_NAME Darwin) +set(VCPKG_OSX_ARCHITECTURES x86_64) +set(VCPKG_TARGET_ARCHITECTURE x64) + +# Default settings of the triplet from the official vcpkg registry +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE static) + +# Qt custom per-port customizations +if(PORT MATCHES "openssl") + set(VCPKG_LIBRARY_LINKAGE dynamic) + set(VCPKG_FIXUP_ELF_RPATH ON) +endif() diff --git a/coin/provisioning/common/unix/install-vcpkg-ports.sh b/coin/provisioning/common/unix/install-vcpkg-ports.sh index a6ce0f4e..953926a5 100755 --- a/coin/provisioning/common/unix/install-vcpkg-ports.sh +++ b/coin/provisioning/common/unix/install-vcpkg-ports.sh @@ -10,8 +10,9 @@ echo "Installing vcpkg ports" pushd "${BASH_SOURCE%/*}/../shared/vcpkg" || exit install_root=$1-tmp +vcpkg_extra_args=$2 -"$VCPKG_ROOT/vcpkg" install --triplet $1 --x-install-root $install_root --debug +"$VCPKG_ROOT/vcpkg" install --triplet $1 --x-install-root $install_root --debug $vcpkg_extra_args cmake "-DVCPKG_EXECUTABLE=$VCPKG_ROOT/vcpkg"\ "-DVCPKG_INSTALL_ROOT=$PWD/$install_root"\ diff --git a/coin/provisioning/qtci-macos-13-arm/31-install-vcpkg.sh b/coin/provisioning/qtci-macos-13-arm/31-install-vcpkg.sh new file mode 100644 index 00000000..edca8a77 --- /dev/null +++ b/coin/provisioning/qtci-macos-13-arm/31-install-vcpkg.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg.sh" diff --git a/coin/provisioning/qtci-macos-13-arm/32-install-vcpkg-ports.sh b/coin/provisioning/qtci-macos-13-arm/32-install-vcpkg-ports.sh new file mode 100755 index 00000000..8f9f44bf --- /dev/null +++ b/coin/provisioning/qtci-macos-13-arm/32-install-vcpkg-ports.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg-ports.sh" arm64-osx-qt --host-triplet=arm64-osx +"$BASEDIR/../common/unix/install-vcpkg-ports.sh" x64-osx-qt --host-triplet=x64-osx + +python3 -m lipomerge $VCPKG_ROOT/installed/arm64-osx-qt $VCPKG_ROOT/installed/x64-osx-qt $VCPKG_ROOT/installed/universal-osx-qt +find $VCPKG_ROOT/installed/universal-osx-qt -name '*.cmake' -exec sed -i .bak -E 's,/(arm64|x64)-osx(-qt)?/,/universal-osx-qt/,g' '{}' \; diff --git a/coin/provisioning/qtci-macos-13-x86_64/31-install-vcpkg.sh b/coin/provisioning/qtci-macos-13-x86_64/31-install-vcpkg.sh new file mode 100644 index 00000000..edca8a77 --- /dev/null +++ b/coin/provisioning/qtci-macos-13-x86_64/31-install-vcpkg.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg.sh" diff --git a/coin/provisioning/qtci-macos-13-x86_64/32-install-vcpkg-ports.sh b/coin/provisioning/qtci-macos-13-x86_64/32-install-vcpkg-ports.sh new file mode 100755 index 00000000..8f9f44bf --- /dev/null +++ b/coin/provisioning/qtci-macos-13-x86_64/32-install-vcpkg-ports.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg-ports.sh" arm64-osx-qt --host-triplet=arm64-osx +"$BASEDIR/../common/unix/install-vcpkg-ports.sh" x64-osx-qt --host-triplet=x64-osx + +python3 -m lipomerge $VCPKG_ROOT/installed/arm64-osx-qt $VCPKG_ROOT/installed/x64-osx-qt $VCPKG_ROOT/installed/universal-osx-qt +find $VCPKG_ROOT/installed/universal-osx-qt -name '*.cmake' -exec sed -i .bak -E 's,/(arm64|x64)-osx(-qt)?/,/universal-osx-qt/,g' '{}' \; diff --git a/coin/provisioning/qtci-macos-14-arm/31-install-vcpkg.sh b/coin/provisioning/qtci-macos-14-arm/31-install-vcpkg.sh new file mode 100644 index 00000000..edca8a77 --- /dev/null +++ b/coin/provisioning/qtci-macos-14-arm/31-install-vcpkg.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg.sh" diff --git a/coin/provisioning/qtci-macos-14-arm/32-install-vcpkg-ports.sh b/coin/provisioning/qtci-macos-14-arm/32-install-vcpkg-ports.sh new file mode 100755 index 00000000..8f9f44bf --- /dev/null +++ b/coin/provisioning/qtci-macos-14-arm/32-install-vcpkg-ports.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg-ports.sh" arm64-osx-qt --host-triplet=arm64-osx +"$BASEDIR/../common/unix/install-vcpkg-ports.sh" x64-osx-qt --host-triplet=x64-osx + +python3 -m lipomerge $VCPKG_ROOT/installed/arm64-osx-qt $VCPKG_ROOT/installed/x64-osx-qt $VCPKG_ROOT/installed/universal-osx-qt +find $VCPKG_ROOT/installed/universal-osx-qt -name '*.cmake' -exec sed -i .bak -E 's,/(arm64|x64)-osx(-qt)?/,/universal-osx-qt/,g' '{}' \; diff --git a/coin/provisioning/qtci-macos-14-x86_64/31-install-vcpkg.sh b/coin/provisioning/qtci-macos-14-x86_64/31-install-vcpkg.sh new file mode 100644 index 00000000..edca8a77 --- /dev/null +++ b/coin/provisioning/qtci-macos-14-x86_64/31-install-vcpkg.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg.sh" diff --git a/coin/provisioning/qtci-macos-14-x86_64/32-install-vcpkg-ports.sh b/coin/provisioning/qtci-macos-14-x86_64/32-install-vcpkg-ports.sh new file mode 100755 index 00000000..8f9f44bf --- /dev/null +++ b/coin/provisioning/qtci-macos-14-x86_64/32-install-vcpkg-ports.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg-ports.sh" arm64-osx-qt --host-triplet=arm64-osx +"$BASEDIR/../common/unix/install-vcpkg-ports.sh" x64-osx-qt --host-triplet=x64-osx + +python3 -m lipomerge $VCPKG_ROOT/installed/arm64-osx-qt $VCPKG_ROOT/installed/x64-osx-qt $VCPKG_ROOT/installed/universal-osx-qt +find $VCPKG_ROOT/installed/universal-osx-qt -name '*.cmake' -exec sed -i .bak -E 's,/(arm64|x64)-osx(-qt)?/,/universal-osx-qt/,g' '{}' \; diff --git a/coin/provisioning/qtci-macos-15-arm/31-install-vcpkg.sh b/coin/provisioning/qtci-macos-15-arm/31-install-vcpkg.sh new file mode 100644 index 00000000..edca8a77 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/31-install-vcpkg.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg.sh" diff --git a/coin/provisioning/qtci-macos-15-arm/32-install-vcpkg-ports.sh b/coin/provisioning/qtci-macos-15-arm/32-install-vcpkg-ports.sh new file mode 100755 index 00000000..8f9f44bf --- /dev/null +++ b/coin/provisioning/qtci-macos-15-arm/32-install-vcpkg-ports.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg-ports.sh" arm64-osx-qt --host-triplet=arm64-osx +"$BASEDIR/../common/unix/install-vcpkg-ports.sh" x64-osx-qt --host-triplet=x64-osx + +python3 -m lipomerge $VCPKG_ROOT/installed/arm64-osx-qt $VCPKG_ROOT/installed/x64-osx-qt $VCPKG_ROOT/installed/universal-osx-qt +find $VCPKG_ROOT/installed/universal-osx-qt -name '*.cmake' -exec sed -i .bak -E 's,/(arm64|x64)-osx(-qt)?/,/universal-osx-qt/,g' '{}' \; diff --git a/coin/provisioning/qtci-macos-15-x86_64/31-install-vcpkg.sh b/coin/provisioning/qtci-macos-15-x86_64/31-install-vcpkg.sh new file mode 100644 index 00000000..edca8a77 --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/31-install-vcpkg.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg.sh" diff --git a/coin/provisioning/qtci-macos-15-x86_64/32-install-vcpkg-ports.sh b/coin/provisioning/qtci-macos-15-x86_64/32-install-vcpkg-ports.sh new file mode 100755 index 00000000..8f9f44bf --- /dev/null +++ b/coin/provisioning/qtci-macos-15-x86_64/32-install-vcpkg-ports.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg-ports.sh" arm64-osx-qt --host-triplet=arm64-osx +"$BASEDIR/../common/unix/install-vcpkg-ports.sh" x64-osx-qt --host-triplet=x64-osx + +python3 -m lipomerge $VCPKG_ROOT/installed/arm64-osx-qt $VCPKG_ROOT/installed/x64-osx-qt $VCPKG_ROOT/installed/universal-osx-qt +find $VCPKG_ROOT/installed/universal-osx-qt -name '*.cmake' -exec sed -i .bak -E 's,/(arm64|x64)-osx(-qt)?/,/universal-osx-qt/,g' '{}' \; diff --git a/coin/provisioning/qtci-macos-26-arm/31-install-vcpkg.sh b/coin/provisioning/qtci-macos-26-arm/31-install-vcpkg.sh new file mode 100644 index 00000000..edca8a77 --- /dev/null +++ b/coin/provisioning/qtci-macos-26-arm/31-install-vcpkg.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg.sh" diff --git a/coin/provisioning/qtci-macos-26-arm/32-install-vcpkg-ports.sh b/coin/provisioning/qtci-macos-26-arm/32-install-vcpkg-ports.sh new file mode 100755 index 00000000..cd9d55bf --- /dev/null +++ b/coin/provisioning/qtci-macos-26-arm/32-install-vcpkg-ports.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +set -ex + +BASEDIR=$(dirname "$0") +"$BASEDIR/../common/unix/install-vcpkg-ports.sh" arm64-osx-qt + +# Create an alias for arm64-osx-qt, because the built package references this triplet. +ln -s arm64-osx-qt $VCPKG_ROOT/installed/universal-osx-qt