diff --git a/help/CreateImageAndAzureResources.md b/help/CreateImageAndAzureResources.md
index 123d335cf..3401c1fce 100644
--- a/help/CreateImageAndAzureResources.md
+++ b/help/CreateImageAndAzureResources.md
@@ -12,6 +12,7 @@ After successful image generation, a snapshot of the temporary VM will be conver
- `packer` - Can be downloaded from https://www.packer.io/downloads
- `PowerShell 5.0 or higher` or `PSCore` for linux distributes.
- `Azure CLI ` - https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest
+- `Azure Powershell module` - https://docs.microsoft.com/en-us/powershell/azure/install-az-ps?view=azps-4.6.1
### Azure DevOps self-hosted pool requirements
To connect to a temporary VM packer use WinRM or SSH connections on public IP interfaces.
@@ -31,7 +32,7 @@ Download `packer` from https://www.packer.io/downloads, or install it via Chocol
choco install packer
```
-Install Azure CLI - https://docs.microsoft.com/ru-ru/cli/azure/install-azure-cli-windows?view=azure-cli-latest&tabs=azure-cli.
+Install Azure CLI - https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-windows?view=azure-cli-latest&tabs=azure-cli.
```
Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; rm .\AzureCLI.msi
```
diff --git a/helpers/GenerateResourcesAndImage.ps1 b/helpers/GenerateResourcesAndImage.ps1
index 321770949..31d48ee65 100644
--- a/helpers/GenerateResourcesAndImage.ps1
+++ b/helpers/GenerateResourcesAndImage.ps1
@@ -110,12 +110,12 @@ Function GenerateResourcesAndImage {
$ServicePrincipalClientSecret = $env:UserName + [System.GUID]::NewGuid().ToString().ToUpper();
$InstallPassword = $env:UserName + [System.GUID]::NewGuid().ToString().ToUpper();
- Login-AzureRmAccount
- Set-AzureRmContext -SubscriptionId $SubscriptionId
+ Connect-AzAccount
+ Set-AzContext -SubscriptionId $SubscriptionId
$alreadyExists = $true;
try {
- Get-AzureRmResourceGroup -Name $ResourceGroupName
+ Get-AzResourceGroup -Name $ResourceGroupName
Write-Verbose "Resource group was found, will delete and recreate it."
}
catch {
@@ -126,8 +126,8 @@ Function GenerateResourcesAndImage {
if ($alreadyExists) {
if($Force -eq $true) {
# Cleanup the resource group if it already exitsted before
- Remove-AzureRmResourceGroup -Name $ResourceGroupName -Force
- New-AzureRmResourceGroup -Name $ResourceGroupName -Location $AzureLocation
+ Remove-AzResourceGroup -Name $ResourceGroupName -Force
+ New-AzResourceGroup -Name $ResourceGroupName -Location $AzureLocation
} else {
$title = "Delete Resource Group"
$message = "The resource group you specified already exists. Do you want to clean it up?"
@@ -146,13 +146,13 @@ Function GenerateResourcesAndImage {
switch ($result)
{
- 0 { Remove-AzureRmResourceGroup -Name $ResourceGroupName -Force; New-AzureRmResourceGroup -Name $ResourceGroupName -Location $AzureLocation }
+ 0 { Remove-AzResourceGroup -Name $ResourceGroupName -Force; New-AzResourceGroup -Name $ResourceGroupName -Location $AzureLocation }
1 { <# Do nothing #> }
2 { exit }
}
}
} else {
- New-AzureRmResourceGroup -Name $ResourceGroupName -Location $AzureLocation
+ New-AzResourceGroup -Name $ResourceGroupName -Location $AzureLocation
}
# This script should follow the recommended naming conventions for azure resources
@@ -164,19 +164,19 @@ Function GenerateResourcesAndImage {
$storageAccountName = $storageAccountName.Replace("-", "").Replace("_", "").Replace("(", "").Replace(")", "").ToLower()
$storageAccountName += "001"
- New-AzureRmStorageAccount -ResourceGroupName $ResourceGroupName -AccountName $storageAccountName -Location $AzureLocation -SkuName "Standard_LRS"
+ New-AzStorageAccount -ResourceGroupName $ResourceGroupName -AccountName $storageAccountName -Location $AzureLocation -SkuName "Standard_LRS"
$spDisplayName = [System.GUID]::NewGuid().ToString().ToUpper()
- $sp = New-AzureRmADServicePrincipal -DisplayName $spDisplayName -Password (ConvertTo-SecureString $ServicePrincipalClientSecret -AsPlainText -Force)
+ $sp = New-AzADServicePrincipal -DisplayName $spDisplayName -Password (ConvertTo-SecureString $ServicePrincipalClientSecret -AsPlainText -Force)
$spAppId = $sp.ApplicationId
$spClientId = $sp.ApplicationId
$spObjectId = $sp.Id
Start-Sleep -Seconds $SecondsToWaitForServicePrincipalSetup
- New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $spAppId
+ New-AzRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $spAppId
Start-Sleep -Seconds $SecondsToWaitForServicePrincipalSetup
- $sub = Get-AzureRmSubscription -SubscriptionId $SubscriptionId
+ $sub = Get-AzSubscription -SubscriptionId $SubscriptionId
$tenantId = $sub.TenantId
# "", "Note this variable-setting script for running Packer with these Azure resources in the future:", "==============================================================================================", "`$spClientId = `"$spClientId`"", "`$ServicePrincipalClientSecret = `"$ServicePrincipalClientSecret`"", "`$SubscriptionId = `"$SubscriptionId`"", "`$tenantId = `"$tenantId`"", "`$spObjectId = `"$spObjectId`"", "`$AzureLocation = `"$AzureLocation`"", "`$ResourceGroupName = `"$ResourceGroupName`"", "`$storageAccountName = `"$storageAccountName`"", "`$install_password = `"$install_password`"", ""
diff --git a/images.CI/macos/azure-pipelines/image-generation.yml b/images.CI/macos/azure-pipelines/image-generation.yml
index 490cbda6d..7f02d90f9 100644
--- a/images.CI/macos/azure-pipelines/image-generation.yml
+++ b/images.CI/macos/azure-pipelines/image-generation.yml
@@ -7,6 +7,8 @@ jobs:
variables:
- group: Mac-Cloud Image Generation
- group: Mac-Cloud Image Generation Key Vault
+ - name: VirtualMachineName
+ value: $(Build.BuildNumber).$(System.JobAttempt)
steps:
- checkout: self
@@ -56,7 +58,7 @@ jobs:
-var="output_folder=$(output-folder)" `
-var="vm_username=$(vm-username)" `
-var="vm_password=$(vm-password)" `
- -var="build_id=$(Build.BuildNumber)" `
+ -var="build_id=${{ variables.VirtualMachineName }}" `
-var="baseimage_name=${{ parameters.base_image_name }}" `
-var="github_feed_token=$(github-feed-token)" `
-var="xcode_install_user=$(xcode-installation-user)" `
@@ -83,7 +85,7 @@ jobs:
ls $(Common.TestResultsDirectory)
echo "Put VM name to 'VM_Done_Name' file"
- echo "$(Build.BuildNumber)" > "$(Build.ArtifactStagingDirectory)/VM_Done_Name"
+ echo "${{ variables.VirtualMachineName }}" > "$(Build.ArtifactStagingDirectory)/VM_Done_Name"
displayName: Prepare artifact
- bash: |
diff --git a/images/linux/scripts/installers/post-deployment.sh b/images/linux/scripts/installers/post-deployment.sh
new file mode 100644
index 000000000..2864dae4f
--- /dev/null
+++ b/images/linux/scripts/installers/post-deployment.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+################################################################################
+## File: post-deployment.sh
+## Desc: Post deployment actions
+################################################################################
+
+# set chmod -R 777 /opt
+if [[ -d "/opt" ]]; then
+ echo "chmod -R 777 /opt"
+ chmod -R 777 /opt
+fi
+
+# remove installer and helper folders
+rm -rf $HELPER_SCRIPT_FOLDER
+rm -rf $INSTALLER_SCRIPT_FOLDER
+chmod 755 $IMAGE_FOLDER
diff --git a/images/linux/ubuntu1604.json b/images/linux/ubuntu1604.json
index 8d873f50b..e770f2f08 100644
--- a/images/linux/ubuntu1604.json
+++ b/images/linux/ubuntu1604.json
@@ -304,10 +304,13 @@
},
{
"type": "shell",
- "inline": [
- "rm -rf {{user `helper_script_folder`}}",
- "rm -rf {{user `installer_script_folder`}}",
- "chmod 755 {{user `image_folder`}}"
+ "scripts":[
+ "{{template_dir}}/scripts/installers/post-deployment.sh"
+ ],
+ "environment_vars":[
+ "HELPER_SCRIPT_FOLDER={{user `helper_script_folder`}}",
+ "INSTALLER_SCRIPT_FOLDER={{user `installer_script_folder`}}",
+ "IMAGE_FOLDER={{user `image_folder`}}"
],
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
},
diff --git a/images/linux/ubuntu1804.json b/images/linux/ubuntu1804.json
index 705e45ca5..7dcb51df1 100644
--- a/images/linux/ubuntu1804.json
+++ b/images/linux/ubuntu1804.json
@@ -308,10 +308,13 @@
},
{
"type": "shell",
- "inline": [
- "rm -rf {{user `helper_script_folder`}}",
- "rm -rf {{user `installer_script_folder`}}",
- "chmod 755 {{user `image_folder`}}"
+ "scripts":[
+ "{{template_dir}}/scripts/installers/post-deployment.sh"
+ ],
+ "environment_vars":[
+ "HELPER_SCRIPT_FOLDER={{user `helper_script_folder`}}",
+ "INSTALLER_SCRIPT_FOLDER={{user `installer_script_folder`}}",
+ "IMAGE_FOLDER={{user `image_folder`}}"
],
"execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
},
diff --git a/images/linux/ubuntu2004.json b/images/linux/ubuntu2004.json
index 2932ad535..335144f0c 100644
--- a/images/linux/ubuntu2004.json
+++ b/images/linux/ubuntu2004.json
@@ -308,6 +308,18 @@
"destination": "{{template_dir}}/Ubuntu2004-README.md",
"direction": "download"
},
+ {
+ "type": "shell",
+ "scripts":[
+ "{{template_dir}}/scripts/installers/post-deployment.sh"
+ ],
+ "environment_vars":[
+ "HELPER_SCRIPT_FOLDER={{user `helper_script_folder`}}",
+ "INSTALLER_SCRIPT_FOLDER={{user `installer_script_folder`}}",
+ "IMAGE_FOLDER={{user `image_folder`}}"
+ ],
+ "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
+ },
{
"type": "shell",
"scripts":[
@@ -317,15 +329,6 @@
"RUN_VALIDATION={{user `run_validation_diskspace`}}"
]
},
- {
- "type": "shell",
- "inline": [
- "rm -rf {{user `helper_script_folder`}}",
- "rm -rf {{user `installer_script_folder`}}",
- "chmod 755 {{user `image_folder`}}"
- ],
- "execute_command": "sudo sh -c '{{ .Vars }} {{ .Path }}'"
- },
{
"type": "file",
"source": "{{template_dir}}/config/ubuntu2004.conf",
diff --git a/images/macos/helpers/Xcode.Helpers.psm1 b/images/macos/helpers/Xcode.Helpers.psm1
index 6f3dcf730..dbc4803c2 100644
--- a/images/macos/helpers/Xcode.Helpers.psm1
+++ b/images/macos/helpers/Xcode.Helpers.psm1
@@ -91,4 +91,17 @@ function Get-XcodePairsList {
$result += "$watchName $phoneName"
}
return $result
+}
+
+function Test-XcodeStableVersion {
+ param([Parameter(Mandatory)][string]$Version)
+
+ if ($Version -match "beta") {
+ return $false
+ }
+ if ($Version -match "GM") {
+ return $false
+ }
+
+ return $true
}
\ No newline at end of file
diff --git a/images/macos/provision/configuration/configure-machine.sh b/images/macos/provision/configuration/configure-machine.sh
index d34d7002a..dbfae6731 100644
--- a/images/macos/provision/configuration/configure-machine.sh
+++ b/images/macos/provision/configuration/configure-machine.sh
@@ -18,4 +18,13 @@ sudo pmset hibernatemode 0
sudo rm -f /var/vm/sleepimage
# Change screen resolution to the maximum supported for 4Mb video memory
-sudo "/Library/Application Support/VMware Tools/vmware-resolutionSet" 1176 885
\ No newline at end of file
+sudo "/Library/Application Support/VMware Tools/vmware-resolutionSet" 1176 885
+
+# https://developer.apple.com/support/expiration/
+# Enterprise iOS Distribution Certificates generated between February 7 and September 1st, 2020 will expire on February 7, 2023.
+# Rotate the certificate before expiration to ensure your apps are installed and signed with an active certificate.
+# Confirm that the correct intermediate certificate is installed by verifying the expiration date is set to 2030.
+# sudo security delete-certificate -Z FF6797793A3CD798DC5B2ABEF56F73EDC9F83A64 /Library/Keychains/System.keychain
+curl https://www.apple.com/certificateauthority/AppleWWDRCAG3.cer --output $HOME/AppleWWDRCAG3.cer --silent
+sudo security add-trusted-cert -d -r unspecified -k /Library/Keychains/System.keychain $HOME/AppleWWDRCAG3.cer
+rm $HOME/AppleWWDRCAG3.cer
\ No newline at end of file
diff --git a/images/macos/provision/core/commonutils.sh b/images/macos/provision/core/commonutils.sh
index efa4d0160..2f2a18ce5 100644
--- a/images/macos/provision/core/commonutils.sh
+++ b/images/macos/provision/core/commonutils.sh
@@ -1,15 +1,14 @@
#!/bin/sh
-
set -e
source ~/utils/utils.sh
+
+# TO-DO: Move the list of brew packages and casks to toolset
+
# brew install
binst_common_utils=(
carthage
- xctool
cmake
- bats
- parallel
subversion
go
gnupg
@@ -27,6 +26,14 @@ binst_common_utils=(
aria2
)
+if is_Less_BigSur; then
+ binst_common_utils+=(
+ xctool
+ bats
+ parallel
+ )
+fi
+
for package in ${binst_common_utils[@]}; do
echo "Install $package"
brew install $package
diff --git a/images/macos/provision/core/dotnet.sh b/images/macos/provision/core/dotnet.sh
index 4e8f7dfaa..780564881 100755
--- a/images/macos/provision/core/dotnet.sh
+++ b/images/macos/provision/core/dotnet.sh
@@ -19,7 +19,13 @@ chmod +x ./dotnet-install.sh
ARGS_LIST=()
echo "Parsing dotnet SDK (except rc and preview versions) from .json..."
-if is_Less_Catalina; then
+# TO-DO: move the list of versions to install to toolset
+if is_BigSur; then
+ DOTNET_CHANNELS=(
+ 'https://raw.githubusercontent.com/dotnet/core/master/release-notes/2.1/releases.json'
+ 'https://raw.githubusercontent.com/dotnet/core/master/release-notes/3.1/releases.json'
+ )
+elif is_Less_Catalina; then
DOTNET_CHANNELS=(
'https://raw.githubusercontent.com/dotnet/core/master/release-notes/2.1/releases.json'
)
diff --git a/images/macos/provision/core/node.sh b/images/macos/provision/core/node.sh
index f5bb099f7..daf5ea408 100644
--- a/images/macos/provision/core/node.sh
+++ b/images/macos/provision/core/node.sh
@@ -39,7 +39,9 @@ fi
echo Installing yarn...
curl -o- -L https://yarnpkg.com/install.sh | bash
-for module in ${node_common_modules[@]}; do
- echo "Install $module"
- npm install -g $module
-done
+if is_Less_BigSur; then
+ for module in ${node_common_modules[@]}; do
+ echo "Install $module"
+ npm install -g $module
+ done
+fi
diff --git a/images/macos/provision/core/openssl.sh b/images/macos/provision/core/openssl.sh
index 3b66441c4..0638dccf8 100755
--- a/images/macos/provision/core/openssl.sh
+++ b/images/macos/provision/core/openssl.sh
@@ -4,7 +4,11 @@ export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"
echo Installing OpenSSL...
/usr/local/bin/brew install openssl
-/usr/local/bin/brew link openssl --force
+
+if is_BigSur; then
+ ln -sf $(brew --prefix openssl)/bin/openssl /usr/local/bin/openssl
+ exit 0
+fi
# Install OpenSSL 1.0.2t
# https://www.openssl.org/policies/releasestrat.html - Version 1.0.2 will be supported until 2019-12-31 (LTS)
diff --git a/images/macos/provision/core/python.sh b/images/macos/provision/core/python.sh
index 05b135e1e..41488642e 100755
--- a/images/macos/provision/core/python.sh
+++ b/images/macos/provision/core/python.sh
@@ -1,3 +1,6 @@
+#!/bin/sh
+source ~/utils/utils.sh
+
echo "Installing Python Tooling"
echo "Brew Installing Python 3"
diff --git a/images/macos/provision/core/ruby.sh b/images/macos/provision/core/ruby.sh
index 912b00054..19877de3e 100755
--- a/images/macos/provision/core/ruby.sh
+++ b/images/macos/provision/core/ruby.sh
@@ -2,13 +2,16 @@
set -e
-if [ $(id -u) -eq 0 ]; then
- echo "This script can not run as root. Aborting..."
- exit 1
+source ~/utils/utils.sh
+
+echo Installing Ruby...
+if is_Less_BigSur; then
+ # We can't install latest ruby 2.7 as a default version related with bug
+ # https://github.com/fastlane/fastlane/issues/15397
+ /usr/local/bin/brew install ruby@2.6
+ ln -sf /usr/local/opt/ruby\@2.6 /usr/local/opt/ruby
+else
+ brew install ruby
fi
-# We can't install latest ruby 2.7 as a default version related with bug
-# https://github.com/fastlane/fastlane/issues/15397
-echo Installing Ruby...
-/usr/local/bin/brew install ruby@2.6
-ln -sf /usr/local/opt/ruby\@2.6 /usr/local/opt/ruby
+
diff --git a/images/macos/provision/core/rubygem.sh b/images/macos/provision/core/rubygem.sh
index 6872e57e7..83639e472 100755
--- a/images/macos/provision/core/rubygem.sh
+++ b/images/macos/provision/core/rubygem.sh
@@ -10,14 +10,16 @@ gem install xcode-install --force
echo Installing CocoaPods...
gem install cocoapods
-# fix nomad-cli installation
-if is_HighSierra; then
- brew install libxml2
- gem install nokogiri -v 1.6.8.1 -- --use-system-libraries --with-xml2-include=$(brew --prefix libxml2)/include/libxml2
-fi
+if is_Less_BigSur; then
+ # fix nomad-cli installation
+ if is_HighSierra; then
+ brew install libxml2
+ gem install nokogiri -v 1.6.8.1 -- --use-system-libraries --with-xml2-include=$(brew --prefix libxml2)/include/libxml2
+ fi
-echo Installing nomad-cli...
-gem install nomad-cli
+ echo Installing nomad-cli...
+ gem install nomad-cli
+fi
echo Installing xcpretty...
gem install xcpretty
diff --git a/images/macos/provision/core/xcode-ctl.sh b/images/macos/provision/core/xcode-ctl.sh
index 18f352db0..cea7aa633 100644
--- a/images/macos/provision/core/xcode-ctl.sh
+++ b/images/macos/provision/core/xcode-ctl.sh
@@ -9,7 +9,7 @@
clt_placeholder="/tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress"
touch $clt_placeholder
clt_label=`/usr/sbin/softwareupdate -l |
- grep -B 1 -E 'Command Line Tools' |
+ grep -B 1 -E 'Command Line Tools beta 5' |
awk -F'*' '/^ *\\*/ {print \$2}' |
sed -e 's/^ *Label: //' -e 's/^ *//' |
sort -V |
diff --git a/images/macos/provision/core/xcode-tools.sh b/images/macos/provision/core/xcode-tools.sh
index f301a39c4..ef9bf648c 100755
--- a/images/macos/provision/core/xcode-tools.sh
+++ b/images/macos/provision/core/xcode-tools.sh
@@ -36,7 +36,12 @@ do
extractXcodeXip $WORK_DIR "$VERSION_TO_INSTALL"
# Remove "beta" postfix from version
- XCODE_VERSION=$(echo $XCODE_VERSION | cut -d"_" -f 1)
+ if [[ $XCODE_VERSION == "12_beta" ]] && is_Catalina ; then
+ # trick to install Xcode 12 GM and Xcode 12 beta 6 side by side
+ XCODE_VERSION="12_beta"
+ else
+ XCODE_VERSION=$(echo $XCODE_VERSION | cut -d"_" -f 1)
+ fi
echo "Checking if unpacked Xcode ${XCODE_VERSION} is valid"
validateXcodeIntegrity "$WORK_DIR"
@@ -69,6 +74,13 @@ do
continue
fi
+ if [[ $XCODE_VERSION == "12_beta" ]] && is_Catalina ; then
+ # trick to install Xcode 12 GM and Xcode 12 beta 6 side by side
+ XCODE_VERSION="12_beta"
+ else
+ XCODE_VERSION=$(echo $XCODE_VERSION | cut -d"_" -f 1)
+ fi
+
echo "Running 'runFirstLaunch' for Xcode ${XCODE_VERSION}..."
runFirstLaunch $XCODE_VERSION
done
diff --git a/images/macos/provision/utils/xcode-utils.sh b/images/macos/provision/utils/xcode-utils.sh
index 9cd795f03..0f7855ec1 100644
--- a/images/macos/provision/utils/xcode-utils.sh
+++ b/images/macos/provision/utils/xcode-utils.sh
@@ -11,7 +11,7 @@ getXcodeVersionToInstall() {
local XCODE_VERSION="$1"
if [[ ! $XCODE_VERSION =~ "_beta" ]]; then
- echo "$XCODE_VERSION"
+ echo "${XCODE_VERSION//_/ }"
else
local XCODE_BETA="${XCODE_VERSION/_/ }"
echo "$(xcversion list | sort -r | grep -m 1 "$XCODE_BETA")"
@@ -59,7 +59,6 @@ extractXcodeXip() {
local WORKING_DIR="$1"
local XCODE_VERSION="$2"
XCODE_XIP="${WORKING_DIR}/Xcode_${XCODE_VERSION// /_}.xip"
- echo "XCODE_XIP = $XCODE_XIP"
open -W $XCODE_XIP
@@ -75,7 +74,7 @@ extractXcodeXip() {
createBetaSymlink() {
local XCODE_VERSION=$1
- if [[ $XCODE_VERSION =~ 1[01].* ]] || [[ $XCODE_VERSION == "12" ]] || [[ $XCODE_VERSION == "12_beta" ]]; then
+ if [[ $XCODE_VERSION =~ 1[01].* ]] || [[ $XCODE_VERSION == "12" ]]; then
ln -sf "/Applications/Xcode_${XCODE_VERSION}.app" "/Applications/Xcode_${XCODE_VERSION}_beta.app"
fi
}
\ No newline at end of file
diff --git a/images/macos/software-report/SoftwareReport.Common.psm1 b/images/macos/software-report/SoftwareReport.Common.psm1
index cd3cce626..c3fe75171 100644
--- a/images/macos/software-report/SoftwareReport.Common.psm1
+++ b/images/macos/software-report/SoftwareReport.Common.psm1
@@ -58,7 +58,7 @@ function Get-GccVersion {
$versionList = @("8", "9")
$versionList | Foreach-Object {
$version = Run-Command "gcc-${_} --version" | Select-Object -First 1
- "$version — available by ``gcc-${_}`` alias"
+ "$version - available by ``gcc-${_}`` alias"
}
}
@@ -66,7 +66,7 @@ function Get-FortranVersion {
$versionList = @("8", "9")
$versionList | Foreach-Object {
$version = Run-Command "gfortran-${_} --version" | Select-Object -First 1
- "$version — available by ``gfortran-${_}`` alias"
+ "$version - available by ``gfortran-${_}`` alias"
}
}
diff --git a/images/macos/software-report/SoftwareReport.Generator.ps1 b/images/macos/software-report/SoftwareReport.Generator.ps1
index 9627e24e1..b8a5283cc 100644
--- a/images/macos/software-report/SoftwareReport.Generator.ps1
+++ b/images/macos/software-report/SoftwareReport.Generator.ps1
@@ -77,7 +77,6 @@ $homebrewVersion = Run-Command "brew --version" | Select-Object -First 1
$npmVersion = Run-Command "npm --version"
$yarnVersion = Run-Command "yarn --version"
$nugetVersion = Run-Command "nuget help" | Select-Object -First 1 | Take-Part -Part 2
-$pipVersion = Get-PipVersion -Version 2
$pip3Version = Get-PipVersion -Version 3
$condaVersion = Invoke-Expression "conda --version"
$rubyGemsVersion = Run-Command "gem --version"
@@ -88,7 +87,13 @@ if ($os.IsHigherThanMojave) {
$vcpkgVersion = Get-VcpkgVersion
$markdown += New-MDList -Lines $vcpkgVersion -Style Unordered -NoNewLine
}
+if ($os.IsLessThanBigSur) {
+ $pipVersion = Get-PipVersion -Version 2
+ $markdown += New-MDList -Style Unordered -Lines @("Pip ${pipVersion}") -NoNewLine
+}
+
$markdown += New-MDList -Style Unordered -Lines @(
+ "Pip ${pip3Version}",
$bundlerVersion,
"Carthage ${carthageVersion}",
"CocoaPods ${cocoaPodsVersion}",
@@ -96,8 +101,6 @@ $markdown += New-MDList -Style Unordered -Lines @(
"NPM ${npmVersion}",
"Yarn ${yarnVersion}",
"NuGet ${nugetVersion}",
- "Pip ${pipVersion}",
- "Pip ${pip3Version}",
"Mini${condaVersion}",
"RubyGems ${rubyGemsVersion}",
"Composer ${composerVersion}"
@@ -124,7 +127,6 @@ $gitLFSVersion = Run-Command "git-lfs version" | Take-Part -Part 0 | Take-Part -
$hubVersion = Run-Command "hub version | grep 'hub version'" | Take-Part -Part 2
$wgetVersion = Run-Command "wget --version" | Select-String "GNU Wget" | Take-Part -Part 2
$svnVersion = Run-Command "svn --version --quiet"
-$parallelVersion = Run-Command "parallel --version" | Select-String "GNU parallel" | Select-Object -First 1
$jqVersion = Run-Command "jq --version" | Take-Part -Part 1 -Delimiter "-"
$opensslVersion = Get-Item /usr/local/opt/openssl | ForEach-Object {"{0} ``({1} -> {2})``" -f (Run-Command "openssl version"), $_.FullName, $_.Target}
$gpgVersion = Run-Command "gpg --version" | Select-String 'gpg (GnuPG)' -SimpleMatch
@@ -153,7 +155,6 @@ $markdown += New-MDList -Style Unordered -NoNewLine -Lines @(
"GNU Wget ${wgetVersion}",
"Subversion (SVN) ${svnVersion}",
"Packer $packerVersion",
- $parallelVersion,
$opensslVersion,
"jq ${jqVersion}",
$gpgVersion,
@@ -173,7 +174,11 @@ $markdown += New-MDList -Style Unordered -NoNewLine -Lines @(
)
if ($os.IsHigherThanMojave) {
$newmanVersion = Run-Command "newman --version"
- $markdown += New-MDList -Lines "Newman $newmanVersion" -Style Unordered
+ $markdown += New-MDList -Lines "Newman $newmanVersion" -Style Unordered -NoNewLine
+}
+if ($os.IsLessThanBigSur) {
+ $parallelVersion = Run-Command "parallel --version" | Select-String "GNU parallel" | Select-Object -First 1
+ $markdown += New-MDList -Lines $parallelVersion -Style Unordered
}
$markdown += New-MDNewLine
diff --git a/images/macos/software-report/SoftwareReport.Xcode.psm1 b/images/macos/software-report/SoftwareReport.Xcode.psm1
index d4cda2eb6..59754d583 100644
--- a/images/macos/software-report/SoftwareReport.Xcode.psm1
+++ b/images/macos/software-report/SoftwareReport.Xcode.psm1
@@ -1,3 +1,7 @@
+Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
+
+$os = Get-OSVersion
+
function Get-XcodePaths {
$xcodePaths = Get-ChildItemWithoutSymlinks "/Applications" -Filter "Xcode_*.app"
return $xcodePaths | Select-Object -ExpandProperty Fullname
@@ -43,7 +47,7 @@ function Get-XcodeInfoList {
$versionInfo.Path = $xcodeRootPath
$versionInfo.IsDefault = ($xcodeRootPath -eq $defaultXcodeRootPath)
- $xcodeInfo.Add($versionInfo.Version.ToString(), [PSCustomObject] @{
+ $xcodeInfo.Add($xcodeRootPath, [PSCustomObject] @{
VersionInfo = $versionInfo
SDKInfo = Get-XcodeSDKList
SimulatorsInfo = Get-XcodeSimulatorsInfo
@@ -217,20 +221,27 @@ function Build-XcodeSimulatorsTable {
}
function Build-XcodeSupportToolsSection {
- $nomadCLI = Run-Command "gem -v nomad-cli"
- $nomadIPA = Run-Command "ipa -version"
$xcpretty = Run-Command "xcpretty --version"
- $xctool = Run-Command "xctool --version"
$xcversion = Run-Command "xcversion --version" | Select-String "^[0-9]"
+ $toolList = @(
+ "xcpretty $xcpretty",
+ "xcversion $xcversion"
+ )
+
+ if ($os.IsLessThanBigSur) {
+ $nomadCLI = Run-Command "gem -v nomad-cli"
+ $nomadIPA = Run-Command "ipa -version"
+ $xctool = Run-Command "xctool --version"
+ $toolList += @(
+ "Nomad CLI $nomadCLI",
+ "Nomad CLI IPA $nomadIPA",
+ "xctool $xctool"
+ )
+ }
+
$output = ""
$output += New-MDHeader "Xcode Support Tools" -Level 4
- $output += New-MDList -Style Unordered -Lines @(
- "Nomad CLI $nomadCLI",
- "Nomad CLI IPA $nomadIPA",
- "xcpretty $xcpretty",
- "xctool $xctool",
- "xcversion $xcversion"
- )
+ $output += New-MDList -Style Unordered -Lines $toolList
return $output
}
\ No newline at end of file
diff --git a/images/macos/templates/macOS-11.0.json b/images/macos/templates/macOS-11.0.json
index 7cf7db8ed..6da9df38d 100644
--- a/images/macos/templates/macOS-11.0.json
+++ b/images/macos/templates/macOS-11.0.json
@@ -129,6 +129,7 @@
"execute_command": "chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}",
"pause_before": "30s",
"scripts": [
+ "./provision/core/xcode-ctl.sh",
"./provision/core/homebrew.sh",
"./provision/core/dotnet.sh",
"./provision/core/python.sh",
diff --git a/images/macos/tests/Common.Tests.ps1 b/images/macos/tests/Common.Tests.ps1
index ed813f58c..14495f2f0 100644
--- a/images/macos/tests/Common.Tests.ps1
+++ b/images/macos/tests/Common.Tests.ps1
@@ -12,6 +12,14 @@ Describe "Disk free space" {
}
}
+Describe "Certificate" {
+ It "Apple Worldwide Developer Relations Certification Authority[expired: 2030-02] is installed" {
+ $sha1Hash = "06EC06599F4ED0027CC58956B4D3AC1255114F35"
+ $certs = security find-certificate -a -c Worldwide -p -Z | Out-String
+ $certs | Should -Match $sha1Hash
+ }
+}
+
Describe "Git" {
It "git is installed" {
"git --version" | Should -ReturnZeroExitCode
@@ -94,17 +102,19 @@ Describe "Common utilities" {
"aliyun --version" | Should -ReturnZeroExitCode
}
- It "Mobile Center CLI" {
+ It "Mobile Center CLI" -Skip:($os.IsBigSur) {
"mobile-center --version" | Should -ReturnZeroExitCode
}
- It "Nomad CLI" {
- $result = Get-CommandResult "gem list"
- $result.Output | Should -BeLike "*nomad-cli*"
- }
-
- It "Nomad CLI IPA" {
- "ipa --version" | Should -ReturnZeroExitCode
+ Context "Nomad" -Skip:($os.IsBigSur) {
+ It "Nomad CLI" {
+ $result = Get-CommandResult "gem list"
+ $result.Output | Should -BeLike "*nomad-cli*"
+ }
+
+ It "Nomad CLI IPA" {
+ "ipa --version" | Should -ReturnZeroExitCode
+ }
}
It "Conda" {
@@ -129,7 +139,7 @@ Describe "Common utilities" {
"curl --version" | Should -ReturnZeroExitCode
}
- It "xctool" {
+ It "xctool" -Skip:($os.IsBigSur) {
"xctool --version" | Should -ReturnZeroExitCode
}
@@ -161,7 +171,7 @@ Describe "Common utilities" {
It "PostgreSQL-Client" {
"psql --version" | Should -ReturnZeroExitCode
}
-
+
It "PostgreSQL-Server" {
"pg_config --version" | Should -ReturnZeroExitCode
}
@@ -178,11 +188,11 @@ Describe "Common utilities" {
Get-WhichTool "php" | Should -Not -BeLike "/usr/bin/php*"
"php --version" | Should -ReturnZeroExitCode
}
-
+
It "Composer" {
"composer --version" | Should -ReturnZeroExitCode
}
-
+
It "R" -Skip:($os.IsBigSur) {
"R --version" | Should -ReturnZeroExitCode
}
@@ -198,7 +208,7 @@ Describe "Common utilities" {
It "bazelisk" {
"bazelisk version" | Should -ReturnZeroExitCode
}
-
+
It "Julia" {
"julia --version" | Should -ReturnZeroExitCode
}
@@ -252,7 +262,7 @@ Describe "Browsers" {
It "Microsoft Edge Driver" {
"msedgedriver --version" | Should -ReturnZeroExitCode
}
-
+
It "Firefox" {
$firefoxLocation = "/Applications/Firefox.app/Contents/MacOS/firefox"
$firefoxLocation | Should -Exist
@@ -304,7 +314,7 @@ Describe "Haskell" -Skip:($os.IsHighSierra) {
It "GHC" {
"ghc --version" | Should -ReturnZeroExitCode
}
-
+
It "Cabal" {
"cabal --version" | Should -ReturnZeroExitCode
}
@@ -327,7 +337,7 @@ Describe "Gcc" -Skip:($os.IsHighSierra) {
param (
[string] $GccVersion
)
-
+
"gcc-$GccVersion --version" | Should -ReturnZeroExitCode
}
}
diff --git a/images/macos/tests/Python.Tests.ps1 b/images/macos/tests/Python.Tests.ps1
index 7b5f8348d..76cd8941b 100644
--- a/images/macos/tests/Python.Tests.ps1
+++ b/images/macos/tests/Python.Tests.ps1
@@ -1,6 +1,8 @@
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1"
+$os = Get-OSVersion
+
Describe "Python" {
It "Python 2 is available" {
"python --version" | Should -ReturnZeroExitCode
@@ -10,7 +12,7 @@ Describe "Python" {
(Get-CommandResult "python --version").Output | Should -BeLike "Python 2.*"
}
- It "Python 2 is installed under /usr/local/bin" {
+ It "Python 2 is installed under /usr/local/bin" -Skip:($os.IsBigSur) {
Get-WhichTool "python" | Should -BeLike "/usr/local/bin*"
}
@@ -22,7 +24,7 @@ Describe "Python" {
Get-WhichTool "python3" | Should -BeLike "/usr/local/bin*"
}
- It "Pip 2 is available" {
+ It "Pip 2 is available" -Skip:($os.IsBigSur) {
"pip --version" | Should -ReturnZeroExitCode
}
diff --git a/images/macos/tests/Xamarin.Tests.ps1 b/images/macos/tests/Xamarin.Tests.ps1
index 5e60f5366..2145f29a7 100644
--- a/images/macos/tests/Xamarin.Tests.ps1
+++ b/images/macos/tests/Xamarin.Tests.ps1
@@ -191,7 +191,7 @@ Describe "Xamarin Bundles" {
$XAMARIN_ANDROID_VERSIONS_PATH = "/Library/Frameworks/Xamarin.Android.framework/Versions"
}
- $XAMARIN_BUNDLES = Get-ToolsetValue "xamarin.bundles"
+ [array]$XAMARIN_BUNDLES = Get-ToolsetValue "xamarin.bundles"
$XAMARIN_DEFAULT_BUNDLE = Get-ToolsetValue "xamarin.bundle-default"
If ($XAMARIN_DEFAULT_BUNDLE -eq "latest") { $XAMARIN_DEFAULT_BUNDLE = $XAMARIN_BUNDLES[0].symlink }
diff --git a/images/macos/tests/Xcode.Tests.ps1 b/images/macos/tests/Xcode.Tests.ps1
index 543a715db..ff8d5e932 100644
--- a/images/macos/tests/Xcode.Tests.ps1
+++ b/images/macos/tests/Xcode.Tests.ps1
@@ -56,7 +56,7 @@ Describe "Xcode" {
}
Context "XCODE_DEVELOPER_DIR" {
- $stableXcodeVersions = $XCODE_VERSIONS | Where-Object { -not ($_ -match "beta") }
+ $stableXcodeVersions = $XCODE_VERSIONS | Where-Object { Test-XcodeStableVersion $_ }
$majorXcodeVersions = $stableXcodeVersions | ForEach-Object { $_.Split(".")[0] } | Select-Object -Unique
$testCases = $majorXcodeVersions | ForEach-Object {
$majorXcodeVersion = $_
@@ -84,7 +84,7 @@ Describe "Xcode" {
}
Describe "Xcode simulators" {
- $XCODE_VERSIONS | ForEach-Object {
+ $XCODE_VERSIONS | Where-Object { Test-XcodeStableVersion $_ } | ForEach-Object {
Switch-Xcode -Version $_
Context "$_" {
diff --git a/images/macos/toolsets/toolset-10.15.json b/images/macos/toolsets/toolset-10.15.json
index c825865c7..e7b17989f 100644
--- a/images/macos/toolsets/toolset-10.15.json
+++ b/images/macos/toolsets/toolset-10.15.json
@@ -2,11 +2,11 @@
"xcode": {
"default": "11.7",
"versions": [
- "12_beta", "11.7", "11.6", "11.5", "11.4.1", "11.4", "11.3.1", "11.2.1", "11.1", "11", "10.3"
+ "12.2_beta", "12", "12_beta", "11.7", "11.6", "11.5", "11.4.1", "11.4", "11.3.1", "11.2.1", "11.1", "11", "10.3"
]
},
"xamarin": {
- "vsmac": "8.7.5.19",
+ "vsmac": "8.7.7.10",
"mono-versions": [
"6.12.0.93", "6.10.0.106", "6.8.0.123", "6.6.0.166", "6.4.0.208"
],
diff --git a/images/macos/toolsets/toolset-11.0.json b/images/macos/toolsets/toolset-11.0.json
index bab2c6f92..fa7a65a5a 100644
--- a/images/macos/toolsets/toolset-11.0.json
+++ b/images/macos/toolsets/toolset-11.0.json
@@ -2,22 +2,22 @@
"xcode": {
"default": "11.7",
"versions": [
- "12_beta", "11.7"
+ "12.2_beta", "12_beta", "11.7"
]
},
"xamarin": {
- "vsmac": "8.7.5.19",
+ "vsmac": "8.7.7.10",
"mono-versions": [
- "6.12.0.93", "6.10.0.106"
+ "6.12.0.93"
],
"ios-versions": [
- "13.20.2.2", "13.18.2.1"
+ "13.20.2.2"
],
"mac-versions": [
- "6.20.2.2", "6.18.3.2"
+ "6.20.2.2"
],
"android-versions": [
- "11.0.2.0", "10.3.1.4"
+ "11.0.2.0"
],
"bundle-default": "latest",
"bundles": [
@@ -27,13 +27,6 @@
"ios": "13.20",
"mac": "6.20",
"android": "11.0"
- },
- {
- "symlink": "6_10_0",
- "mono":"6.10",
- "ios": "13.18",
- "mac": "6.18",
- "android": "10.3"
}
]
},
@@ -67,9 +60,6 @@
"arch": "x64",
"platform" : "darwin",
"versions": [
- "2.7.*",
- "3.5.*",
- "3.6.*",
"3.7.*",
"3.8.*"
]
@@ -91,7 +81,6 @@
"arch": "x64",
"platform" : "darwin",
"versions": [
- "1.14.*",
"1.15.*"
]
}
diff --git a/images/win/scripts/Installers/Install-Edge.ps1 b/images/win/scripts/Installers/Install-Edge.ps1
index ebb7871b7..1f4ce0ae4 100644
--- a/images/win/scripts/Installers/Install-Edge.ps1
+++ b/images/win/scripts/Installers/Install-Edge.ps1
@@ -24,7 +24,14 @@ $EdgeDriverVersionFile = Start-DownloadWithRetry -Url $EdgeDriverVersionUrl -Nam
Write-Host "Download Microsoft Edge WebDriver..."
$EdgeDriverLatestVersion = Get-Content -Path $EdgeDriverVersionFile
$EdgeDriverArchName = "edgedriver_win64.zip"
-$EdgeDriverDownloadUrl="https://msedgedriver.azureedge.net/${EdgeDriverLatestVersion}/${EdgeDriverArchName}"
+# A temporary workaround to install the previous driver version because 85.0.564.60 for win64 doesn't exist
+if ($EdgeDriverLatestVersion -eq "85.0.564.60")
+{
+ $EdgeDriverLatestVersion = "85.0.564.51"
+ Set-Content -Path $EdgeDriverVersionFile -Value $EdgeDriverLatestVersion
+}
+
+$EdgeDriverDownloadUrl = "https://msedgedriver.azureedge.net/${EdgeDriverLatestVersion}/${EdgeDriverArchName}"
$EdgeDriverArchPath = Start-DownloadWithRetry -Url $EdgeDriverDownloadUrl -Name $EdgeDriverArchName
diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 b/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1
index cc9fbb15d..f85423c2c 100644
--- a/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1
+++ b/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1
@@ -1,4 +1,11 @@
-function Get-AndroidComponentLocation {
+function Split-TableRowByColumns {
+ param(
+ [string] $Row
+ )
+ return $Row.Split("|") | ForEach-Object { $_.trim() }
+}
+
+function Get-AndroidSDKRoot {
param(
[string] $ComponentName
)
@@ -6,24 +13,6 @@ function Get-AndroidComponentLocation {
return "Location $path"
}
-function Split-AndroidSDKOutputRow {
- param(
- [string] $Row
- )
- return $Row.Split("|").Trim()
-}
-
-function Create-AndroidTableObject {
- param(
- [string] $PackageName,
- [string] $Description
- )
- return [PSCustomObject] @{
- "Package Name" = $PackageName
- "Description" = $Description
- }
-}
-
function Get-AndroidSDKManagerPath {
return Join-Path $env:ANDROID_HOME "tools\bin\sdkmanager.bat"
}
@@ -42,68 +31,120 @@ function Get-AndroidInstalledPackages {
return $androidInstalledPackages
}
-function Build-AndroidSDKToolsTable {
- param (
- [Parameter(Mandatory)]
- [object] $packageInfo
- )
- return $packageInfo | ForEach-Object {
- $packageInfoParts = Split-AndroidSDKOutputRow $_
- $packageName = $packageInfoParts[0]
- $packageDescription = $packageInfoParts[2] + ", Revision " + $packageInfoParts[1]
- Create-AndroidTableObject -PackageName $packageName -Description $packageDescription
- }
-}
-
-function Build-AndroidSDKPlatformTable {
- param (
- [Parameter(Mandatory)]
- [object] $packageInfo
- )
-
- return $packageInfo | ForEach-Object {
- $packageInfoParts = Split-AndroidSDKOutputRow $_
- $packageName = $packageInfoParts[0].split(";")[1]
- $packageDescription = $packageInfoParts[2] + ", Revision " + $packageInfoParts[1]
- return Create-AndroidTableObject -PackageName $packageName -Description $packageDescription
- }
-}
-
-function Build-AndroidSDKBuildToolsTable {
- param (
- [Parameter(Mandatory)]
- [object] $packageInfo
- )
-
- return $packageInfo | ForEach-Object {
- $packageInfoParts = Split-AndroidSDKOutputRow $_
- $packageName = $packageInfoParts[0].replace(";", "-")
- $packageDescription = "Android SDK Build-Tools, Revision " + $packageInfoParts[1]
- return Create-AndroidTableObject -PackageName $packageName -Description $packageDescription
- }
-}
-
-function Build-AndroidExtraPackagesTable {
- param (
- [Parameter(Mandatory)][AllowEmptyString()]
- [string[]] $installedPackages
- )
-
- $extraPackages = @(
- "Android Support Repository",
- "Google Play services",
- "Google Repository",
- "ndk-bundle"
- )
-
- return $extraPackages | ForEach-Object {
- $packageId = $_
- $packageInfo = $installedPackages | Where-Object { $_ -Like "*${packageId}*" } | Select-Object -First 1
- $packageInfoParts = Split-AndroidSDKOutputRow $packageInfo
- return [PSCustomObject] @{
- "Package Name" = $packageInfoParts[2]
- "Version" = $packageInfoParts[1]
+function Build-AndroidTable {
+ $packageInfo = Get-AndroidInstalledPackages
+ return @(
+ @{
+ "Package" = "Android SDK Platform-Tools"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Android SDK Platform-Tools"
+ },
+ @{
+ "Package" = "Android SDK Tools"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Android SDK Tools"
+ },
+ @{
+ "Package" = "Android SDK Platforms"
+ "Version" = Get-AndroidPlatformVersions -PackageInfo $packageInfo
+ },
+ @{
+ "Package" = "Android SDK Build-tools"
+ "Version" = Get-AndroidBuildToolVersions -PackageInfo $packageInfo
+ },
+ @{
+ "Package" = "NDK"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "ndk-bundle"
+ },
+ @{
+ "Package" = "Android Support Repository"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Android Support Repository"
+ },
+ @{
+ "Package" = "Google APIs"
+ "Version" = Get-AndroidGoogleAPIsVersions -PackageInfo $packageInfo
+ },
+ @{
+ "Package" = "Google Play services"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Google Play services"
+ },
+ @{
+ "Package" = "Google Repository"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "Google Repository"
+ },
+ @{
+ "Package" = "SDK Patch Applier v4"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "SDK Patch Applier v4"
+ },
+ @{
+ "Package" = "CMake"
+ "Version" = Get-AndroidPackageVersions -PackageInfo $packageInfo -MatchedString "cmake"
+ }
+ ) | Where-Object { $_.Version } | ForEach-Object {
+ [PSCustomObject] @{
+ "Package Name" = $_.Package
+ "Version" = $_.Version
}
}
+}
+
+function Get-AndroidPackageVersions {
+ param (
+ [Parameter(Mandatory)]
+ [object] $PackageInfo,
+ [Parameter(Mandatory)]
+ [object] $MatchedString
+ )
+
+ $versions = $packageInfo | Where-Object { $_ -Match $MatchedString } | ForEach-Object {
+ $packageInfoParts = Split-TableRowByColumns $_
+ return $packageInfoParts[1]
+ }
+ return ($versions -Join "
")
+}
+
+function Get-AndroidPlatformVersions {
+ param (
+ [Parameter(Mandatory)]
+ [object] $PackageInfo
+ )
+
+ $versions = $packageInfo | Where-Object { $_ -Match "Android SDK Platform " } | ForEach-Object {
+ $packageInfoParts = Split-TableRowByColumns $_
+ $revision = $packageInfoParts[1]
+ $version = $packageInfoParts[0].split(";")[1]
+ return "$version (rev $revision)"
+ }
+ [array]::Reverse($versions)
+ return ($versions -Join "
")
+}
+
+function Get-AndroidBuildToolVersions {
+ param (
+ [Parameter(Mandatory)]
+ [object] $PackageInfo
+ )
+
+ $versions = $packageInfo | Where-Object { $_ -Match "Android SDK Build-Tools" } | ForEach-Object {
+ $packageInfoParts = Split-TableRowByColumns $_
+ return $packageInfoParts[1]
+ }
+ $groupVersions = @()
+ $versions | ForEach-Object {
+ $majorVersion = $_.Split(".")[0]
+ $groupVersions += $versions | Where-Object { $_.StartsWith($majorVersion) } | Join-String -Separator " "
+ }
+ return ($groupVersions | Sort-Object -Descending -Unique | Join-String -Separator "
")
+}
+
+function Get-AndroidGoogleAPIsVersions {
+ param (
+ [Parameter(Mandatory)]
+ [object] $PackageInfo
+ )
+
+ $versions = $packageInfo | Where-Object { $_ -Match "Google APIs" } | ForEach-Object {
+ $packageInfoParts = Split-TableRowByColumns $_
+ return $packageInfoParts[0].split(";")[1]
+ }
+ return ($versions -Join "
")
}
\ No newline at end of file
diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1
index 905b9da96..a0453bcfa 100644
--- a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1
+++ b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1
@@ -223,32 +223,8 @@ $markdown += Get-PowerShellModules | New-MDTable
$markdown += New-MDNewLine
# Android section
-$androidInstalledPackages = Get-AndroidInstalledPackages
-
-$markdown += New-MDHeader "Android SDK Tools" -Level 3
-$androidSDKTools = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Tools" -or $_ -Match "Android SDK Platform-Tools" }
-$markdown += Build-AndroidSDKToolsTable $androidSDKTools | New-MDTable
+$markdown += New-MDHeader "Android" -Level 3
+$markdown += Build-AndroidTable | New-MDTable
$markdown += New-MDNewLine
-$markdown += New-MDHeader "Android SDK Platforms" -Level 3
-$androidSDKPlatforms = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Platform " }
-$markdown += New-MDInlineCode -Text (Get-AndroidComponentLocation -ComponentName "platforms")
-$markdown += New-MDNewLine
-$markdown += Build-AndroidSDKPlatformTable $androidSDKPlatforms | New-MDTable
-$markdown += New-MDNewLine
-
-$markdown += New-MDHeader "Android SDK Build-Tools" -Level 3
-$androidSDKBuildTools = $androidInstalledPackages | Where-Object { $_ -Match "Android SDK Build-Tools" }
-$markdown += New-MDInlineCode -Text (Get-AndroidComponentLocation -ComponentName "build-tools")
-$markdown += New-MDNewLine
-$markdown += Build-AndroidSDKBuildtoolsTable $androidSDKBuildTools | New-MDTable
-$markdown += New-MDNewLine
-
-$markdown += New-MDHeader "Android Extra Packages" -Level 3
-$markdown += Build-AndroidExtraPackagesTable $androidInstalledPackages | New-MDTable
-$markdown += New-MDNewLine
-
-$markdown += New-MDHeader "Cached Docker images" -Level 3
-$markdown += New-MDList -Style Unordered -Lines @(Get-CachedDockerImages)
-
$markdown | Out-File -FilePath "C:\InstalledSoftware.md"
\ No newline at end of file