aboutsummaryrefslogtreecommitdiffstats
path: root/coin/provisioning/common/linux/install-vcpkg.sh
diff options
context:
space:
mode:
Diffstat (limited to 'coin/provisioning/common/linux/install-vcpkg.sh')
-rwxr-xr-xcoin/provisioning/common/linux/install-vcpkg.sh59
1 files changed, 59 insertions, 0 deletions
diff --git a/coin/provisioning/common/linux/install-vcpkg.sh b/coin/provisioning/common/linux/install-vcpkg.sh
new file mode 100755
index 00000000..80917beb
--- /dev/null
+++ b/coin/provisioning/common/linux/install-vcpkg.sh
@@ -0,0 +1,59 @@
+#!/usr/bin/env bash
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+# shellcheck source=../unix/SetEnvVar.sh
+source "${BASH_SOURCE%/*}/../unix/SetEnvVar.sh"
+# shellcheck source=../unix/DownloadURL.sh
+source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh"
+# shellcheck source=../unix/InstallFromCompressedFileFromURL.sh
+source "${BASH_SOURCE%/*}/../unix/InstallFromCompressedFileFromURL.sh"
+
+vcpkgVersion=$(grep 'vcpkg_version=' "${BASH_SOURCE%/*}/../shared/vcpkg_version.txt" | cut -d '=' -f 2)
+
+vcpkgRoot="$HOME/vcpkg-$vcpkgVersion"
+vcpkgRepo=$(head -n 1 "${BASH_SOURCE%/*}/../shared/vcpkg_registry_mirror.txt")
+
+echo "Cloning the vcpkg repo"
+git clone "$vcpkgRepo" "$vcpkgRoot"
+git -C "$vcpkgRoot" checkout "tags/$vcpkgVersion"
+
+vcpkgToolReleaseTag=$(grep 'vcpkg_tool_release_tag=' "${BASH_SOURCE%/*}/../shared/vcpkg_tool_release_tag.txt" | cut -d '=' -f 2)
+nonDottedReleaseTag=${vcpkgVersion//-/}
+
+vcpkgToolOfficialUrl="https://github.com/microsoft/vcpkg-tool/archive/refs/tags/$vcpkgToolReleaseTag.tar.gz"
+vcpkgToolCacheUrl="http://ci-files01-hki.ci.qt.io/input/vcpkg/vcpkg-tool-$nonDottedReleaseTag.tar.gz"
+vcpkgToolSHA1="c6029714fca0304779f10c9c1cbe4b061a2fd945"
+vcpkgToolSourceFolder="$HOME/vcpkg-tool-$vcpkgToolReleaseTag"
+vcpkgToolBuildFolder="$HOME/vcpkg-tool-$vcpkgToolReleaseTag/build"
+
+InstallFromCompressedFileFromURL "$vcpkgToolCacheUrl" "$vcpkgToolOfficialUrl" "$vcpkgToolSHA1" "$HOME" ""
+cmake -S "$vcpkgToolSourceFolder" -B "$vcpkgToolBuildFolder" -GNinja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DVCPKG_DEVELOPMENT_WARNINGS=OFF
+cmake --build "$vcpkgToolBuildFolder" --parallel
+
+cp "$vcpkgToolBuildFolder/vcpkg" "$vcpkgRoot/"
+rm -rf "$vcpkgToolSourceFolder"
+
+if [ ! -f "$vcpkgRoot/vcpkg" ]
+then
+ echo "Can't find $vcpkgRoot/vcpkg."
+ exit 1
+fi
+
+chmod 755 "$vcpkgRoot/vcpkg"
+touch "$vcpkgRoot/vcpkg.disable-metrics"
+
+# Setting VCPKG_ROOT using Set-EnvVar makes the variable only
+# available during build time. In order to make it available during the
+# provisioning, we need to directly set it via $env:VCPKG_ROOT as well.
+SetEnvVar "VCPKG_ROOT" "$vcpkgRoot"
+export VCPKG_ROOT="$vcpkgRoot"
+
+# Set a source for vcpkg Binary and Asset Cache
+# The `coin/provisioning/common/linux/mount-vcpkg-cache-drive.sh` script is
+# mounting the SMB share located in `vcpkg-server.ci.qt.io/vcpkg` to
+# $HOME/vcpkg-cache/
+export VCPKG_BINARY_SOURCES="files,$HOME/vcpkg-cache/binaries,readwrite"
+export X_VCPKG_ASSET_SOURCES="x-azurl,file:///$HOME/vcpkg-cache/assets,,readwrite"
+
+echo "vcpkg = $vcpkgVersion" >> ~/versions.txt