diff --git a/images/linux/scripts/SoftwareReport/SoftwareReport.Tools.psm1 b/images/linux/scripts/SoftwareReport/SoftwareReport.Tools.psm1 index d1984b2ac..915f857fd 100644 --- a/images/linux/scripts/SoftwareReport/SoftwareReport.Tools.psm1 +++ b/images/linux/scripts/SoftwareReport/SoftwareReport.Tools.psm1 @@ -29,7 +29,7 @@ function Get-BazeliskVersion { } function Get-CodeQLBundleVersion { - $CodeQLVersionsWildcard = Join-Path $Env:AGENT_TOOLSDIRECTORY -ChildPath "codeql" | Join-Path -ChildPath "*" + $CodeQLVersionsWildcard = Join-Path $Env:AGENT_TOOLSDIRECTORY -ChildPath "CodeQL" | Join-Path -ChildPath "*" $CodeQLVersionPath = Get-ChildItem $CodeQLVersionsWildcard | Select-Object -First 1 -Expand FullName $CodeQLPath = Join-Path $CodeQLVersionPath -ChildPath "x64" | Join-Path -ChildPath "codeql" | Join-Path -ChildPath "codeql" $CodeQLVersion = & $CodeQLPath version --quiet diff --git a/images/linux/scripts/installers/python.sh b/images/linux/scripts/installers/python.sh index 3f6361e16..470417783 100644 --- a/images/linux/scripts/installers/python.sh +++ b/images/linux/scripts/installers/python.sh @@ -4,19 +4,18 @@ ## Desc: Installs Python 2/3 ################################################################################ +set -e # Source the helpers for use with the script source $HELPER_SCRIPTS/os.sh # Install Python, Python 3, pip, pip3 -if isUbuntu20 ; then - apt-get install -y --no-install-recommends python3 python3-dev python3-pip - - curl https://bootstrap.pypa.io/get-pip.py --output get-pip.py - python2 get-pip.py +if isUbuntu16 || isUbuntu18; then + apt-get install -y --no-install-recommends python python-dev python-pip python3 python3-dev python3-pip fi -if isUbuntu16 || isUbuntu18 ; then - apt-get install -y --no-install-recommends python python-dev python-pip python3 python3-dev python3-pip +if isUbuntu20; then + apt-get install -y --no-install-recommends python3 python3-dev python3-pip + ln -s /usr/bin/pip3 /usr/bin/pip fi # Run tests to determine that the software installed as expected diff --git a/images/linux/toolsets/toolset-2004.json b/images/linux/toolsets/toolset-2004.json index ba86c827e..b4607df98 100644 --- a/images/linux/toolsets/toolset-2004.json +++ b/images/linux/toolsets/toolset-2004.json @@ -92,7 +92,7 @@ "locales", "openssh-client", "pkg-config", - "python-is-python2", + "python-is-python3", "rpm", "texinfo", "tk", diff --git a/images/macos/helpers/Xcode.Helpers.psm1 b/images/macos/helpers/Xcode.Helpers.psm1 index dbc4803c2..8ea137e63 100644 --- a/images/macos/helpers/Xcode.Helpers.psm1 +++ b/images/macos/helpers/Xcode.Helpers.psm1 @@ -45,6 +45,17 @@ function Switch-Xcode { Invoke-Expression "sudo xcode-select --switch ${XcodeRootPath}" } +function Test-XcodeStableRelease { + param( + [Parameter(Mandatory)] + [string] $XcodeRootPath + ) + + $licenseInfoPlistPath = Join-Path $XcodeRootPath "Contents" "Resources" "LicenseInfo.plist" + $releaseType = & defaults read $licenseInfoPlistPath "licenseType" + return -not ($releaseType -match "beta") +} + function Get-XcodeSimulatorsInfo { param( [string] $Filter @@ -102,6 +113,6 @@ function Test-XcodeStableVersion { if ($Version -match "GM") { return $false } - + return $true } \ No newline at end of file diff --git a/images/macos/macos-10.15-Readme.md b/images/macos/macos-10.15-Readme.md index 26492d8e6..af4024fc6 100644 --- a/images/macos/macos-10.15-Readme.md +++ b/images/macos/macos-10.15-Readme.md @@ -1,15 +1,15 @@ # macOS 10.15 info - System Version: macOS 10.15.6 (19G2021) - Kernel Version: Darwin 19.6.0 -- Image Version: 20200916.1 +- Image Version: 20200918.1 ## Installed Software ### Language and Runtime - Clang/LLVM 10.0.1 -- gcc-8 (Homebrew GCC 8.4.0_1) 8.4.0 — available by `gcc-8` alias -- gcc-9 (Homebrew GCC 9.3.0) 9.3.0 — available by `gcc-9` alias -- GNU Fortran (Homebrew GCC 8.4.0_1) 8.4.0 — available by `gfortran-8` alias -- GNU Fortran (Homebrew GCC 9.3.0) 9.3.0 — available by `gfortran-9` alias +- gcc-8 (Homebrew GCC 8.4.0_1) 8.4.0 - available by `gcc-8` alias +- gcc-9 (Homebrew GCC 9.3.0) 9.3.0 - available by `gcc-9` alias +- GNU Fortran (Homebrew GCC 8.4.0_1) 8.4.0 - available by `gfortran-8` alias +- GNU Fortran (Homebrew GCC 9.3.0) 9.3.0 - available by `gfortran-9` alias - Node.js v12.18.3 - NVM 0.35.3 - NVM - Cached node versions: v6.17.1 v8.17.0 v10.22.1 v12.18.4 v13.14.0 v14.11.0 @@ -24,15 +24,15 @@ ### Package Management - Vcpkg 2020.06.15 +- Pip 19.3.1 (python 2.7) +- Pip 20.1.1 (python 3.8) - Bundler version 2.1.4 -- Carthage 0.35.0 +- Carthage 0.36.0 - CocoaPods 1.9.3 - Homebrew 2.5.1 - NPM 6.14.6 - Yarn 1.22.5 - NuGet 5.6.0.6489 -- Pip 19.3.1 (python 2.7) -- Pip 20.1.1 (python 3.8) - Miniconda 4.8.3 - RubyGems 3.1.4 - Composer 1.10.13 @@ -46,12 +46,11 @@ - Curl 7.72.0 - Git: 2.28.0 - Git LFS: 2.12.0 -- GitHub CLI: 0.12.0 +- GitHub CLI: 1.0.0 - Hub CLI: 2.14.2 - GNU Wget 1.20.3 - Subversion (SVN) 1.14.0 - Packer 1.6.2 -- GNU parallel 20200722 - OpenSSL 1.0.2t 10 Sep 2019 `(/usr/local/opt/openssl -> /usr/local/Cellar/openssl@1.0.2t/1.0.2t)` - jq 1.6 - gpg (GnuPG) 2.2.23 @@ -62,24 +61,25 @@ - zstd 1.4.5 - bazel 3.5.0 - bazelisk 1.6.1 -- helm v3.3.1+g249e521 +- helm v3.3.2+ge507725 - virtualbox 6.1.14r140239 - mongo v4.4.0 - mongod v4.4.0 - Vagrant 2.2.10 - 7-Zip 16.02 - Newman 5.2.0 +- GNU parallel 20200722 ### Tools -- Fastlane 2.159.0 +- Fastlane 2.160.0 - Cmake 3.18.2 - App Center CLI 2.7.0 - Azure CLI 2.11.1 - AWS CLI 2.0.48 - AWS SAM CLI 1.2.0 - AWS Session Manager CLI 1.1.61.0 -- Aliyun CLI 3.0.56 +- Aliyun CLI 3.0.58 - GHCup v0.1.10 - GHC 8.10.2 - Cabal 3.2.0.0 @@ -90,8 +90,8 @@ - SwiftLint 0.40.2 ### Browsers -- Safari 13.1.2 (15609.3.5.1.3) -- SafariDriver 13.1.2 (15609.3.5.1.3) +- Safari 14.0 (15610.1.28.1.9) +- SafariDriver 14.0 (15610.1.28.1.9) - Google Chrome 85.0.4183.102 - ChromeDriver 85.0.4183.87 - Microsoft Edge 85.0.564.51 @@ -161,7 +161,7 @@ ### Xamarin #### Visual Studio for Mac -- 8.7.5.19 +- 8.7.7.10 #### Mono - 6.12.0.93 @@ -205,6 +205,7 @@ ### Xcode | Version | Build | Path | | -------------- | -------- | ------------------------------- | +| 12.2 | 12B5018i | /Applications/Xcode_12.2.app | | 12.0 | 12A8189n | /Applications/Xcode_12_beta.app | | 12.0 | 12A7209 | /Applications/Xcode_12.app | | 11.7 (default) | 11E801a | /Applications/Xcode_11.7.app | @@ -219,18 +220,18 @@ | 10.3 | 10G8 | /Applications/Xcode_10.3.app | #### Xcode Support Tools +- xcpretty 0.3.0 +- xcversion 2.6.6 - Nomad CLI 3.1.4 - Nomad CLI IPA ipa 0.14.3 -- xcpretty 0.3.0 - xctool 0.3.7 -- xcversion 2.6.6 #### Installed SDKs | SDK | SDK Name | Xcode Version | | ----------------------- | -------------------- | ---------------------------------------------------------------- | | macOS 10.14 | macosx10.14 | 10.3 | | macOS 10.15 | macosx10.15 | 11.0, 11.1, 11.2.1, 11.3.1, 11.4, 11.4.1, 11.5, 11.6, 11.7, 12.0 | -| macOS 11.0 | macosx11.0 | 12.0 | +| macOS 11.0 | macosx11.0 | 12.0, 12.2 | | iOS 12.4 | iphoneos12.4 | 10.3 | | iOS 13.0 | iphoneos13.0 | 11.0 | | iOS 13.1 | iphoneos13.1 | 11.1 | @@ -240,6 +241,7 @@ | iOS 13.6 | iphoneos13.6 | 11.6 | | iOS 13.7 | iphoneos13.7 | 11.7 | | iOS 14.0 | iphoneos14.0 | 12.0, 12.0 | +| iOS 14.2 | iphoneos14.2 | 12.2 | | Simulator - iOS 12.4 | iphonesimulator12.4 | 10.3 | | Simulator - iOS 13.0 | iphonesimulator13.0 | 11.0 | | Simulator - iOS 13.1 | iphonesimulator13.1 | 11.1 | @@ -249,28 +251,33 @@ | Simulator - iOS 13.6 | iphonesimulator13.6 | 11.6 | | Simulator - iOS 13.7 | iphonesimulator13.7 | 11.7 | | Simulator - iOS 14.0 | iphonesimulator14.0 | 12.0, 12.0 | +| Simulator - iOS 14.2 | iphonesimulator14.2 | 12.2 | | tvOS 12.4 | appletvos12.4 | 10.3 | | tvOS 13.0 | appletvos13.0 | 11.0, 11.1 | | tvOS 13.2 | appletvos13.2 | 11.2.1, 11.3.1 | | tvOS 13.4 | appletvos13.4 | 11.4, 11.4.1, 11.5, 11.6, 11.7 | | tvOS 14.0 | appletvos14.0 | 12.0, 12.0 | +| tvOS 14.2 | appletvos14.2 | 12.2 | | Simulator - tvOS 12.4 | appletvsimulator12.4 | 10.3 | | Simulator - tvOS 13.0 | appletvsimulator13.0 | 11.0, 11.1 | | Simulator - tvOS 13.2 | appletvsimulator13.2 | 11.2.1, 11.3.1 | | Simulator - tvOS 13.4 | appletvsimulator13.4 | 11.4, 11.4.1, 11.5, 11.6, 11.7 | | Simulator - tvOS 14.0 | appletvsimulator14.0 | 12.0, 12.0 | +| Simulator - tvOS 14.2 | appletvsimulator14.2 | 12.2 | | watchOS 5.3 | watchos5.3 | 10.3 | | watchOS 6.0 | watchos6.0 | 11.0, 11.1 | | watchOS 6.1 | watchos6.1 | 11.2.1, 11.3.1 | | watchOS 6.2 | watchos6.2 | 11.4, 11.4.1, 11.5, 11.6, 11.7 | | watchOS 7.0 | watchos7.0 | 12.0, 12.0 | +| watchOS 7.1 | watchos7.1 | 12.2 | | Simulator - watchOS 5.3 | watchsimulator5.3 | 10.3 | | Simulator - watchOS 6.0 | watchsimulator6.0 | 11.0, 11.1 | | Simulator - watchOS 6.1 | watchsimulator6.1 | 11.2.1, 11.3.1 | | Simulator - watchOS 6.2 | watchsimulator6.2 | 11.4, 11.4.1, 11.5, 11.6, 11.7 | | Simulator - watchOS 7.0 | watchsimulator7.0 | 12.0, 12.0 | +| Simulator - watchOS 7.1 | watchsimulator7.1 | 12.2 | | DriverKit 19.0 | driverkit.macosx19.0 | 11.0, 11.1, 11.2.1, 11.3.1, 11.4, 11.4.1, 11.5, 11.6, 11.7, 12.0 | -| DriverKit 20.0 | driverkit.macosx20.0 | 12.0 | +| DriverKit 20.0 | driverkit.macosx20.0 | 12.0, 12.2 | #### Installed Simulators | OS | Xcode Version | Simulators | @@ -284,18 +291,18 @@ | iOS 13.5 | 11.5 | iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPad (7th generation)
iPad Air (3rd generation)
iPad Pro (11-inch) (2nd generation)
iPad Pro (12.9-inch) (4th generation)
iPad Pro (9.7-inch) | | iOS 13.6 | 11.6 | iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPad (7th generation)
iPad Air (3rd generation)
iPad Pro (11-inch) (2nd generation)
iPad Pro (12.9-inch) (4th generation)
iPad Pro (9.7-inch) | | iOS 13.7 | 11.7 | iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPad (7th generation)
iPad Air (3rd generation)
iPad Pro (11-inch) (2nd generation)
iPad Pro (12.9-inch) (4th generation)
iPad Pro (9.7-inch) | -| iOS 14.0 | 12.0 | iPod touch (7th generation)
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPad (7th generation)
iPad Air (3rd generation)
iPad Pro (11-inch) (2nd generation)
iPad Pro (12.9-inch) (4th generation)
iPad Pro (9.7-inch) | +| iOS 14.0 | 12.0
12.0 | iPod touch (7th generation)
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPad (7th generation)
iPad (8th generation)
iPad Air (3rd generation)
iPad Air (4th generation)
iPad Pro (11-inch) (2nd generation)
iPad Pro (12.9-inch) (4th generation)
iPad Pro (9.7-inch) | | tvOS 12.4 | 10.3 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | | tvOS 13.0 | 11.0
11.1 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | | tvOS 13.2 | 11.2.1 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | | tvOS 13.3 | 11.3.1 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | | tvOS 13.4 | 11.4
11.4.1
11.5
11.6
11.7 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | -| tvOS 14.0 | 12.0 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | +| tvOS 14.0 | 12.0
12.0 | Apple TV
Apple TV 4K
Apple TV 4K (at 1080p) | | watchOS 5.3 | 10.3 | Apple Watch Series 2 - 38mm
Apple Watch Series 2 - 42mm
Apple Watch Series 3 - 38mm
Apple Watch Series 3 - 42mm
Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm | | watchOS 6.0 | 11.0
11.1 | Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm
Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm | | watchOS 6.1 | 11.2.1
11.3.1 | Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm
Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm | | watchOS 6.2 | 11.4
11.4.1
11.5
11.6
11.7 | Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm
Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm | -| watchOS 7.0 | 12.0 | Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm
Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm | +| watchOS 7.0 | 12.0
12.0 | Apple Watch Series 4 - 40mm
Apple Watch Series 4 - 44mm
Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm
Apple Watch Series 6 - 40mm
Apple Watch Series 6 - 44mm | ### Android #### Android SDK Tools diff --git a/images/macos/provision/core/audiodevice.sh b/images/macos/provision/core/audiodevice.sh index 705490de2..4a151e3f9 100644 --- a/images/macos/provision/core/audiodevice.sh +++ b/images/macos/provision/core/audiodevice.sh @@ -12,8 +12,3 @@ brew install sox echo "set Soundflower (2ch) as input/output device" SwitchAudioSource -s "Soundflower (2ch)" -t input SwitchAudioSource -s "Soundflower (2ch)" -t output - -echo "grant microphone permission for simulators" -sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "insert into access values('kTCCServiceMicrophone','com.apple.CoreSimulator.SimulatorTrampoline', 0,1,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1576347152)" -sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db "insert into access values('kTCCServiceMicrophone','/usr/local/opt/runner/runprovisioner.sh', 1,1,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1576661342)" -sudo sqlite3 ~/Library/Application\ Support/com.apple.TCC/TCC.db "insert into access values('kTCCServiceMicrophone','/usr/local/opt/runner/runprovisioner.sh', 1,1,1,NULL,NULL,NULL,'UNUSED',NULL,NULL,1576661342)" diff --git a/images/macos/provision/core/pypy.sh b/images/macos/provision/core/pypy.sh index a57f0ebb0..5f24cd5f5 100644 --- a/images/macos/provision/core/pypy.sh +++ b/images/macos/provision/core/pypy.sh @@ -66,16 +66,20 @@ function InstallPyPy rm -f $PACKAGE_TAR_TEMP_PATH } -# PyPy 7.3.1 relies on system libffi.6.dylib, which is not existed in in libffi 3.3 release. As a workaround symlink can be created -ln -s libffi.7.dylib /usr/local/opt/libffi/lib/libffi.6.dylib - uri="https://downloads.python.org/pypy/" pypyVersions=$(curl -4 -s --compressed $uri | grep 'osx64' | awk -v uri="$uri" -F'>|<' '{print uri$5}') - toolsetVersions=$(get_toolset_value '.toolcache[] | select(.name | contains("PyPy")) | .versions[]') +versionPattern="v[0-9]+\.[0-9]+\.[0-9]+-" + +# PyPy 7.3.2 for High Sierra is broken, use 7.3.1 instead https://foss.heptapod.net/pypy/pypy/-/issues/3311 +if is_HighSierra; then + versionPattern="v7.3.1-" + # PyPy 7.3.1 relies on system libffi.6.dylib, which is not existed in in libffi 3.3 release. As a workaround symlink can be created + ln -s libffi.7.dylib /usr/local/opt/libffi/lib/libffi.6.dylib +fi for toolsetVersion in $toolsetVersions; do - latestMajorPyPyVersion=$(echo "${pypyVersions}" | grep -E "pypy${toolsetVersion}-v[0-9]+\.[0-9]+\.[0-9]+-" | head -1) + latestMajorPyPyVersion=$(echo "${pypyVersions}" | grep -E "pypy${toolsetVersion}-${versionPattern}" | head -1) if [[ -z "$latestMajorPyPyVersion" ]]; then echo "Failed to get PyPy version '$toolsetVersion'" exit 1 diff --git a/images/macos/software-report/SoftwareReport.Generator.ps1 b/images/macos/software-report/SoftwareReport.Generator.ps1 index 87c944598..0ef53471e 100644 --- a/images/macos/software-report/SoftwareReport.Generator.ps1 +++ b/images/macos/software-report/SoftwareReport.Generator.ps1 @@ -289,6 +289,8 @@ $markdown += New-MDList -Lines (Build-XamarinAndroidList) -Style Unordered $markdown += New-MDHeader "Unit Test Framework" -Level 4 $markdown += New-MDList -Lines @(Get-NUnitVersion) -Style Unordered +# First run doesn't provide full data about devices and runtimes +Get-XcodeInfoList | Out-Null # Xcode section $xcodeInfo = Get-XcodeInfoList $markdown += New-MDHeader "Xcode" -Level 3 @@ -301,12 +303,9 @@ $markdown += New-MDHeader "Installed SDKs" -Level 4 $markdown += Build-XcodeSDKTable $xcodeInfo | New-MDTable $markdown += New-MDNewLine -# Disable simulators table on 11.0 beta for now since "simctl" tool doesn't work properly -if (-not $os.IsBigSur) { - $markdown += New-MDHeader "Installed Simulators" -Level 4 - $markdown += Build-XcodeSimulatorsTable $xcodeInfo | New-MDTable - $markdown += New-MDNewLine -} +$markdown += New-MDHeader "Installed Simulators" -Level 4 +$markdown += Build-XcodeSimulatorsTable $xcodeInfo | New-MDTable +$markdown += New-MDNewLine # Android section $markdown += New-MDHeader "Android" -Level 3 diff --git a/images/macos/software-report/SoftwareReport.Xcode.psm1 b/images/macos/software-report/SoftwareReport.Xcode.psm1 index 59754d583..3d4cfa52d 100644 --- a/images/macos/software-report/SoftwareReport.Xcode.psm1 +++ b/images/macos/software-report/SoftwareReport.Xcode.psm1 @@ -46,7 +46,8 @@ function Get-XcodeInfoList { $versionInfo = Get-XcodeVersionInfo $versionInfo.Path = $xcodeRootPath $versionInfo.IsDefault = ($xcodeRootPath -eq $defaultXcodeRootPath) - + $versionInfo.IsStable = Test-XcodeStableRelease -XcodeRootPath $xcodeRootPath + $xcodeInfo.Add($xcodeRootPath, [PSCustomObject] @{ VersionInfo = $versionInfo SDKInfo = Get-XcodeSDKList @@ -91,6 +92,7 @@ function Build-XcodeTable { $xcodeList = $xcodeInfo.Values | ForEach-Object { $_.VersionInfo } | Sort-Object $sortRules return $xcodeList | ForEach-Object { $defaultPostfix = If ($_.IsDefault) { " (default)" } else { "" } + $betaPostfix = If ($_.IsStable) { "" } else { " (beta)" } return [PSCustomObject] @{ "Version" = $_.Version.ToString() + $betaPostfix + $defaultPostfix "Build" = $_.Build diff --git a/images/macos/toolsets/toolset-10.15.json b/images/macos/toolsets/toolset-10.15.json index 8497a7100..f834385c2 100644 --- a/images/macos/toolsets/toolset-10.15.json +++ b/images/macos/toolsets/toolset-10.15.json @@ -19,35 +19,35 @@ "android-versions": [ "11.0.2.0", "10.3.1.4", "10.2.0.100", "10.1.3.7", "10.0.6.2" ], - "bundle-default": "latest", + "bundle-default": "6_12_0", "bundles": [ { "symlink": "6_12_1", "mono":"6.12", "ios": "14.0", "mac": "6.20", - "android": "11.0" + "android": "11.0" }, { "symlink": "6_12_0", "mono":"6.12", "ios": "13.20", "mac": "6.20", - "android": "11.0" + "android": "11.0" }, { "symlink": "6_10_0", "mono":"6.10", "ios": "13.18", "mac": "6.18", - "android": "10.3" + "android": "10.3" }, { "symlink": "6_8_1", "mono":"6.8", "ios": "13.16", "mac": "6.16", - "android": "10.2" + "android": "10.2" }, { "symlink": "6_8_0", diff --git a/images/macos/toolsets/toolset-11.0.json b/images/macos/toolsets/toolset-11.0.json index 725da2188..f4e9a57c8 100644 --- a/images/macos/toolsets/toolset-11.0.json +++ b/images/macos/toolsets/toolset-11.0.json @@ -19,21 +19,21 @@ "android-versions": [ "11.0.2.0" ], - "bundle-default": "latest", + "bundle-default": "6_12_0", "bundles": [ { "symlink": "6_12_1", "mono":"6.12", "ios": "14.0", "mac": "6.20", - "android": "11.0" + "android": "11.0" }, { "symlink": "6_12_0", "mono":"6.12", "ios": "13.20", "mac": "6.20", - "android": "11.0" + "android": "11.0" } ] }, diff --git a/images/win/Windows2016-Azure.json b/images/win/Windows2016-Azure.json index 77d57aef1..d65286497 100644 --- a/images/win/Windows2016-Azure.json +++ b/images/win/Windows2016-Azure.json @@ -82,6 +82,11 @@ "source": "{{ template_dir }}/scripts/SoftwareReport", "destination": "{{user `image_folder`}}" }, + { + "type": "file", + "source": "{{ template_dir }}/post-generation", + "destination": "C:/post-generation" + }, { "type": "file", "source": "{{ template_dir }}/scripts/Tests", @@ -160,12 +165,6 @@ "type": "windows-restart", "restart_timeout": "30m" }, - { - "type": "powershell", - "scripts": [ - "{{ template_dir }}/scripts/Installers/Update-DockerImages.ps1" - ] - }, { "type": "powershell", "valid_exit_codes": [ @@ -176,6 +175,7 @@ "TOOLSET_JSON_PATH={{user `toolset_json_path`}}" ], "scripts": [ + "{{ template_dir }}/scripts/Installers/Update-DockerImages.ps1", "{{ template_dir }}/scripts/Installers/Install-VS.ps1", "{{ template_dir }}/scripts/Installers/Install-NET48.ps1", "{{ template_dir }}/scripts/Installers/Windows2016/Install-SSDT.ps1" diff --git a/images/win/Windows2019-Azure.json b/images/win/Windows2019-Azure.json index 473051dba..445a5968d 100644 --- a/images/win/Windows2019-Azure.json +++ b/images/win/Windows2019-Azure.json @@ -82,6 +82,11 @@ "source": "{{ template_dir }}/scripts/SoftwareReport", "destination": "{{user `image_folder`}}" }, + { + "type": "file", + "source": "{{ template_dir }}/post-generation", + "destination": "C:/post-generation" + }, { "type": "file", "source": "{{ template_dir }}/scripts/Tests", @@ -184,6 +189,7 @@ "TOOLSET_JSON_PATH={{user `toolset_json_path`}}" ], "scripts": [ + "{{ template_dir }}/scripts/Installers/Update-DockerImages.ps1", "{{ template_dir }}/scripts/Installers/Install-VS.ps1", "{{ template_dir }}/scripts/Installers/Install-NET48.ps1" ], diff --git a/images/win/post-generation/Dotnet.ps1 b/images/win/post-generation/Dotnet.ps1 new file mode 100644 index 000000000..fd43757a6 --- /dev/null +++ b/images/win/post-generation/Dotnet.ps1 @@ -0,0 +1,8 @@ +$latestPath = [System.Environment]::GetEnvironmentVariable('PATH', [System.EnvironmentVariableTarget]::Machine) +$dotnetPath = "$env:USERPROFILE\.dotnet\tools" + +if (-not $latestPath.Contains($dotnetPath)) +{ + $latestPath = "$dotnetPath;$latestPath" + [System.Environment]::SetEnvironmentVariable('PATH', $latestPath, [System.EnvironmentVariableTarget]::Machine) +} \ No newline at end of file diff --git a/images/win/post-generation/RustJunction.ps1 b/images/win/post-generation/RustJunction.ps1 new file mode 100644 index 000000000..86f3fc106 --- /dev/null +++ b/images/win/post-generation/RustJunction.ps1 @@ -0,0 +1,12 @@ +# Create Rust junction points to cargo and rustup folder +$cargoTarget = "$env:USERPROFILE\.cargo" +if (-not (Test-Path $cargoTarget)) +{ + New-Item -ItemType Junction -Path $cargoTarget -Target "C:\Rust\.cargo" +} + +$rustupTarget = "$env:USERPROFILE\.rustup" +if (-not (Test-Path $rustupTarget)) +{ + New-Item -ItemType Junction -Path $rustupTarget -Target "C:\Rust\.rustup" +} \ No newline at end of file diff --git a/images/win/post-generation/VSConfiguration.ps1 b/images/win/post-generation/VSConfiguration.ps1 new file mode 100644 index 000000000..0ff9d7bfb --- /dev/null +++ b/images/win/post-generation/VSConfiguration.ps1 @@ -0,0 +1,4 @@ +$vsInstallRoot = Get-VisualStudioPath +$devEnvPath = "$vsInstallRoot\Common7\IDE\devenv.exe" + +cmd.exe /c "`"$devEnvPath`" /updateconfiguration" \ No newline at end of file diff --git a/images/win/scripts/ImageHelpers/ImageHelpers.psm1 b/images/win/scripts/ImageHelpers/ImageHelpers.psm1 index e150e1a12..1f52d22e6 100644 --- a/images/win/scripts/ImageHelpers/ImageHelpers.psm1 +++ b/images/win/scripts/ImageHelpers/ImageHelpers.psm1 @@ -37,6 +37,9 @@ Export-ModuleMember -Function @( 'Get-VsCatalogJsonPath' 'Get-VisualStudioPath' 'Install-AndroidSDKPackages' + 'Get-AndroidPackages' + 'Get-AndroidPackagesByName' + 'Get-AndroidPackagesByVersion' 'Get-VisualStudioPackages' 'Get-VisualStudioComponents' ) diff --git a/images/win/scripts/ImageHelpers/InstallHelpers.ps1 b/images/win/scripts/ImageHelpers/InstallHelpers.ps1 index 282c03762..aed13b999 100644 --- a/images/win/scripts/ImageHelpers/InstallHelpers.ps1 +++ b/images/win/scripts/ImageHelpers/InstallHelpers.ps1 @@ -418,3 +418,41 @@ function Install-AndroidSDKPackages { & $AndroidSDKManagerPath --sdk_root=$AndroidSDKRootPath "$PrefixPackageName$package" } } + +function Get-AndroidPackages { + Param + ( + [Parameter(Mandatory=$true)] + [string]$AndroidSDKManagerPath + ) + + return (& $AndroidSDKManagerPath --list --verbose).Trim() | Foreach-Object { $_.Split()[0] } | Where-Object {$_} +} + +function Get-AndroidPackagesByName { + Param ( + [Parameter(Mandatory=$true)] + [string[]]$AndroidPackages, + [Parameter(Mandatory=$true)] + [string]$PrefixPackageName + ) + + return $AndroidPackages | Where-Object { "$_".StartsWith($PrefixPackageName) } +} + +function Get-AndroidPackagesByVersion { + Param ( + [Parameter(Mandatory=$true)] + [string[]]$AndroidPackages, + [Parameter(Mandatory=$true)] + [string]$PrefixPackageName, + [object]$MinimumVersion, + [char]$Delimiter, + [int]$Index = 0 + ) + + $Type = $MinimumVersion.GetType() + $packagesByName = Get-AndroidPackagesByName -AndroidPackages $AndroidPackages -PrefixPackageName $PrefixPackageName + $packagesByVersion = $packagesByName | Where-Object { ($_.Split($Delimiter)[$Index] -as $Type) -ge $MinimumVersion } + return $packagesByVersion | Sort-Object { $_.Split($Delimiter)[$Index] -as $Type} -Unique +} diff --git a/images/win/scripts/Installers/Install-Git.ps1 b/images/win/scripts/Installers/Install-Git.ps1 index 2a5ea9259..16b7ac15e 100644 --- a/images/win/scripts/Installers/Install-Git.ps1 +++ b/images/win/scripts/Installers/Install-Git.ps1 @@ -40,5 +40,10 @@ Choco-Install -PackageName hub Add-MachinePathItem "C:\Program Files\Git\bin" +# Add well-known SSH host keys to ssh_known_hosts + +ssh-keyscan -t rsa github.com >> "C:\Program Files\Git\etc\ssh\ssh_known_hosts" +ssh-keyscan -t rsa ssh.dev.azure.com >> "C:\Program Files\Git\etc\ssh\ssh_known_hosts" + Invoke-PesterTests -TestFile "Git" -TestName "Git" Invoke-PesterTests -TestFile "CLI.Tools" -TestName "Hub CLI" diff --git a/images/win/scripts/Installers/Update-AndroidSDK.ps1 b/images/win/scripts/Installers/Update-AndroidSDK.ps1 index b5b9a67f7..c27a4c18c 100644 --- a/images/win/scripts/Installers/Update-AndroidSDK.ps1 +++ b/images/win/scripts/Installers/Update-AndroidSDK.ps1 @@ -3,14 +3,7 @@ ## Desc: Install and update Android SDK and tools ################################################################################ -# Download the latest command line tools so that we can accept all of the licenses. -# See https://developer.android.com/studio/#command-tools -$sdkArchPath = Start-DownloadWithRetry -Url "https://dl.google.com/android/repository/sdk-tools-windows-4333796.zip" -Name "android-sdk-tools.zip" - -# Don't replace the one that VS installs as it seems to break things. -Expand-Archive -Path $sdkArchPath -DestinationPath android-sdk -Force - -$sdk = Get-Item -Path .\android-sdk +$ErrorActionPreference = "Stop" # Install the standard Android SDK licenses. In the past, there wasn't a better way to do this, # so we are base64-encoding a zip of the licenses directory from another installation. @@ -30,7 +23,6 @@ $content = [System.Convert]::FromBase64String($base64Content) Set-Content -Path .\android-sdk-licenses.zip -Value $content -Encoding Byte Expand-Archive -Path .\android-sdk-licenses.zip -DestinationPath 'C:\Program Files (x86)\Android\android-sdk' -Force - # run the updates. # keep newer versions in descending order @@ -42,15 +34,32 @@ $sdkManager = "$sdkRoot\tools\bin\sdkmanager.bat" & $sdkManager --sdk_root=$sdkRoot "platform-tools" -Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager ` - -AndroidSDKRootPath $sdkRoot ` - -AndroidPackages $androidToolset.platform_list ` - -PrefixPackageName "platforms;" +# get packages info +$androidPackages = Get-AndroidPackages -AndroidSDKManagerPath $sdkManager + +# platforms +[int]$platformMinVersion = $androidToolset.platform_min_version +$platformList = Get-AndroidPackagesByVersion -AndroidPackages $androidPackages ` + -PrefixPackageName "platforms;" ` + -MinimumVersion $platformMinVersion ` + -Delimiter "-" ` + -Index 1 + +# build-tools +[version]$buildToolsMinVersion = $androidToolset.build_tools_min_version +$buildToolsList = Get-AndroidPackagesByVersion -AndroidPackages $androidPackages ` + -PrefixPackageName "build-tools;" ` + -MinimumVersion $buildToolsMinVersion ` + -Delimiter ";" ` + -Index 1 Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager ` -AndroidSDKRootPath $sdkRoot ` - -AndroidPackages $androidToolset.build_tools ` - -PrefixPackageName "build-tools;" + -AndroidPackages $platformList + +Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager ` + -AndroidSDKRootPath $sdkRoot ` + -AndroidPackages $buildToolsList Install-AndroidSDKPackages -AndroidSDKManagerPath $sdkManager ` -AndroidSDKRootPath $sdkRoot ` diff --git a/images/win/scripts/Installers/Update-DockerImages.ps1 b/images/win/scripts/Installers/Update-DockerImages.ps1 index d1a689d45..ec5df1b4a 100644 --- a/images/win/scripts/Installers/Update-DockerImages.ps1 +++ b/images/win/scripts/Installers/Update-DockerImages.ps1 @@ -16,18 +16,7 @@ function DockerPull { } } -if (Test-IsWin16) { - DockerPull mcr.microsoft.com/windows/servercore:ltsc2016 - DockerPull mcr.microsoft.com/windows/nanoserver:10.0.14393.953 - DockerPull mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2016 - DockerPull mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2016 +$dockerToolset = (Get-ToolsetContent).docker +foreach($dockerImage in $dockerToolset.images) { + DockerPull $dockerImage } - -if (Test-IsWin19) { - DockerPull mcr.microsoft.com/windows/servercore:ltsc2019 - DockerPull mcr.microsoft.com/windows/nanoserver:1809 - DockerPull mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019 - DockerPull mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019 -} - -DockerPull microsoft/aspnetcore-build:1.0-2.0 diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 b/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 index f85423c2c..d3c9a1743 100644 --- a/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 +++ b/images/win/scripts/SoftwareReport/SoftwareReport.Android.psm1 @@ -31,7 +31,6 @@ function Get-AndroidInstalledPackages { return $androidInstalledPackages } - function Build-AndroidTable { $packageInfo = Get-AndroidInstalledPackages return @( diff --git a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 index 2f45ecde1..377331ada 100644 --- a/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 +++ b/images/win/scripts/SoftwareReport/SoftwareReport.Generator.ps1 @@ -230,4 +230,8 @@ $markdown += New-MDHeader "Android" -Level 3 $markdown += Build-AndroidTable | New-MDTable $markdown += New-MDNewLine +# Docker images section +$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 diff --git a/images/win/scripts/Tests/Android.Tests.ps1 b/images/win/scripts/Tests/Android.Tests.ps1 index 8a1b6c0bb..d6c81db4a 100644 --- a/images/win/scripts/Tests/Android.Tests.ps1 +++ b/images/win/scripts/Tests/Android.Tests.ps1 @@ -2,16 +2,27 @@ Import-Module (Join-Path $PSScriptRoot "..\SoftwareReport\SoftwareReport.Android Describe "Android SDK" { $androidToolset = (Get-ToolsetContent).android + $androidPackages = Get-AndroidPackages -AndroidSDKManagerPath (Get-AndroidSDKManagerPath) $androidInstalledPackages = Get-AndroidInstalledPackages $platformTestCases = @() - $platformList = $androidToolset.platform_list + [int]$platformMinVersion = $androidToolset.platform_min_version + $platformList = Get-AndroidPackagesByVersion -AndroidPackages $androidPackages ` + -PrefixPackageName "platforms;" ` + -MinimumVersion $platformMinVersion ` + -Delimiter "-" ` + -Index 1 $platformList | ForEach-Object { $platformTestCases += @{ platformVersion = $_; installedPackages = $androidInstalledPackages } } $buildToolsTestCases = @() - $buildToolsList = $androidToolset.build_tools + [version]$buildToolsMinVersion = $androidToolset.build_tools_min_version + $buildToolsList = Get-AndroidPackagesByVersion -AndroidPackages $androidPackages ` + -PrefixPackageName "build-tools;" ` + -MinimumVersion $buildToolsMinVersion ` + -Delimiter ";" ` + -Index 1 $buildToolsList | ForEach-Object { $buildToolsTestCases += @{ buildToolsVersion = $_; installedPackages = $androidInstalledPackages } } @@ -35,14 +46,14 @@ Describe "Android SDK" { } It "Platform version is installed" -TestCases $platformTestCases { - "$installedPackages" | Should -Match "platforms;$platformVersion" + "$installedPackages" | Should -Match "$platformVersion" } It "Platform build tools is installed" -TestCases $buildToolsTestCases { - "$installedPackages" | Should -Match "build-tools;$buildToolsVersion" + "$installedPackages" | Should -Match "$buildToolsVersion" } - if (Test-isWin19) { + if (Test-IsWin19) { It "Extra package is installed" -TestCases $extraPackagesTestCases { "$installedPackages" | Should -Match "extras;$extraPackage" } diff --git a/images/win/toolsets/toolset-2016.json b/images/win/toolsets/toolset-2016.json index 856df7527..5e0b23c6b 100644 --- a/images/win/toolsets/toolset-2016.json +++ b/images/win/toolsets/toolset-2016.json @@ -127,12 +127,8 @@ } ], "android": { - "platform_list": [ - "android-30", "android-29", "android-28", "android-27", "android-26", "android-25", "android-24", "android-23", "android-22", "android-21", "android-19" - ], - "build_tools": [ - "30.0.2", "30.0.1", "30.0.0", "29.0.3", "29.0.2", "29.0.1", "29.0.0", "28.0.3", "28.0.2", "28.0.1", "28.0.0", "27.0.3", "27.0.2", "27.0.1", "27.0.0", "26.0.3", "26.0.2", "26.0.1", "26.0.0", "25.0.3", "25.0.2", "25.0.1", "25.0.0", "24.0.3", "24.0.2", "24.0.1", "24.0.0", "23.0.3", "23.0.2", "23.0.1", "22.0.1", "21.1.2", "20.0.0", "19.1.0" - ], + "platform_min_version": "19", + "build_tools_min_version": "19.1.0", "extra_list": [ "android;m2repository", "google;m2repository", @@ -231,5 +227,14 @@ ], "vsix": [ ] + }, + "docker": { + "images": [ + "mcr.microsoft.com/windows/servercore:ltsc2016", + "mcr.microsoft.com/windows/nanoserver:10.0.14393.953", + "mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2016", + "mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2016", + "microsoft/aspnetcore-build:1.0-2.0" + ] } } diff --git a/images/win/toolsets/toolset-2019.json b/images/win/toolsets/toolset-2019.json index 20f05bf87..bf1d0dff6 100644 --- a/images/win/toolsets/toolset-2019.json +++ b/images/win/toolsets/toolset-2019.json @@ -136,12 +136,8 @@ } ], "android": { - "platform_list": [ - "android-30", "android-29", "android-28", "android-27", "android-26", "android-25", "android-24", "android-23", "android-22", "android-21", "android-19" - ], - "build_tools": [ - "30.0.2", "30.0.1", "30.0.0", "29.0.3", "29.0.2", "29.0.1", "29.0.0", "28.0.3", "28.0.2", "28.0.1", "28.0.0", "27.0.3", "27.0.2", "27.0.1", "27.0.0", "26.0.3", "26.0.2", "26.0.1", "26.0.0", "25.0.3", "25.0.2", "25.0.1", "25.0.0", "24.0.3", "24.0.2", "24.0.1", "24.0.0", "23.0.3", "23.0.2", "23.0.1", "22.0.1", "21.1.2", "20.0.0", "19.1.0" - ], + "platform_min_version": "19", + "build_tools_min_version": "19.1.0", "extra_list": [ "android;m2repository", "google;m2repository", @@ -283,5 +279,14 @@ "id": "VSInstallerProjects" } ] + }, + "docker": { + "images": [ + "mcr.microsoft.com/windows/servercore:ltsc2019", + "mcr.microsoft.com/windows/nanoserver:1809", + "mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019", + "mcr.microsoft.com/dotnet/framework/runtime:4.8-windowsservercore-ltsc2019", + "microsoft/aspnetcore-build:1.0-2.0" + ] } }