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"