diff options
author | Amir Masoud Abdol <amir.abdol@qt.io> | 2023-11-30 11:17:48 +0100 |
---|---|---|
committer | Amir Masoud Abdol <amir.abdol@qt.io> | 2023-12-18 06:32:32 +0100 |
commit | a5a639314526cd356ca3b6ce6bfe6e3059cf943a (patch) | |
tree | b4a5f600c3b3a2db5701a031b0f2bb353e0dcaac /coin/provisioning/common | |
parent | a1b278c3a33bd1a516b2eb7b42165f68bd9164cd (diff) |
Provisioning: Install OpenSSL via Vcpkg on Linux
- Add a custom triplets for building dynamic android libraries
- Set `ANDROID_NDK_HOME` environment variable, as it is needed when
vcpkg builds for Android.
- Install `perl-IPC-Cmd` when necessary, requirement for OpenSSL.
- Install openSSL for x64-linux-qt, x86-android-qt, and
x86_64-android-qt. The latter android triplet has been renamed from
vcpkg's official `x64-android.cmake` triplet to further clarify the
android abi.
- Adjusted version.txt to account for the existence of two OpenSSL. The
system OpenSSL now shows up as `System's OpenSSL` in `version.txt`.
Task-number: QTBUG-115715
Change-Id: I6cf9b808d26bbea97ebeeadac58cef5ede25ee50
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'coin/provisioning/common')
-rwxr-xr-x | coin/provisioning/common/linux/android_linux.sh | 4 | ||||
-rwxr-xr-x | coin/provisioning/common/linux/install-vcpkg-ports-android.sh | 24 | ||||
-rwxr-xr-x | coin/provisioning/common/linux/install-vcpkg-ports.sh | 21 | ||||
-rwxr-xr-x[-rw-r--r--] | coin/provisioning/common/linux/install-vcpkg.sh | 0 | ||||
-rw-r--r-- | coin/provisioning/common/linux/vcpkg/vcpkg.json | 11 | ||||
-rw-r--r-- | coin/provisioning/common/shared/triplets/x64-linux-qt.cmake | 13 | ||||
-rw-r--r-- | coin/provisioning/common/shared/triplets/x86-android-qt.cmake | 15 | ||||
-rw-r--r-- | coin/provisioning/common/shared/triplets/x86_64-android-qt.cmake | 15 |
8 files changed, 102 insertions, 1 deletions
diff --git a/coin/provisioning/common/linux/android_linux.sh b/coin/provisioning/common/linux/android_linux.sh index 5707e76b..178ff68c 100755 --- a/coin/provisioning/common/linux/android_linux.sh +++ b/coin/provisioning/common/linux/android_linux.sh @@ -80,6 +80,10 @@ SetEnvVar "ANDROID_NDK_ROOT_DEFAULT" "$targetFolder/android-ndk-$ndkVersionDefau InstallNdk $ndkVersionLatest $ndkSha1Latest SetEnvVar "ANDROID_NDK_ROOT_LATEST" "$targetFolder/android-ndk-$ndkVersionLatest" +# To be used by vcpkg +SetEnvVar "ANDROID_NDK_HOME" "$targetFolder/android-ndk-$ndkVersionDefault" +export ANDROID_NDK_HOME="$targetFolder/android-ndk-$ndkVersionDefault" + echo "Changing ownership of Android files." if uname -a |grep -q "el7"; then sudo chown -R qt:wheel "$targetFolder" diff --git a/coin/provisioning/common/linux/install-vcpkg-ports-android.sh b/coin/provisioning/common/linux/install-vcpkg-ports-android.sh new file mode 100755 index 00000000..5aafc012 --- /dev/null +++ b/coin/provisioning/common/linux/install-vcpkg-ports-android.sh @@ -0,0 +1,24 @@ +#!/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 + +echo "Installing vcpkg android ports" + +pushd "${BASH_SOURCE%/*}/vcpkg" || exit +cp "${BASH_SOURCE%/*}/../shared/vcpkg-configuration.json" . + +$VCPKG_ROOT/vcpkg install --triplet x86-android-qt --x-install-root x86-android-qt-tmp --debug +$VCPKG_ROOT/vcpkg install --triplet x86_64-android-qt --x-install-root x86_64-android-qt-tmp --debug + +mkdir -p $VCPKG_ROOT/installed +cp -R x86-android-qt-tmp/* $VCPKG_ROOT/installed/ +cp -R x86_64-android-qt-tmp/* $VCPKG_ROOT/installed/ + +versions=$(jq -r '.overrides[] | "vcpkg \(.name) for android = \(.version)"' vcpkg.json) +versions="${versions//vcpkg/\\nvcpkg}" +echo $versions >> ~/versions.txt + +rm -rf x86-android-qt-tmp +rm -rf x86_64-android-qt-tmp + +popd || exit diff --git a/coin/provisioning/common/linux/install-vcpkg-ports.sh b/coin/provisioning/common/linux/install-vcpkg-ports.sh new file mode 100755 index 00000000..853f4131 --- /dev/null +++ b/coin/provisioning/common/linux/install-vcpkg-ports.sh @@ -0,0 +1,21 @@ +#!/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 + +echo "Installing vcpkg ports" + +pushd "${BASH_SOURCE%/*}/vcpkg" || exit +cp "${BASH_SOURCE%/*}/../shared/vcpkg-configuration.json" . + +$VCPKG_ROOT/vcpkg install --triplet x64-linux-qt --x-install-root x64-linux-qt-tmp --debug + +mkdir -p "$VCPKG_ROOT/installed" +cp -R x64-linux-qt-tmp/* $VCPKG_ROOT/installed/ + +versions=$(jq -r '.overrides[] | "vcpkg \(.name) = \(.version)"' vcpkg.json) +versions="${versions//vcpkg/\\nvcpkg}" +echo $versions >> ~/versions.txt + +rm -rf x64-linux-qt-tmp + +popd || exit diff --git a/coin/provisioning/common/linux/install-vcpkg.sh b/coin/provisioning/common/linux/install-vcpkg.sh index 70b069ae..70b069ae 100644..100755 --- a/coin/provisioning/common/linux/install-vcpkg.sh +++ b/coin/provisioning/common/linux/install-vcpkg.sh diff --git a/coin/provisioning/common/linux/vcpkg/vcpkg.json b/coin/provisioning/common/linux/vcpkg/vcpkg.json index 0db3279e..70cb16fb 100644 --- a/coin/provisioning/common/linux/vcpkg/vcpkg.json +++ b/coin/provisioning/common/linux/vcpkg/vcpkg.json @@ -1,3 +1,12 @@ { - + "overrides": [ + { + "name": "openssl", + "version": "3.0.7", + "port-version": 2 + } + ], + "dependencies": [ + "openssl" + ] } diff --git a/coin/provisioning/common/shared/triplets/x64-linux-qt.cmake b/coin/provisioning/common/shared/triplets/x64-linux-qt.cmake new file mode 100644 index 00000000..95cc1934 --- /dev/null +++ b/coin/provisioning/common/shared/triplets/x64-linux-qt.cmake @@ -0,0 +1,13 @@ +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() + +set(VCPKG_CMAKE_SYSTEM_NAME Linux) diff --git a/coin/provisioning/common/shared/triplets/x86-android-qt.cmake b/coin/provisioning/common/shared/triplets/x86-android-qt.cmake new file mode 100644 index 00000000..a4b74012 --- /dev/null +++ b/coin/provisioning/common/shared/triplets/x86-android-qt.cmake @@ -0,0 +1,15 @@ +set(VCPKG_TARGET_ARCHITECTURE x86) + +# Default settings of the triplet from the official vcpkg registry +set(VCPKG_CRT_LINKAGE static) +set(VCPKG_LIBRARY_LINKAGE static) + +# Qt custom per-port customizations +if(PORT MATCHES "openssl") + set(VCPKG_CRT_LINKAGE dynamic) + set(VCPKG_LIBRARY_LINKAGE dynamic) +endif() + +set(VCPKG_CMAKE_SYSTEM_NAME Android) +set(VCPKG_MAKE_BUILD_TRIPLET "--host=i686-linux-android") +set(VCPKG_CMAKE_CONFIGURE_OPTIONS -DANDROID_ABI=x86) diff --git a/coin/provisioning/common/shared/triplets/x86_64-android-qt.cmake b/coin/provisioning/common/shared/triplets/x86_64-android-qt.cmake new file mode 100644 index 00000000..47afae58 --- /dev/null +++ b/coin/provisioning/common/shared/triplets/x86_64-android-qt.cmake @@ -0,0 +1,15 @@ +set(VCPKG_TARGET_ARCHITECTURE x64) + +# Default settings of the triplet from the official vcpkg registry +set(VCPKG_CRT_LINKAGE static) +set(VCPKG_LIBRARY_LINKAGE static) + +# Qt custom per-port customizations +if(PORT MATCHES "openssl") + set(VCPKG_CRT_LINKAGE dynamic) + set(VCPKG_LIBRARY_LINKAGE dynamic) +endif() + +set(VCPKG_CMAKE_SYSTEM_NAME Android) +set(VCPKG_MAKE_BUILD_TRIPLET "--host=x86_64-linux-android") +set(VCPKG_CMAKE_CONFIGURE_OPTIONS -DANDROID_ABI=x86_64) |