From 593ab19a0f3416e01d1389e9fb6e05a9b4ec65ec Mon Sep 17 00:00:00 2001 From: Mikhail Timofeev <48208649+miketimofeev@users.noreply.github.com> Date: Thu, 21 Jul 2022 11:33:26 +0400 Subject: [PATCH] Remove ndk-bundle + old ndk versions from macOS (#5929) --- .../configuration/environment/bashrc | 4 +- .../macos/provision/core/android-toolsets.sh | 20 +----- .../provision/core/xamarin-android-ndk.sh | 66 ------------------- .../SoftwareReport.Android.psm1 | 22 ++----- images/macos/templates/macOS-10.15.json | 1 - images/macos/tests/Android.Tests.ps1 | 11 ---- images/macos/tests/XamarinNDK.Tests.ps1 | 32 --------- images/macos/toolsets/toolset-10.15.json | 1 - images/macos/toolsets/toolset-11.json | 1 - images/macos/toolsets/toolset-12.json | 1 - 10 files changed, 6 insertions(+), 153 deletions(-) delete mode 100644 images/macos/provision/core/xamarin-android-ndk.sh delete mode 100644 images/macos/tests/XamarinNDK.Tests.ps1 diff --git a/images/macos/provision/configuration/environment/bashrc b/images/macos/provision/configuration/environment/bashrc index 2ffdeb0b..65895e7b 100644 --- a/images/macos/provision/configuration/environment/bashrc +++ b/images/macos/provision/configuration/environment/bashrc @@ -4,8 +4,6 @@ export LANG=en_US.UTF-8 export ANDROID_HOME=${HOME}/Library/Android/sdk export ANDROID_SDK_ROOT=${HOME}/Library/Android/sdk -export ANDROID_NDK_HOME=${ANDROID_HOME}/ndk-bundle -export ANDROID_NDK_ROOT=${ANDROID_HOME}/ndk-bundle export VM_ASSETS=/usr/local/opt/$USER/scripts @@ -16,7 +14,7 @@ export AGENT_TOOLSDIRECTORY=$HOME/hostedtoolcache export RUNNER_TOOL_CACHE=$HOME/hostedtoolcache export PATH=/Library/Frameworks/Mono.framework/Versions/Current/Commands:$PATH -export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_NDK_HOME:$PATH +export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$PATH export PATH=/usr/local/bin:/usr/local/sbin:~/bin:~/.yarn/bin:$PATH export PATH="/usr/local/opt/curl/bin:$PATH" export PATH=$HOME/.cargo/bin:$PATH diff --git a/images/macos/provision/core/android-toolsets.sh b/images/macos/provision/core/android-toolsets.sh index 3507a4a6..c20dc7d7 100755 --- a/images/macos/provision/core/android-toolsets.sh +++ b/images/macos/provision/core/android-toolsets.sh @@ -32,7 +32,6 @@ ANDROID_EXTRA_LIST=($(get_toolset_value '.android."extra-list"[]')) ANDROID_ADDON_LIST=($(get_toolset_value '.android."addon-list"[]')) ANDROID_ADDITIONAL_TOOLS=($(get_toolset_value '.android."additional-tools"[]')) ANDROID_NDK_MAJOR_VERSIONS=($(get_toolset_value '.android.ndk."versions"[]')) -ANDROID_NDK_MAJOR_DEFAULT=$(get_toolset_value '.android.ndk.default') ANDROID_NDK_MAJOR_LATEST=$(get_toolset_value '.android.ndk."versions"[-1]') # Get the latest command line tools from https://developer.android.com/studio#cmdline-tools cmdlineToolsVersion=$(get_toolset_value '.android."cmdline-tools"') @@ -81,12 +80,8 @@ do ndk_full_version=$(get_full_ndk_version $ndk_version) echo y | $SDKMANAGER "ndk;$ndk_full_version" done -# This changes were added due to incompatibility with android ndk-bundle (ndk;22.0.7026061). -# Link issue virtual-environments: https://github.com/actions/virtual-environments/issues/2481 -# Link issue xamarin-android: https://github.com/xamarin/xamarin-android/issues/5526 -ndkDefault=$(get_full_ndk_version $ANDROID_NDK_MAJOR_DEFAULT) + ndkLatest=$(get_full_ndk_version $ANDROID_NDK_MAJOR_LATEST) -ln -s $ANDROID_HOME/ndk/$ndkDefault $ANDROID_HOME/ndk-bundle ANDROID_NDK_LATEST_HOME=$ANDROID_HOME/ndk/$ndkLatest echo "export ANDROID_NDK_LATEST_HOME=$ANDROID_NDK_LATEST_HOME" >> "${HOME}/.bashrc" @@ -126,17 +121,4 @@ do echo y | $SDKMANAGER "$tool_name" done -popd - -echo "Installing ProGuard-5..." -PROGUARD_LOCATION="https://github.com/Guardsquare/proguard/archive/proguard5.3.3.tar.gz" -pushd $ANDROID_HOME -cd tools -mv proguard proguard4 -mkdir proguard && cd proguard -curl -L -o proguard5.tgz $PROGUARD_LOCATION -tar xzf proguard5.tgz --strip 1 && rm -f proguard5.tgz -cp ../proguard4/proguard-*.txt . # Copy the Proguard Android definitions from the previous version -popd - invoke_tests "Android" diff --git a/images/macos/provision/core/xamarin-android-ndk.sh b/images/macos/provision/core/xamarin-android-ndk.sh deleted file mode 100644 index 82896b46..00000000 --- a/images/macos/provision/core/xamarin-android-ndk.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/bash -e -o pipefail -source ~/utils/utils.sh - -ANDROID_HOME=$HOME/Library/Android/sdk -ANDROID_NDK_HOME=$ANDROID_HOME/ndk-bundle -SDKMANAGER=$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager - -# Android NDK v16 is not compatible with old Xamarin.Android SDK -# and fails builds with BundleAssemblies enabled -ANDROID_NDK_15_HOME=$HOME/Library/Android/sdk/android-ndk-r15c -ANDROID_NDK_PACKAGE="android-ndk-r15c-darwin-x86_64.zip" -ANDROID_NDK_URL="https://dl.google.com/android/repository/${ANDROID_NDK_PACKAGE}" - -echo "Install and setup Android NDK v15..." -cd $HOME - -download_with_retries $ANDROID_NDK_URL - -echo "Unzipping $ANDROID_NDK_URL..." -unzip -q $ANDROID_NDK_PACKAGE -d ${ANDROID_HOME} - -echo "Removing $ANDROID_NDK_URL..." -rm -rf "$ANDROID_NDK_PACKAGE" - -XAMARIN_ANDROID_NDK_PATH=$HOME/Library/Developer/Xamarin -mkdir -p $XAMARIN_ANDROID_NDK_PATH - -echo "Preparing symlink for $ANDROID_NDK_15_HOME ..." -ln -s $ANDROID_NDK_15_HOME $XAMARIN_ANDROID_NDK_PATH/android-ndk - -# NDK r17 does not include MIPS/MIPS64 toolchains anymore, NDK r16b still provides this a supplement -echo "Checking NDK installation contains required MIPS toolchains…" -NDK_BUNDLE_TOOLCHAINS=$ANDROID_NDK_HOME/toolchains -ANDROID_NDK_R16B_PATH=$ANDROID_HOME/ndk/16.1.4479499 -MIPS64_TOOLCHAIN=$NDK_BUNDLE_TOOLCHAINS/mips64el-linux-android-4.9/prebuilt/darwin-x86_64/bin -MIPS_TOOLCHAIN=$NDK_BUNDLE_TOOLCHAINS/mipsel-linux-android-4.9/prebuilt/darwin-x86_64/bin - -if [ -d $MIPS64_TOOLCHAIN ] && [ -d $MIPS_TOOLCHAIN ]; then - echo "MIPS64 and MIPS toolchain already installed for NDK bundle - not reinstalling." -else - pushd $ANDROID_HOME - - echo "Installing ndk r16b..." - echo y | $SDKMANAGER "ndk;16.1.4479499" - - echo "Cleaning potential pre-existing MIPS toolchain directories" - rm -rf ndk-bundle/toolchains/mips* - - echo "Moving MIPS toolchains to $ANDROID_NDK_HOME/toolchains" - mv $ANDROID_NDK_R16B_PATH/toolchains/mips** ndk-bundle/toolchains/ - - echo "Delete ndk r16b..." - rm -rf $ANDROID_NDK_R16B_PATH - - if [ ! -d $MIPS64_TOOLCHAIN ] || [ ! -d $MIPS_TOOLCHAIN ]; then - echo "MIPS toolchains not installed correctly! Check whether $ANDROID_NDK_HOME/toolchains/mips* does not exist." - fi - popd -fi - -# Latest versions of NDK doesn't include GCC, NDK r18 does -echo "Installing ndk r18B..." -echo y | $SDKMANAGER "ndk;18.1.5063045" -echo "export ANDROID_NDK_18R_PATH=${ANDROID_HOME}/ndk/18.1.5063045" >> "${HOME}/.bashrc" - -invoke_tests "XamarinNDK" diff --git a/images/macos/software-report/SoftwareReport.Android.psm1 b/images/macos/software-report/SoftwareReport.Android.psm1 index 91973332..97b96148 100644 --- a/images/macos/software-report/SoftwareReport.Android.psm1 +++ b/images/macos/software-report/SoftwareReport.Android.psm1 @@ -94,13 +94,13 @@ function Build-AndroidTable { } function Build-AndroidEnvironmentTable { - $androidVersions = Get-Item env:ANDROID_* + $androidVersions = Get-Item env:ANDROID_* - $shoulddResolveLink = 'ANDROID_NDK_PATH', 'ANDROID_NDK_HOME', 'ANDROID_NDK_ROOT', 'ANDROID_NDK_LATEST_HOME' + $shoulddResolveLink = 'ANDROID_NDK_LATEST_HOME' return $androidVersions | Sort-Object -Property Name | ForEach-Object { [PSCustomObject] @{ "Name" = $_.Name - "Value" = if ($shoulddResolveLink.Contains($_.Name )) { Get-PathWithLink($_.Value) } else {$_.Value} + "Value" = if ($shoulddResolveLink.Contains($_.Name )) { Get-PathWithLink($_.Value) } else { $_.Value } } } } @@ -175,23 +175,9 @@ function Get-AndroidGoogleAPIsVersions { } function Get-AndroidNDKVersions { - $os = Get-OSVersion - - if ($os.IsCatalina) { - # Hardcode NDK 15 as a separate case since it is installed manually without sdk-manager (to none default location) - $versions = @() - $versions += "15.2.4203891" - } - $ndkFolderPath = Join-Path (Get-AndroidSDKRoot) "ndk" $versions += Get-ChildItem -Path $ndkFolderPath -Name - $ndkDefaultVersion = Get-ToolsetValue "android.ndk.default" - $ndkDefaultFullVersion = Get-ChildItem "$env:ANDROID_HOME/ndk/$ndkDefaultVersion.*" -Name | Select-Object -Last 1 - - return ($versions | ForEach-Object { - $defaultPostfix = ( $_ -eq $ndkDefaultFullVersion ) ? " (default)" : "" - $_ + $defaultPostfix - } | Join-String -Separator "
") + return ($versions | Join-String -Separator "
") } function Get-IntelHaxmVersion { diff --git a/images/macos/templates/macOS-10.15.json b/images/macos/templates/macOS-10.15.json index 201bb31d..b876d53e 100644 --- a/images/macos/templates/macOS-10.15.json +++ b/images/macos/templates/macOS-10.15.json @@ -186,7 +186,6 @@ "./provision/core/cocoapods.sh", "./provision/core/android-toolsets.sh", "./provision/core/xamarin.sh", - "./provision/core/xamarin-android-ndk.sh", "./provision/core/vsmac.sh", "./provision/core/nvm.sh", "./provision/core/apache.sh", diff --git a/images/macos/tests/Android.Tests.ps1 b/images/macos/tests/Android.Tests.ps1 index 8c9f97fa..df1484e4 100644 --- a/images/macos/tests/Android.Tests.ps1 +++ b/images/macos/tests/Android.Tests.ps1 @@ -9,9 +9,7 @@ Describe "Android" { [int]$platformMinVersion = Get-ToolsetValue "android.platform_min_version" [version]$buildToolsMinVersion = Get-ToolsetValue "android.build_tools_min_version" [array]$ndkVersions = Get-ToolsetValue "android.ndk.versions" - [string]$ndkDefaultVersion = Get-ToolsetValue "android.ndk.default" $ndkFullVersions = $ndkVersions | ForEach-Object { Get-ChildItem "$env:ANDROID_HOME/ndk/${_}.*" -Name | Select-Object -Last 1} | ForEach-Object { "ndk/${_}" } - $ndkDefaultFullVersion = Get-ChildItem "$env:ANDROID_HOME/ndk/$ndkDefaultVersion.*" -Name | Select-Object -Last 1 # Platforms starting with a letter are the preview versions, which is not installed on the image $platformVersionsList = ($androidSdkManagerPackages | Where-Object { "$_".StartsWith("platforms;") }) -replace 'platforms;android-', '' | Where-Object { $_ -match "^\d+$" } | Sort-Object -Unique $platformsInstalled = $platformVersionsList | Where-Object { [int]$_ -ge $platformMinVersion } | ForEach-Object { "platforms/android-${_}" } @@ -23,8 +21,6 @@ Describe "Android" { $androidPackages = @( "tools", "platform-tools", - "tools/proguard", - "ndk-bundle", "cmake", $platformsInstalled, $buildTools, @@ -73,18 +69,11 @@ Describe "Android" { Context "Packages" { $testCases = $androidPackages | ForEach-Object { @{ PackageName = $_ } } - $defaultNdkTestCase = @{ NdkDefaultFullVersion = $ndkDefaultFullVersion } It "" -TestCases $testCases { param ([string] $PackageName) Validate-AndroidPackage $PackageName } - - It "ndk-bundle points to the default NDK version" -TestCases $defaultNdkTestCase { - $ndkLinkTarget = (Get-Item $env:ANDROID_NDK_HOME).Target - $ndkVersion = Split-Path -Path $ndkLinkTarget -Leaf - $ndkVersion | Should -BeExactly $NdkDefaultFullVersion - } } It "HAXM is installed" -Skip:($os.IsHigherThanCatalina) { diff --git a/images/macos/tests/XamarinNDK.Tests.ps1 b/images/macos/tests/XamarinNDK.Tests.ps1 deleted file mode 100644 index 05e87af5..00000000 --- a/images/macos/tests/XamarinNDK.Tests.ps1 +++ /dev/null @@ -1,32 +0,0 @@ - -Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1" -Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1" -DisableNameChecking -Import-Module "$PSScriptRoot/../software-report/SoftwareReport.Android.psm1" -DisableNameChecking - -$os = Get-OSVersion - -Describe "Xamarin NDK" { - BeforeAll { - $androidNdkToolchains = @("mips64el-linux-android-4.9", "mipsel-linux-android-4.9") - $ANDROID_SDK_DIR = Join-Path $env:HOME "Library" "Android" "sdk" - } - - Context "Xamarin NDK toolchains" -Skip:($os.IsHigherThanCatalina) { - $testCases = $androidNdkToolchains | ForEach-Object { @{AndroidNdkToolchain = $_} } - - It "" -TestCases $testCases { - param ([string] $AndroidNdkToolchain) - - $toolchainPath = Join-Path $ANDROID_SDK_DIR "ndk-bundle" "toolchains" $AndroidNdkToolchain - $toolchainPath | Should -Exist - } - } - - Context "Xamarin Legacy NDK versions" -Skip:($os.IsHigherThanCatalina) { - It "Android NDK version r18b is installed" { - $ndk18BundlePath = Join-Path $ANDROID_SDK_DIR "ndk" "18.1.5063045" "source.properties" - $rawContent = Get-Content $ndk18BundlePath -Raw - $rawContent | Should -BeLikeExactly "*Revision = 18.*" - } - } -} \ No newline at end of file diff --git a/images/macos/toolsets/toolset-10.15.json b/images/macos/toolsets/toolset-10.15.json index 05874c59..51a1ff98 100644 --- a/images/macos/toolsets/toolset-10.15.json +++ b/images/macos/toolsets/toolset-10.15.json @@ -179,7 +179,6 @@ "cmake;3.18.1" ], "ndk": { - "default": "23", "versions": [ "21", "23", "24" ] diff --git a/images/macos/toolsets/toolset-11.json b/images/macos/toolsets/toolset-11.json index 1306b902..1bd55f84 100644 --- a/images/macos/toolsets/toolset-11.json +++ b/images/macos/toolsets/toolset-11.json @@ -177,7 +177,6 @@ "cmake;3.18.1" ], "ndk": { - "default": "23", "versions": [ "21", "23", "24" ] diff --git a/images/macos/toolsets/toolset-12.json b/images/macos/toolsets/toolset-12.json index f8357ce2..381291df 100644 --- a/images/macos/toolsets/toolset-12.json +++ b/images/macos/toolsets/toolset-12.json @@ -112,7 +112,6 @@ "cmake;3.18.1" ], "ndk": { - "default": "23", "versions": [ "21", "23", "24" ]