From 8a70b9e482173899af2856b4ea693639f52a5612 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nils=20Petter=20Ska=CC=8Alerud?= Date: Thu, 13 Nov 2025 12:00:21 +0100 Subject: [PATCH] Android: Begin initial alignment of Linux and macOS provisioning The Android provisioning scripts on macOS and Linux perform many of the same tasks, but with slightly differing approaches. Future patches will make us run Android emulators on ARM64, which will further make these scripts similar. This patch performs some modifications to the macOS provisioning script to make it more similar to the Linux one. This will help us combine parts of these scripts in the future. Task-number: QTQAINFRA-7487 Pick-to: 6.11 6.10 6.8 Change-Id: Idba30d07607780d1ef8c60cc5e038a034c821632 Reviewed-by: Artem Dyomin --- .../common/linux/android_linux.sh | 6 +- coin/provisioning/common/macos/android.sh | 93 +++++++++++++------ 2 files changed, 68 insertions(+), 31 deletions(-) diff --git a/coin/provisioning/common/linux/android_linux.sh b/coin/provisioning/common/linux/android_linux.sh index 1ea5daa0..401264c4 100755 --- a/coin/provisioning/common/linux/android_linux.sh +++ b/coin/provisioning/common/linux/android_linux.sh @@ -6,7 +6,7 @@ # It also runs update for SDK API, latest SDK tools, latest platform-tools and build-tools version -set -e +set -ex # shellcheck source=../unix/DownloadURL.sh source "${BASH_SOURCE%/*}/../unix/DownloadURL.sh" @@ -145,7 +145,9 @@ cat >>~/versions.txt </dev/null | awk '!seen {sub("/.*",""); print; seen=1}') + sudo unzip -q "$ndkTargetFile" -d "$targetFolder" + rm "$ndkTargetFile" + androidNdkRoot="${targetFolder}/${zipBase}" } -InstallNdk $ndkVersionLatest -SetEnvVar "ANDROID_NDK_ROOT_LATEST" "$targetFolder/android-ndk-$ndkVersionLatest" +InstallNdk $ndkVersionLatest $ndkSha1Latest +SetEnvVar "ANDROID_NDK_ROOT_LATEST" "$androidNdkRoot" if [ "$ndkVersionPreview" != "$ndkVersionLatest" ]; then - InstallNdk $ndkVersionPreview - SetEnvVar "ANDROID_NDK_ROOT_PREVIEW" "$targetFolder/android-ndk-$ndkVersionPreview" + InstallNdk $ndkVersionPreview $ndkSha1Preview + SetEnvVar "ANDROID_NDK_ROOT_PREVIEW" "$androidNdkRoot" fi if [ "$ndkVersionNightly1" != "$ndkVersionLatest" ]; then - InstallNdk $ndkVersionNightly1 - SetEnvVar "ANDROID_NDK_ROOT_NIGHTLY1" "$targetFolder/android-ndk-$ndkVersionNightly1" + InstallNdk $ndkVersionNightly1 $ndkSha1Nightly1 + SetEnvVar "ANDROID_NDK_ROOT_NIGHTLY1" "$androidNdkRoot" fi if [ "$ndkVersionNightly2" != "$ndkVersionLatest" ]; then - InstallNdk $ndkVersionNightly2 - SetEnvVar "ANDROID_NDK_ROOT_NIGHTLY2" "$targetFolder/android-ndk-$ndkVersionNightly2" + InstallNdk $ndkVersionNightly2 $ndkSha1Nightly2 + SetEnvVar "ANDROID_NDK_ROOT_NIGHTLY2" "$androidNdkRoot" fi -echo "Unzipping Android Tools to '$sdkTargetFolder'" -sudo unzip -q "$toolsSourceFile" -d "$sdkTargetFolder" - echo "Changing ownership of Android files." sudo chown -R qt:wheel "$targetFolder" sudo chmod -R 755 $targetFolder -# Run the following command under `eval` or `sh -c` so that the shell properly splits it +# Stop the sdkmanager from printing thousands of lines of #hashmarks. +# Run the following command under `eval` or `sh -c` so that the shell properly splits it. sdkmanager_no_progress_bar_cmd="tr '\r' '\n' | grep -v '^\[[ =]*\]'" +# But don't let the pipeline hide sdkmanager failures. +set -o pipefail sudo mkdir "$sdkTargetFolder/cmdline-tools" sudo mv "$sdkTargetFolder/tools" "$sdkTargetFolder/cmdline-tools" echo "Running SDK manager for platforms;$sdkApiLevel, platform-tools and build-tools;$sdkBuildToolsVersion." -(echo "y"; echo "y") | "$sdkTargetFolder/cmdline-tools/tools/bin/sdkmanager" "--sdk_root=$sdkTargetFolder" \ - "platforms;$sdkApiLevel" "platform-tools" "build-tools;$sdkBuildToolsVersion" \ - | eval "$sdkmanager_no_progress_bar_cmd" +# shellcheck disable=SC2031 +if [ "$http_proxy" != "" ]; then + proxy_host=$(echo "$proxy" | cut -d'/' -f3 | cut -d':' -f1) + proxy_port=$(echo "$proxy" | cut -d':' -f3) + echo "y" | "$sdkTargetFolder/cmdline-tools/tools/bin/sdkmanager" --sdk_root=$sdkTargetFolder \ + --no_https --proxy=http --proxy_host="$proxy_host" --proxy_port="$proxy_port" \ + "platforms;$sdkApiLevel" "platform-tools" "build-tools;$sdkBuildToolsVersion" \ + | eval "$sdkmanager_no_progress_bar_cmd" +else + echo "y" | "$sdkTargetFolder/cmdline-tools/tools/bin/sdkmanager" --sdk_root=$sdkTargetFolder \ + "platforms;$sdkApiLevel" "platform-tools" "build-tools;$sdkBuildToolsVersion" \ + | eval "$sdkmanager_no_progress_bar_cmd" +fi echo "Checking the contents of Android SDK..." ls -l "$sdkTargetFolder"