From 620ebdf37b3fe2e4538d84483356a576bd524864 Mon Sep 17 00:00:00 2001 From: Erik Bershel <110455084+erik-bershel@users.noreply.github.com> Date: Mon, 27 Jan 2025 14:09:51 +0100 Subject: [PATCH] [macOS] Deprecate stale code, update structure accordingly (#11473) --- .github/ISSUE_TEMPLATE/announcement.yml | 1 - .github/ISSUE_TEMPLATE/bug-report.yml | 1 - .github/ISSUE_TEMPLATE/tool-request.yml | 1 - README.md | 2 - images.CI/macos/anka/Service.Helpers.psm1 | 4 +- .../xamarin-selector/select-xamarin-sdk-v2.sh | 53 --- .../xamarin-selector/select-xamarin-sdk.sh | 22 - images/macos/macos-12-Readme.md | 378 ------------------ .../build/configure-max-files-limitation.sh | 44 -- .../configure-network-interface-detection.sh | 39 -- .../scripts/build/configure-screensaver.sh | 30 -- .../macos/scripts/build/configure-system.sh | 9 +- .../build/configure-xcode-simulators.rb | 144 ------- images/macos/scripts/build/install-apache.sh | 12 - .../scripts/build/install-common-utils.sh | 61 +-- .../build/install-compilable-brew-packages.sh | 15 - images/macos/scripts/build/install-golang.sh | 16 - images/macos/scripts/build/install-haskell.sh | 31 -- .../macos/scripts/build/install-miniconda.sh | 24 -- images/macos/scripts/build/install-mongodb.sh | 23 -- images/macos/scripts/build/install-mono.sh | 4 +- images/macos/scripts/build/install-node.sh | 8 - .../scripts/build/install-pipx-packages.sh | 18 - images/macos/scripts/build/install-python.sh | 24 -- images/macos/scripts/build/install-rust.sh | 4 - .../macos/scripts/build/install-swiftlint.sh | 10 +- .../scripts/build/install-visualstudio.sh | 52 --- images/macos/scripts/build/install-xamarin.sh | 92 ----- .../docs-gen/Generate-SoftwareReport.ps1 | 125 +----- .../docs-gen/SoftwareReport.Common.psm1 | 219 +--------- .../docs-gen/SoftwareReport.WebServers.psm1 | 36 -- .../docs-gen/SoftwareReport.Xamarin.psm1 | 48 --- .../docs-gen/SoftwareReport.Xcode.psm1 | 21 +- .../macos/scripts/helpers/Common.Helpers.psm1 | 1 - .../confirm-identified-developers.scpt | 49 --- images/macos/scripts/helpers/utils.sh | 4 - images/macos/scripts/helpers/xamarin-utils.sh | 215 ---------- images/macos/scripts/tests/Android.Tests.ps1 | 8 - .../macos/scripts/tests/BasicTools.Tests.ps1 | 40 +- images/macos/scripts/tests/Common.Tests.ps1 | 81 ---- images/macos/scripts/tests/Haskell.Tests.ps1 | 30 -- images/macos/scripts/tests/Mono.Tests.ps1 | 74 ++++ .../scripts/tests/PipxPackages.Tests.ps1 | 12 - images/macos/scripts/tests/Toolset.Tests.ps1 | 109 ----- .../macos/scripts/tests/WebServers.Tests.ps1 | 25 -- images/macos/scripts/tests/Xamarin.Tests.ps1 | 317 --------------- images/macos/scripts/tests/Xcode.Tests.ps1 | 17 - images/macos/templates/macOS-12.anka.pkr.hcl | 315 --------------- images/macos/templates/macOS-13.anka.pkr.hcl | 3 - .../templates/macOS-13.arm64.anka.pkr.hcl | 4 - images/macos/templates/macOS-14.anka.pkr.hcl | 3 - .../templates/macOS-14.arm64.anka.pkr.hcl | 4 - images/macos/toolsets/Readme.md | 58 +-- images/macos/toolsets/toolset-12.json | 368 ----------------- 54 files changed, 105 insertions(+), 3203 deletions(-) delete mode 100644 images/macos/assets/xamarin-selector/select-xamarin-sdk-v2.sh delete mode 100644 images/macos/assets/xamarin-selector/select-xamarin-sdk.sh delete mode 100644 images/macos/macos-12-Readme.md delete mode 100644 images/macos/scripts/build/configure-max-files-limitation.sh delete mode 100644 images/macos/scripts/build/configure-network-interface-detection.sh delete mode 100644 images/macos/scripts/build/configure-screensaver.sh delete mode 100644 images/macos/scripts/build/configure-xcode-simulators.rb delete mode 100644 images/macos/scripts/build/install-apache.sh delete mode 100644 images/macos/scripts/build/install-compilable-brew-packages.sh delete mode 100644 images/macos/scripts/build/install-golang.sh delete mode 100644 images/macos/scripts/build/install-haskell.sh delete mode 100644 images/macos/scripts/build/install-miniconda.sh delete mode 100644 images/macos/scripts/build/install-mongodb.sh delete mode 100644 images/macos/scripts/build/install-pipx-packages.sh delete mode 100644 images/macos/scripts/build/install-visualstudio.sh delete mode 100644 images/macos/scripts/build/install-xamarin.sh delete mode 100644 images/macos/scripts/docs-gen/SoftwareReport.WebServers.psm1 delete mode 100644 images/macos/scripts/docs-gen/SoftwareReport.Xamarin.psm1 delete mode 100644 images/macos/scripts/helpers/confirm-identified-developers.scpt delete mode 100644 images/macos/scripts/helpers/xamarin-utils.sh delete mode 100644 images/macos/scripts/tests/Haskell.Tests.ps1 create mode 100644 images/macos/scripts/tests/Mono.Tests.ps1 delete mode 100644 images/macos/scripts/tests/PipxPackages.Tests.ps1 delete mode 100644 images/macos/scripts/tests/WebServers.Tests.ps1 delete mode 100644 images/macos/scripts/tests/Xamarin.Tests.ps1 delete mode 100644 images/macos/templates/macOS-12.anka.pkr.hcl delete mode 100644 images/macos/toolsets/toolset-12.json diff --git a/.github/ISSUE_TEMPLATE/announcement.yml b/.github/ISSUE_TEMPLATE/announcement.yml index abfb4bf40..b165eae58 100644 --- a/.github/ISSUE_TEMPLATE/announcement.yml +++ b/.github/ISSUE_TEMPLATE/announcement.yml @@ -39,7 +39,6 @@ body: - label: Ubuntu 20.04 - label: Ubuntu 22.04 - label: Ubuntu 24.04 - - label: macOS 12 - label: macOS 13 - label: macOS 13 Arm64 - label: macOS 14 diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 6aa187756..09990d9ce 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -22,7 +22,6 @@ body: - label: Ubuntu 20.04 - label: Ubuntu 22.04 - label: Ubuntu 24.04 - - label: macOS 12 - label: macOS 13 - label: macOS 13 Arm64 - label: macOS 14 diff --git a/.github/ISSUE_TEMPLATE/tool-request.yml b/.github/ISSUE_TEMPLATE/tool-request.yml index 89a76aee0..f9bcb7553 100644 --- a/.github/ISSUE_TEMPLATE/tool-request.yml +++ b/.github/ISSUE_TEMPLATE/tool-request.yml @@ -60,7 +60,6 @@ body: - label: Ubuntu 20.04 - label: Ubuntu 22.04 - label: Ubuntu 24.04 - - label: macOS 12 - label: macOS 13 - label: macOS 13 Arm64 - label: macOS 14 diff --git a/README.md b/README.md index 1a6f2afb1..ebcaeff1f 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,6 @@ To build a VM machine from this repo's source, see the [instructions](docs/creat | macOS 14 Arm64 |`macos-latest`, `macos-14`, `macos-latest-xlarge` or `macos-14-xlarge`| [macOS-14-arm64] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fmacos-14-arm64.json) | | macOS 13 | `macos-13` or `macos-13-large` | [macOS-13] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fmacos-13.json) | | macOS 13 Arm64 | `macos-13-xlarge` | [macOS-13-arm64] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fmacos-13-arm64.json) | -| macOS 12 deprecated | `macos-12` or `macos-12-large`| [macOS-12] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fmacos-12.json) | | Windows Server 2025 beta | `windows-2025` | [windows-2025] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fwin25.json) | | Windows Server 2022 | `windows-latest` or `windows-2022` | [windows-2022] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fwin22.json) | | Windows Server 2019 | `windows-2019` | [windows-2019] | ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fgist.githubusercontent.com%2Fsubir0071%2F385e39188f4280878bada99250e99db7%2Fraw%2Fwin19.json) | @@ -45,7 +44,6 @@ To build a VM machine from this repo's source, see the [instructions](docs/creat [windows-2025]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2025-Readme.md [windows-2022]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md [windows-2019]: https://github.com/actions/runner-images/blob/main/images/windows/Windows2019-Readme.md -[macOS-12]: https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md [macOS-13]: https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md [macOS-13-arm64]: https://github.com/actions/runner-images/blob/main/images/macos/macos-13-arm64-Readme.md [macOS-14]: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md diff --git a/images.CI/macos/anka/Service.Helpers.psm1 b/images.CI/macos/anka/Service.Helpers.psm1 index f8368b26f..cabf0f9a2 100644 --- a/images.CI/macos/anka/Service.Helpers.psm1 +++ b/images.CI/macos/anka/Service.Helpers.psm1 @@ -110,9 +110,7 @@ function Get-MacOSIPSWInstaller { [bool] $BetaSearch = $false ) - if ($MacOSVersion -eq [version] "12.0") { - $MacOSName = "macOS Monterey" - } elseif ($MacOSVersion -eq [version] "13.0") { + if ($MacOSVersion -eq [version] "13.0") { $MacOSName = "macOS Ventura" } elseif ($MacOSVersion -eq [version] "14.0") { $MacOSName = "macOS Sonoma" diff --git a/images/macos/assets/xamarin-selector/select-xamarin-sdk-v2.sh b/images/macos/assets/xamarin-selector/select-xamarin-sdk-v2.sh deleted file mode 100644 index 153b52e88..000000000 --- a/images/macos/assets/xamarin-selector/select-xamarin-sdk-v2.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash -e -o pipefail - -# Select any Xamarin SDK versions as the default ones independently by specifying only those versions that need to be changed. -# Examples: -# 1. Change all versions: $VM_ASSETS/select-xamarin-sdkv-v2.sh --mono=6.12 --ios=14.8 --android=10.2 --mac=7.8 -# 2. Change default Mono and iOS only: $VM_ASSETS/select-xamarin-sdkv-v2.sh --mono=6.12 --ios=14.8 -# 3. Change default Android only: $VM_ASSETS/select-xamarin-sdkv-v2.sh --android=11.1 - -get_framework_path() { - case $1 in - --mono) echo '/Library/Frameworks/Mono.framework/Versions' ;; - --ios) echo '/Library/Frameworks/Xamarin.iOS.framework/Versions' ;; - --android) echo '/Library/Frameworks/Xamarin.Android.framework/Versions' ;; - --mac) echo '/Library/Frameworks/Xamarin.Mac.framework/Versions' ;; - *) ;; - esac -} - -change_framework_version() { - local framework=$1 - local version=$2 - - echo "Select $framework $version" - - local countDigit=$(echo "${version}" | grep -o "\." | grep -c "\.") - - if [[ countDigit -gt 1 ]]; then - echo "[WARNING] It is not recommended to specify the exact framework version because your build can be broken with the next patch update. Consider using "major.minor" only format." - fi - - local framework_path=$(get_framework_path "$framework") - - if [ -d "${framework_path}/${version}" ]; then - sudo rm -f ${framework_path}/Current - sudo ln -s "${framework_path}/${version}" "${framework_path}/Current" - else - echo "Invalid framework version ${framework_path}/${version}" - exit 1 - fi -} - -for arg in "$@"; do - key=$(echo $arg | cut -f1 -d=) - value=$(echo $arg | cut -f2 -d=) - - case $key in - --mono | --ios | --android | --mac) change_framework_version $key $value ;; - *) - echo "Invalid parameter <${key}>" - exit 1 - ;; - esac -done diff --git a/images/macos/assets/xamarin-selector/select-xamarin-sdk.sh b/images/macos/assets/xamarin-selector/select-xamarin-sdk.sh deleted file mode 100644 index 014075ce0..000000000 --- a/images/macos/assets/xamarin-selector/select-xamarin-sdk.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -e -o pipefail -if [ -z "$1" ]; then - echo "No Xamarin SDK specified." - exit 0 -fi - -XAMARIN_SDK=$1 - -echo "Set Xamarin SDK to ${XAMARIN_SDK}" -FOLDERS_LIST=( - '/Library/Frameworks/Mono.framework/Versions' - '/Library/Frameworks/Xamarin.iOS.framework/Versions' - '/Library/Frameworks/Xamarin.Android.framework/Versions' - '/Library/Frameworks/Xamarin.Mac.framework/Versions' - ) - -for FOLDER in "${FOLDERS_LIST[@]}" -do - echo "Set Current folder for ${FOLDER}" - sudo rm -f ${FOLDER}/Current - sudo ln -s ${FOLDER}/${XAMARIN_SDK} ${FOLDER}/Current -done diff --git a/images/macos/macos-12-Readme.md b/images/macos/macos-12-Readme.md deleted file mode 100644 index 86e0b715a..000000000 --- a/images/macos/macos-12-Readme.md +++ /dev/null @@ -1,378 +0,0 @@ -| Announcements | -|-| -| [macOS 15 (Sequoia) is now available as a public beta in GitHub Actions](https://github.com/actions/runner-images/issues/10686) | -| [[Macos 13 and 14] Android NDK versions <=25 will be removed from images on October 07,2024](https://github.com/actions/runner-images/issues/10614) | -| [[Macos 13 and 14] Go version 1.20.0 will be removed on October 07,2024.](https://github.com/actions/runner-images/issues/10612) | -*** -# macOS 12 -- OS Version: macOS 12.7.6 (21H1320) -- Kernel Version: Darwin 21.6.0 -- Image Version: 20240926.174 - -## Installed Software - -### Language and Runtime -- .NET Core SDK: 6.0.425, 7.0.102, 7.0.202, 7.0.306, 7.0.410, 8.0.101, 8.0.204, 8.0.303, 8.0.402 -- Bash 3.2.57(1)-release -- Clang/LLVM 14.0.0 -- Clang/LLVM (Homebrew) 15.0.7 - available on `$(brew --prefix llvm@15)/bin/clang` -- GCC 12 (Homebrew GCC 12.4.0) - available by `gcc-12` alias -- GCC 13 (Homebrew GCC 13.3.0) - available by `gcc-13` alias -- GCC 14 (Homebrew GCC 14.2.0) - available by `gcc-14` alias -- GNU Fortran 12 (Homebrew GCC 12.4.0) - available by `gfortran-12` alias -- GNU Fortran 13 (Homebrew GCC 13.3.0) - available by `gfortran-13` alias -- GNU Fortran 14 (Homebrew GCC 14.2.0) - available by `gfortran-14` alias -- Julia 1.10.5 -- Kotlin 2.0.20-release-360 -- Go 1.21.13 -- Mono 6.12.0.188 -- Node.js 18.20.4 -- MSBuild 16.10.1.51301 (Mono 6.12.0.188) -- NVM 0.39.7 -- NVM - Cached node versions: 16.20.2, 18.20.4, 20.17.0 -- Perl 5.38.2 -- PHP 8.3.11 -- Python 2.7.18 -- Python3 3.12.6 -- R 4.4.1 -- Ruby 3.0.7p220 - -### Package Management -- Bundler 2.5.20 -- Carthage 0.40.0 -- CocoaPods 1.15.2 -- Composer 2.7.9 -- Homebrew 4.3.24 -- Miniconda 24.7.1 -- NPM 10.7.0 -- NuGet 6.3.1.1 -- Pip 20.3.4 (python 2.7) -- Pip3 24.2 (python 3.12) -- Pipx 1.7.1 -- RubyGems 3.5.20 -- Vcpkg 2024 (build from commit 3d8959985) -- Yarn 1.22.22 - -#### Environment variables -| Name | Value | -| ----------------------- | ---------------------- | -| CONDA | /usr/local/miniconda | -| VCPKG_INSTALLATION_ROOT | /usr/local/share/vcpkg | - -### Project Management -- Apache Ant 1.10.15 -- Apache Maven 3.9.9 -- Gradle 8.10.2 -- Sbt 1.10.2 - -### Utilities -- 7-Zip 17.05 -- aria2 1.37.0 -- azcopy 10.26.0 -- bazel 7.3.1 -- bazelisk 1.21.0 -- bsdtar 3.5.1 - available by 'tar' alias -- Curl 8.10.1 -- Git 2.46.2 -- Git LFS 3.5.1 -- GitHub CLI 2.57.0 -- GNU Tar 1.35 - available by 'gtar' alias -- GNU Wget 1.24.5 -- gpg (GnuPG) 2.4.5 -- ImageMagick 7.1.1-38 -- jq 1.7.1 -- mongo 5.0.29 -- mongod 5.0.29 -- OpenSSL 1.1.1w 11 Sep 2023 -- Packer 1.9.4 -- pkg-config 0.29.2 -- PostgreSQL 14.13 (Homebrew) -- psql (PostgreSQL) 14.13 (Homebrew) -- Sox 14.4.2 -- Subversion (SVN) 1.14.3 -- Switchaudio-osx 1.2.2 -- Vagrant 2.4.1 -- VirtualBox 6.1.38r153438 -- yq 4.44.3 -- zstd 1.5.6 - -### Tools -- App Center CLI 3.0.1 -- AWS CLI 2.17.59 -- AWS SAM CLI 1.124.0 -- AWS Session Manager CLI 1.2.650.0 -- Azure CLI 2.64.0 -- Azure CLI (azure-devops) 1.0.1 -- Bicep CLI 0.30.23 -- Cabal 3.10.3.0 -- Cmake 3.30.3 -- CodeQL Action Bundle 2.19.0 -- Colima 0.7.5 -- Fastlane 2.222.0 -- GHC 9.10.1 -- GHCup 0.1.30.0 -- Jazzy 0.15.2 -- Stack 3.1.1 -- SwiftFormat 0.54.5 -- Swig 4.2.1 -- Xcbeautify 1.6.0 -- Xcode Command Line Tools 14.2.0.0.1.1668646533 -- Xcodes 1.5.0 - -### Linters -- SwiftLint 0.53.0 -- Yamllint 1.35.1 - -### Browsers -- Safari 17.6 (17618.3.11.11.7) -- SafariDriver 17.6 (17618.3.11.11.7) -- Google Chrome 129.0.6668.71 -- Google Chrome for Testing 129.0.6668.70 -- ChromeDriver 129.0.6668.70 -- Microsoft Edge 129.0.2792.52 -- Microsoft Edge WebDriver 129.0.2792.46 -- Mozilla Firefox 130.0.1 -- geckodriver 0.35.0 -- Selenium server 4.25.0 - -#### Environment variables -| Name | Value | -| --------------- | ------------------------------------- | -| CHROMEWEBDRIVER | /usr/local/share/chromedriver-mac-x64 | -| EDGEWEBDRIVER | /usr/local/share/edge_driver | -| GECKOWEBDRIVER | /usr/local/opt/geckodriver/bin | - -### Java -| Version | Environment Variable | -| --------------------- | -------------------- | -| 8.0.422+5.1 (default) | JAVA_HOME_8_X64 | -| 11.0.24+8 | JAVA_HOME_11_X64 | -| 17.0.12+7 | JAVA_HOME_17_X64 | -| 21.0.4+7.0 | JAVA_HOME_21_X64 | - -### Cached Tools - -#### PyPy -- 2.7.18 [PyPy 7.3.17] -- 3.7.13 [PyPy 7.3.9] -- 3.8.16 [PyPy 7.3.11] -- 3.9.19 [PyPy 7.3.16] -- 3.10.14 [PyPy 7.3.17] - -#### Ruby -- 3.0.7 -- 3.1.6 -- 3.2.5 -- 3.3.5 - -#### Python -- 3.7.17 -- 3.8.18 -- 3.9.20 -- 3.10.15 -- 3.11.9 -- 3.12.6 - -#### Node.js -- 16.20.2 -- 18.20.4 -- 20.17.0 - -#### Go -- 1.20.14 -- 1.21.13 -- 1.22.7 -- 1.23.1 - -### Rust Tools -- Cargo 1.81.0 -- Rust 1.81.0 -- Rustdoc 1.81.0 -- Rustup 1.27.1 - -#### Packages -- Bindgen 0.70.1 -- Cargo-audit 0.20.1 -- Cargo-outdated 0.15.0 -- Cbindgen 0.27.0 -- Clippy 0.1.81 -- Rustfmt 1.7.1-stable - -### PowerShell Tools -- PowerShell 7.4.5 - -#### PowerShell Modules -- Az: 12.3.0 -- MarkdownPS: 1.10 -- Pester: 5.6.1 -- PSScriptAnalyzer: 1.22.0 - -### Web Servers -| Name | Version | ConfigFile | ServiceStatus | ListenPort | -| ----- | ------- | ------------------------------- | ------------- | ---------- | -| httpd | 2.4.62 | /usr/local/etc/httpd/httpd.conf | none | 80 | -| nginx | 1.27.1 | /usr/local/etc/nginx/nginx.conf | none | 80 | - -### Xamarin - -#### Visual Studio for Mac -| Version | Build | Path | -| -------------- | ----------- | ------------------------------------ | -| 2019 | 8.10.25.2 | /Applications/Visual Studio 2019.app | -| 2022 (default) | 17.6.14.413 | /Applications/Visual Studio.app | - -##### Notes -``` -To use Visual Studio 2019 by default rename the app: -mv "/Applications/Visual Studio.app" "/Applications/Visual Studio 2022.app" -mv "/Applications/Visual Studio 2019.app" "/Applications/Visual Studio.app" -``` - -#### Xamarin bundles -| symlink | Xamarin.Mono | Xamarin.iOS | Xamarin.Mac | Xamarin.Android | -| ----------------- | ------------ | ----------- | ----------- | --------------- | -| 6_12_25 | 6.12 | 16.4 | 9.3 | 13.2 | -| 6_12_24 | 6.12 | 16.2 | 9.1 | 13.2 | -| 6_12_23 | 6.12 | 16.2 | 9.1 | 13.1 | -| 6_12_22 | 6.12 | 16.1 | 9.0 | 13.1 | -| 6_12_21 (default) | 6.12 | 16.0 | 8.12 | 13.1 | -| 6_12_20 | 6.12 | 16.0 | 8.12 | 13.0 | -| 6_12_19 | 6.12 | 15.12 | 8.12 | 13.0 | -| 6_12_18 | 6.12 | 15.10 | 8.10 | 12.3 | -| 6_12_17 | 6.12 | 15.10 | 8.10 | 12.2 | -| 6_12_16 | 6.12 | 15.8 | 8.8 | 12.2 | -| 6_12_15 | 6.12 | 15.8 | 8.8 | 12.1 | -| 6_12_14 | 6.12 | 15.8 | 8.8 | 12.0 | -| 6_12_13 | 6.12 | 15.6 | 8.6 | 12.0 | -| 6_12_12 | 6.12 | 15.4 | 8.4 | 12.0 | -| 6_12_11 | 6.12 | 15.2 | 8.2 | 12.0 | -| 6_12_10 | 6.12 | 15.0 | 7.14 | 11.3 | - -#### Unit Test Framework -- NUnit 3.6.1 - -### Xcode -| Version | Build | Path | -| -------------- | -------- | ------------------------------ | -| 14.2 (default) | 14C18 | /Applications/Xcode_14.2.app | -| 14.1 | 14B47b | /Applications/Xcode_14.1.app | -| 14.0.1 | 14A400 | /Applications/Xcode_14.0.1.app | -| 13.4.1 | 13F100 | /Applications/Xcode_13.4.1.app | -| 13.3.1 | 13E500a | /Applications/Xcode_13.3.1.app | -| 13.2.1 | 13C100 | /Applications/Xcode_13.2.1.app | -| 13.1 | 13A1030d | /Applications/Xcode_13.1.app | - -#### Xcode Support Tools -- xcpretty 0.3.0 -- xcversion 2.8.1 - -#### Installed SDKs -| SDK | SDK Name | Xcode Version | -| ----------------------- | -------------------- | ---------------------- | -| macOS 12.0 | macosx12.0 | 13.1 | -| macOS 12.1 | macosx12.1 | 13.2.1 | -| macOS 12.3 | macosx12.3 | 13.3.1, 13.4.1, 14.0.1 | -| macOS 13.0 | macosx13.0 | 14.1 | -| macOS 13.1 | macosx13.1 | 14.2 | -| iOS 15.0 | iphoneos15.0 | 13.1 | -| iOS 15.2 | iphoneos15.2 | 13.2.1 | -| iOS 15.4 | iphoneos15.4 | 13.3.1 | -| iOS 15.5 | iphoneos15.5 | 13.4.1 | -| iOS 16.0 | iphoneos16.0 | 14.0.1 | -| iOS 16.1 | iphoneos16.1 | 14.1 | -| iOS 16.2 | iphoneos16.2 | 14.2 | -| Simulator - iOS 15.0 | iphonesimulator15.0 | 13.1 | -| Simulator - iOS 15.2 | iphonesimulator15.2 | 13.2.1 | -| Simulator - iOS 15.4 | iphonesimulator15.4 | 13.3.1 | -| Simulator - iOS 15.5 | iphonesimulator15.5 | 13.4.1 | -| Simulator - iOS 16.0 | iphonesimulator16.0 | 14.0.1 | -| Simulator - iOS 16.1 | iphonesimulator16.1 | 14.1 | -| Simulator - iOS 16.2 | iphonesimulator16.2 | 14.2 | -| tvOS 15.0 | appletvos15.0 | 13.1 | -| tvOS 15.2 | appletvos15.2 | 13.2.1 | -| tvOS 15.4 | appletvos15.4 | 13.3.1, 13.4.1 | -| tvOS 16.0 | appletvos16.0 | 14.0.1 | -| tvOS 16.1 | appletvos16.1 | 14.1, 14.2 | -| Simulator - tvOS 15.0 | appletvsimulator15.0 | 13.1 | -| Simulator - tvOS 15.2 | appletvsimulator15.2 | 13.2.1 | -| Simulator - tvOS 15.4 | appletvsimulator15.4 | 13.3.1, 13.4.1 | -| Simulator - tvOS 16.0 | appletvsimulator16.0 | 14.0.1 | -| Simulator - tvOS 16.1 | appletvsimulator16.1 | 14.1, 14.2 | -| watchOS 8.0 | watchos8.0 | 13.1 | -| watchOS 8.3 | watchos8.3 | 13.2.1 | -| watchOS 8.5 | watchos8.5 | 13.3.1, 13.4.1 | -| watchOS 9.0 | watchos9.0 | 14.0.1 | -| watchOS 9.1 | watchos9.1 | 14.1, 14.2 | -| Simulator - watchOS 8.0 | watchsimulator8.0 | 13.1 | -| Simulator - watchOS 8.3 | watchsimulator8.3 | 13.2.1 | -| Simulator - watchOS 8.5 | watchsimulator8.5 | 13.3.1, 13.4.1 | -| Simulator - watchOS 9.0 | watchsimulator9.0 | 14.0.1 | -| Simulator - watchOS 9.1 | watchsimulator9.1 | 14.1, 14.2 | -| DriverKit 21.0.1 | driverkit21.0.1 | 13.1 | -| DriverKit 21.2 | driverkit21.2 | 13.2.1 | -| DriverKit 21.4 | driverkit21.4 | 13.3.1, 13.4.1, 14.0.1 | -| DriverKit 22.1 | driverkit22.1 | 14.1 | -| DriverKit 22.2 | driverkit22.2 | 14.2 | - -#### Installed Simulators -| OS | Simulators | -| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| iOS 15.0 | iPod touch (7th generation)
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 12
iPhone 12 mini
iPhone 12 Pro
iPhone 12 Pro Max
iPhone 13
iPhone 13 mini
iPhone 13 Pro
iPhone 13 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPad (9th generation)
iPad Air (4th generation)
iPad mini (6th generation)
iPad Pro (11-inch) (3rd generation)
iPad Pro (12.9-inch) (5th generation)
iPad Pro (9.7-inch) | -| iOS 15.2 | iPod touch (7th generation)
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 12
iPhone 12 mini
iPhone 12 Pro
iPhone 12 Pro Max
iPhone 13
iPhone 13 mini
iPhone 13 Pro
iPhone 13 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPad (9th generation)
iPad Air (4th generation)
iPad mini (6th generation)
iPad Pro (11-inch) (3rd generation)
iPad Pro (12.9-inch) (5th generation)
iPad Pro (9.7-inch) | -| iOS 15.4 | iPod touch (7th generation)
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 12
iPhone 12 mini
iPhone 12 Pro
iPhone 12 Pro Max
iPhone 13
iPhone 13 mini
iPhone 13 Pro
iPhone 13 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPhone SE (3rd generation)
iPad (9th generation)
iPad Air (4th generation)
iPad Air (5th generation)
iPad mini (6th generation)
iPad Pro (11-inch) (3rd generation)
iPad Pro (12.9-inch) (5th generation)
iPad Pro (9.7-inch) | -| iOS 15.5 | iPod touch (7th generation)
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 12
iPhone 12 mini
iPhone 12 Pro
iPhone 12 Pro Max
iPhone 13
iPhone 13 mini
iPhone 13 Pro
iPhone 13 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPhone SE (3rd generation)
iPad (9th generation)
iPad Air (4th generation)
iPad Air (5th generation)
iPad mini (6th generation)
iPad Pro (11-inch) (3rd generation)
iPad Pro (12.9-inch) (5th generation)
iPad Pro (9.7-inch) | -| iOS 16.0 | iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 12
iPhone 12 mini
iPhone 12 Pro
iPhone 12 Pro Max
iPhone 13
iPhone 13 mini
iPhone 13 Pro
iPhone 13 Pro Max
iPhone 14
iPhone 14 Plus
iPhone 14 Pro
iPhone 14 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPhone SE (3rd generation)
iPad (9th generation)
iPad Air (4th generation)
iPad Air (5th generation)
iPad mini (6th generation)
iPad Pro (11-inch) (3rd generation)
iPad Pro (12.9-inch) (5th generation)
iPad Pro (9.7-inch) | -| iOS 16.1 | iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 12
iPhone 12 mini
iPhone 12 Pro
iPhone 12 Pro Max
iPhone 13
iPhone 13 mini
iPhone 13 Pro
iPhone 13 Pro Max
iPhone 14
iPhone 14 Plus
iPhone 14 Pro
iPhone 14 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPhone SE (3rd generation)
iPad (10th generation)
iPad (9th generation)
iPad Air (4th generation)
iPad Air (5th generation)
iPad mini (6th generation)
iPad Pro (11-inch) (3rd generation)
iPad Pro (11-inch) (4th generation)
iPad Pro (12.9-inch) (5th generation)
iPad Pro (12.9-inch) (6th generation)
iPad Pro (9.7-inch) | -| iOS 16.2 | iPod touch (7th generation)
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 12
iPhone 12 mini
iPhone 12 Pro
iPhone 12 Pro Max
iPhone 13
iPhone 13 mini
iPhone 13 Pro
iPhone 13 Pro Max
iPhone 14
iPhone 14 Plus
iPhone 14 Pro
iPhone 14 Pro Max
iPhone 8
iPhone 8 Plus
iPhone SE (2nd generation)
iPhone SE (3rd generation)
iPad (10th generation)
iPad (9th generation)
iPad Air (4th generation)
iPad Air (5th generation)
iPad mini (6th generation)
iPad Pro (11-inch) (3rd generation)
iPad Pro (11-inch) (4th generation)
iPad Pro (12.9-inch) (5th generation)
iPad Pro (12.9-inch) (6th generation)
iPad Pro (9.7-inch) | -| tvOS 15.0 | Apple TV
Apple TV 4K (2nd generation)
Apple TV 4K (at 1080p) (2nd generation) | -| tvOS 15.2 | Apple TV
Apple TV 4K (2nd generation)
Apple TV 4K (at 1080p) (2nd generation) | -| tvOS 15.4 | Apple TV
Apple TV 4K (2nd generation)
Apple TV 4K (at 1080p) (2nd generation) | -| tvOS 16.0 | Apple TV
Apple TV 4K (2nd generation)
Apple TV 4K (at 1080p) (2nd generation) | -| tvOS 16.1 | Apple TV
Apple TV 4K (2nd generation)
Apple TV 4K (3rd generation)
Apple TV 4K (3rd generation) (at 1080p)
Apple TV 4K (at 1080p) (2nd generation) | -| watchOS 8.0 | Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm
Apple Watch Series 6 - 40mm
Apple Watch Series 6 - 44mm
Apple Watch Series 7 - 41mm
Apple Watch Series 7 - 45mm | -| watchOS 8.3 | Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm
Apple Watch Series 6 - 40mm
Apple Watch Series 6 - 44mm
Apple Watch Series 7 - 41mm
Apple Watch Series 7 - 45mm | -| watchOS 8.5 | Apple Watch Series 5 - 40mm
Apple Watch Series 5 - 44mm
Apple Watch Series 6 - 40mm
Apple Watch Series 6 - 44mm
Apple Watch Series 7 - 41mm
Apple Watch Series 7 - 45mm | -| watchOS 9.0 | Apple Watch SE (40mm) (2nd generation)
Apple Watch SE (44mm) (2nd generation)
Apple Watch Series 5 (40mm)
Apple Watch Series 5 (44mm)
Apple Watch Series 6 (40mm)
Apple Watch Series 6 (44mm)
Apple Watch Series 7 (41mm)
Apple Watch Series 7 (45mm)
Apple Watch Series 8 (41mm)
Apple Watch Series 8 (45mm)
Apple Watch Ultra (49mm) | -| watchOS 9.1 | Apple Watch SE (40mm) (2nd generation)
Apple Watch SE (44mm) (2nd generation)
Apple Watch Series 5 (40mm)
Apple Watch Series 5 (44mm)
Apple Watch Series 6 (40mm)
Apple Watch Series 6 (44mm)
Apple Watch Series 7 (41mm)
Apple Watch Series 7 (45mm)
Apple Watch Series 8 (41mm)
Apple Watch Series 8 (45mm)
Apple Watch Ultra (49mm) | - -### Android -| Package Name | Version | -| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Android Command Line Tools | 8.0 | -| Android Emulator | 35.1.21 | -| Android SDK Build-tools | 35.0.0
34.0.0
33.0.0 33.0.1 33.0.2 33.0.3
32.0.0
31.0.0 | -| Android SDK Platforms | android-35 (rev 1)
android-34-ext8 (rev 1)
android-34-ext12 (rev 1)
android-34-ext11 (rev 1)
android-34-ext10 (rev 1)
android-34 (rev 3)
android-33-ext5 (rev 1)
android-33-ext4 (rev 1)
android-33 (rev 3)
android-32 (rev 1)
android-31 (rev 1) | -| Android SDK Platform-Tools | 35.0.2 | -| Android Support Repository | 47.0.0 | -| CMake | 3.18.1
3.22.1 | -| Google Play services | 49 | -| Google Repository | 58 | -| NDK | 24.0.8215888
25.2.9519653 (default)
26.3.11579264
27.1.12297006 | - -#### Environment variables -| Name | Value | -| ----------------------- | --------------------------------------------------- | -| ANDROID_HOME | /Users/runner/Library/Android/sdk | -| ANDROID_NDK | /Users/runner/Library/Android/sdk/ndk/25.2.9519653 | -| ANDROID_NDK_HOME | /Users/runner/Library/Android/sdk/ndk/25.2.9519653 | -| ANDROID_NDK_LATEST_HOME | /Users/runner/Library/Android/sdk/ndk/27.1.12297006 | -| ANDROID_NDK_ROOT | /Users/runner/Library/Android/sdk/ndk/25.2.9519653 | -| ANDROID_SDK_ROOT | /Users/runner/Library/Android/sdk | - -### Miscellaneous -- libXext 1.3.6 -- libXft 2.3.8 -- Tcl/Tk 8.6.15 -- Zlib 1.3.1 - -#### Environment variables -| Name | Value | -| ----------------- | ----------------------------------------------------------------------------------------- | -| PARALLELS_DMG_URL | https://download.parallels.com/desktop/v20/20.0.1-55659/ParallelsDesktop-20.0.1-55659.dmg | - -##### Notes -``` -If you want to use Parallels Desktop you should download a package from URL stored in -PARALLELS_DMG_URL environment variable. A system extension is allowed for this version. -``` - diff --git a/images/macos/scripts/build/configure-max-files-limitation.sh b/images/macos/scripts/build/configure-max-files-limitation.sh deleted file mode 100644 index 49e5fc0c5..000000000 --- a/images/macos/scripts/build/configure-max-files-limitation.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -e -o pipefail -################################################################################ -## File: configure-max-files-limitation.sh -## Desc: Configure max files limitation -################################################################################ - -Launch_Daemons="/Library/LaunchDaemons" - -# EOF in quotes to disable variable expansion -echo "Creating limit.maxfiles.plist" -cat > ${Launch_Daemons}/limit.maxfiles.plist << EOF - - - - - Label - limit.maxfiles - Program - /Users/runner/limit-maxfiles.sh - RunAtLoad - - ServiceIPC - - - -EOF - -# Creating script for applying workaround https://developer.apple.com/forums/thread/735798 - -cat > /Users/runner/limit-maxfiles.sh << EOF -#!/bin/bash -sudo launchctl limit maxfiles 256 unlimited -sudo launchctl limit maxfiles 65536 524288 -EOF - -echo "limit.maxfiles.sh permissions changing" -chmod +x /Users/runner/limit-maxfiles.sh - -echo "limit.maxfiles.plist permissions changing" -chown root:wheel "${Launch_Daemons}/limit.maxfiles.plist" -chmod 0644 ${Launch_Daemons}/limit.maxfiles.plist - -echo "Done, limit.maxfiles has been updated" diff --git a/images/macos/scripts/build/configure-network-interface-detection.sh b/images/macos/scripts/build/configure-network-interface-detection.sh deleted file mode 100644 index 1a09bc2c6..000000000 --- a/images/macos/scripts/build/configure-network-interface-detection.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -e -o pipefail -################################################################################ -## File: configure-network-interface-detection.sh -## Desc: add a Daemon to re-detect the attached network interfaces after vm is booted. -## Maintainer: @timsutton -## script was taken from https://github.com/timsutton/osx-vm-templates/blob/master/scripts/add-network-interface-detection.sh -################################################################################ - -PLIST=/Library/LaunchDaemons/sonoma.detectnewhardware.plist -cat < ${PLIST} - - - - - Label - sonoma.detectnewhardware - ProgramArguments - - /usr/sbin/networksetup - -detectnewhardware - - RunAtLoad - - - -EOF - -# These should be already set as follows, but since they're required -# in order to load properly, we set them explicitly. -/bin/chmod 644 ${PLIST} -/usr/sbin/chown root:wheel ${PLIST} - -: ' -The MIT License (MIT) -Copyright (c) 2013-2017 Timothy Sutton -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -' diff --git a/images/macos/scripts/build/configure-screensaver.sh b/images/macos/scripts/build/configure-screensaver.sh deleted file mode 100644 index 687302880..000000000 --- a/images/macos/scripts/build/configure-screensaver.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -e -o pipefail -################################################################################ -## File: configure-screensaver.sh -## Desc: Configure screensaver -################################################################################ - -# set screensaver idleTime to 0, to prevent turning screensaver on -macUUID=$(ioreg -rd1 -c IOPlatformExpertDevice | grep -i "UUID" | cut -c27-62) - -rm -rf /Users/$USERNAME/Library/Preferences/com.apple.screensaver.$macUUID.plist -rm -rf /Users/$USERNAME/Library/Preferences/ByHost/com.apple.screensaver.$macUUID.plist -rm -rf /Users/$USERNAME/Library/Preferences/com.apple.screensaver.plist -rm -rf /Users/$USERNAME/Library/Preferences/ByHost/com.apple.screensaver.plist - -defaults write /Users/$USERNAME/Library/Preferences/com.apple.screensaver.$macUUID.plist idleTime -string 0 -defaults write /Users/$USERNAME/Library/Preferences/com.apple.screensaver.$macUUID.plist CleanExit "YES" -defaults write /Users/$USERNAME/Library/Preferences/ByHost/com.apple.screensaver.$macUUID.plist idleTime -string 0 -defaults write /Users/$USERNAME/Library/Preferences/ByHost/com.apple.screensaver.$macUUID.plist CleanExit "YES" -defaults write /Users/$USERNAME/Library/Preferences/com.apple.screensaver.plist idleTime -string 0 -defaults write /Users/$USERNAME/Library/Preferences/com.apple.screensaver.plist CleanExit "YES" -defaults write /Users/$USERNAME/Library/Preferences/ByHost/com.apple.screensaver.plist idleTime -string 0 -defaults write /Users/$USERNAME/Library/Preferences/ByHost/com.apple.screensaver.plist CleanExit "YES" - -chown -R $USERNAME:staff /Users/$USERNAME/Library/Preferences/ByHost/ -chown -R $USERNAME:staff /Users/$USERNAME/Library/Preferences/ - -killall cfprefsd - -# Set values to 0, to prevent sleep at all -pmset -a displaysleep 0 sleep 0 disksleep 0 diff --git a/images/macos/scripts/build/configure-system.sh b/images/macos/scripts/build/configure-system.sh index 23fd09f9e..62fdb5bfc 100644 --- a/images/macos/scripts/build/configure-system.sh +++ b/images/macos/scripts/build/configure-system.sh @@ -12,20 +12,13 @@ close_finder_window # Remove Parallels Desktop # https://github.com/actions/runner-images/issues/6105 # https://github.com/actions/runner-images/issues/10143 -if is_Monterey || is_SonomaX64 || is_VenturaX64; then +if is_SonomaX64 || is_VenturaX64; then brew uninstall parallels fi # Put documentation to $HOME root cp $HOME/image-generation/output/software-report/systeminfo.* $HOME/ -# Put build vm assets (xamarin-selector) scripts to proper directory -if is_Monterey || is_Sonoma || is_Ventura; then - mkdir -p /usr/local/opt/$USER/scripts - mv $HOME/image-generation/assets/* /usr/local/opt/$USER/scripts - find /usr/local/opt/$USER/scripts -type f -name "*\.sh" -exec chmod +x {} \; -fi - # Remove fastlane cached cookie rm -rf ~/.fastlane diff --git a/images/macos/scripts/build/configure-xcode-simulators.rb b/images/macos/scripts/build/configure-xcode-simulators.rb deleted file mode 100644 index a585acc55..000000000 --- a/images/macos/scripts/build/configure-xcode-simulators.rb +++ /dev/null @@ -1,144 +0,0 @@ -#!/usr/bin/env ruby -################################################################################ -## File: configure-xcode-simulators.rb -## Desc: List all simulators, find duplicate type and delete them. -## Maintainer: @vlas-voloshin -## script was taken from https://gist.github.com/vlas-voloshin/f9982128200345cd3fb7 -################################################################################ - -class SimDevice - - attr_accessor :runtime - attr_accessor :name - attr_accessor :identifier - attr_accessor :timestamp - - def initialize(runtime, name, identifier, timestamp) - @runtime = runtime - @name = name - @identifier = identifier - @timestamp = timestamp - end - - def to_s - return "#{@name} - #{@runtime} (#{@identifier}) [#{@timestamp}]" - end - - def equivalent_to_device(device) - return @runtime == device.runtime && @name == device.name - end - - end - - # Executes a shell command and returns the result from stdout - def execute_simctl_command(command) - return %x[xcrun simctl #{command}] - end - - # Retrieves the creation date/time of simulator with specified identifier - def simulator_creation_date(identifier) - directory = Dir.home() + "/Library/Developer/CoreSimulator/Devices/" + identifier - if (Dir.exists?(directory)) - if (File::Stat.method_defined?(:birthtime)) - return File.stat(directory).birthtime - else - return File.stat(directory).ctime - end - else - # Simulator directory is not yet created - treat it as if it was created right now (happens with new iOS 9 sims) - return Time.now - end - end - - # Deletes specified simulator - def delete_device(device) - execute_simctl_command("delete #{device.identifier}") - end - - puts("Searching for simulators...") - - # Retrieve the list of existing simulators - devices = [] - runtime = "" - execute_simctl_command("list devices").lines.each do |line| - case line[0] - when '=' - # First header, skip it - when '-' - # Runtime header - runtime = line.scan(/-- (.+?) --/).flatten[0] - else - name_and_identifier = line.scan(/\s+(.+?) \(([\w\d]+-[\w\d]+-[\w\d-]+)\)/)[0] - name = name_and_identifier[0] - identifier = name_and_identifier[1] - timestamp = simulator_creation_date(identifier) - device = SimDevice.new(runtime, name, identifier, timestamp) - devices.push(device) - end - end - - # Sort the simulators by their creation timestamp, ascending - devices = devices.sort { |a, b| a.timestamp <=> b.timestamp } - - duplicates = {} - # Enumerate all devices except for the last one - for i in 0..devices.count-2 - device = devices[i] - # Enumerate all devices *after* this one (created *later*) - for j in i+1..devices.count-1 - potential_duplicate = devices[j] - if potential_duplicate.equivalent_to_device(device) - duplicates[potential_duplicate] = device - # Break out of the inner loop if a duplicate is found - if another duplicate exists, - # it will be found when this one is reached in the outer loop - break - end - end - end - - if duplicates.count == 0 - puts("You don't have duplicate simulators!") - exit() - end - - puts("Looks like you have #{duplicates.count} duplicate simulator#{duplicates.count > 1 ? "s" : ""}:") - duplicates.each_pair do |duplicate, original| - puts - puts("#{duplicate}") - puts("--- duplicate of ---") - puts("#{original}") - end - puts - - puts("Each duplicate was determined as the one created later than the 'original'.") - - puts("Deleting...") - duplicates.each_key do |duplicate| - delete_device(duplicate) - end - - puts("Done!") - -=begin -MIT License - -Copyright (c) 2015-2019 Vlas Voloshin - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -=end diff --git a/images/macos/scripts/build/install-apache.sh b/images/macos/scripts/build/install-apache.sh deleted file mode 100644 index b87345eea..000000000 --- a/images/macos/scripts/build/install-apache.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -e -o pipefail -################################################################################ -## File: install-apache.sh -## Desc: Install Apache HTTP Server -################################################################################ - -source ~/utils/utils.sh - -brew_smart_install httpd -sudo sed -Ei '' 's/Listen .*/Listen 80/' $(brew --prefix)/etc/httpd/httpd.conf - -invoke_tests "WebServers" "Apache" diff --git a/images/macos/scripts/build/install-common-utils.sh b/images/macos/scripts/build/install-common-utils.sh index 9f9013538..bdab996d1 100644 --- a/images/macos/scripts/build/install-common-utils.sh +++ b/images/macos/scripts/build/install-common-utils.sh @@ -6,29 +6,20 @@ source ~/utils/utils.sh -# Monterey needs future review: -# aliyun-cli, gnupg, helm have issues with building from the source code. -# Added gmp for now, because toolcache ruby needs its libs. Remove it when php starts to build from source code. common_packages=$(get_toolset_value '.brew.common_packages[]') for package in $common_packages; do echo "Installing $package..." - if is_Monterey && [[ $package == "xcbeautify" ]]; then - # Pin the version on Monterey as 2.0.x requires Xcode >=15.0 which is not available on OS12 - xcbeautify_path=$(download_with_retry "https://raw.githubusercontent.com/Homebrew/homebrew-core/d3653e83f9c029a3fddb828ac804b07ac32f7b3b/Formula/x/xcbeautify.rb") - brew install "$xcbeautify_path" + if [[ $package == "packer" ]]; then + # Packer has been deprecated in Homebrew. Use tap to install Packer. + brew install hashicorp/tap/packer else - if [[ $package == "packer" ]]; then - # Packer has been deprecated in Homebrew. Use tap to install Packer. - brew install hashicorp/tap/packer + if (is_VenturaX64 || is_SonomaX64) && [[ $package == "tcl-tk@8" ]]; then + brew_smart_install "$package" + # Fix for https://github.com/actions/runner-images/issues/11074 + ln -sf $(brew --prefix tcl-tk@8)/lib/libtcl8.6.dylib /usr/local/lib/libtcl8.6.dylib + ln -sf $(brew --prefix tcl-tk@8)/lib/libtk8.6.dylib /usr/local/lib/libtk8.6.dylib else - if (is_VenturaX64 || is_SonomaX64) && [[ $package == "tcl-tk@8" ]]; then - brew_smart_install "$package" - # Fix for https://github.com/actions/runner-images/issues/11074 - ln -sf $(brew --prefix tcl-tk@8)/lib/libtcl8.6.dylib /usr/local/lib/libtcl8.6.dylib - ln -sf $(brew --prefix tcl-tk@8)/lib/libtk8.6.dylib /usr/local/lib/libtk8.6.dylib - else - brew_smart_install "$package" - fi + brew_smart_install "$package" fi fi done @@ -36,37 +27,26 @@ done cask_packages=$(get_toolset_value '.brew.cask_packages[]') for package in $cask_packages; do echo "Installing $package..." - if is_Monterey && [[ $package == "virtualbox" ]]; then - # Do not update VirtualBox on macOS 12 due to the issue with VMs in gurumediation state which blocks Vagrant on macOS: https://github.com/actions/runner-images/issues/8730 - # macOS host: Dropped all kernel extensions. VirtualBox relies fully on the hypervisor and vmnet frameworks provided by Apple now. - virtualbox_cask_path=$(download_with_retry "https://raw.githubusercontent.com/Homebrew/homebrew-cask/aa3c55951fc9d687acce43e5c0338f42c1ddff7b/Casks/virtualbox.rb") - brew install $virtualbox_cask_path + if is_Arm64 && [[ $package == "parallels" ]]; then + echo "Parallels installation is skipped for arm64 architecture" else - if is_Arm64 && [[ $package == "parallels" ]]; then - echo "Parallels installation is skipped for arm64 architecture" - else - brew install --cask $package - fi + brew install --cask $package fi done # Load "Parallels International GmbH" -if is_Monterey || is_SonomaX64 || is_VenturaX64; then +if is_SonomaX64 || is_VenturaX64; then sudo kextload /Applications/Parallels\ Desktop.app/Contents/Library/Extensions/10.9/prl_hypervisor.kext || true fi # Execute AppleScript to change security preferences for macOS12, macOS13 and macOS14 # System Preferences -> Security & Privacy -> General -> Unlock -> Allow -> Not now -if is_Monterey || is_SonomaX64 || is_VenturaX64; then +if is_SonomaX64 || is_VenturaX64; then for retry in {4..0}; do echo "Executing AppleScript to change security preferences. Retries left: $retry" { set -e osascript -e 'tell application "System Events" to get application processes where visible is true' - if is_Monterey; then - osascript $HOME/utils/confirm-identified-developers.scpt $USER_PASSWORD - fi - if is_VenturaX64; then osascript $HOME/utils/confirm-identified-developers-macos13.scpt $USER_PASSWORD fi @@ -87,17 +67,10 @@ if is_Monterey || is_SonomaX64 || is_VenturaX64; then fi # Validate "Parallels International GmbH" kext -if is_Monterey || is_SonomaX64 || is_VenturaX64; then +if is_SonomaX64 || is_VenturaX64; then - if is_Monterey; then - echo "Closing System Preferences window if it is still opened" - killall "System Preferences" || true - fi - - if is_SonomaX64 || is_VenturaX64; then - echo "Closing System Settings window if it is still opened" - killall "System Settings" || true - fi + echo "Closing System Settings window if it is still opened" + killall "System Settings" || true echo "Checking parallels kexts" dbName="/var/db/SystemPolicyConfiguration/KextPolicy" diff --git a/images/macos/scripts/build/install-compilable-brew-packages.sh b/images/macos/scripts/build/install-compilable-brew-packages.sh deleted file mode 100644 index b0f22c5df..000000000 --- a/images/macos/scripts/build/install-compilable-brew-packages.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -e -o pipefail -################################################################################ -## File: install-compilable-brew-packages.sh -## Desc: Install compilable brew packages -################################################################################ - -source ~/utils/utils.sh - -compilable_packages=$(get_toolset_value '.brew.compilable_packages[]') -for package in $compilable_packages; do - echo "Installing $package..." - brew_smart_install "$package" -done - -invoke_tests "Common" "Compiled" diff --git a/images/macos/scripts/build/install-golang.sh b/images/macos/scripts/build/install-golang.sh deleted file mode 100644 index 7a28868ed..000000000 --- a/images/macos/scripts/build/install-golang.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -e -o pipefail -################################################################################ -## File: install-golang.sh -## Desc: Install Go -################################################################################ - -source ~/utils/utils.sh - -default_go_version=$(get_toolset_value '.go.default') -echo "Installing Go..." -brew_smart_install "go@${default_go_version}" - -# Create symlinks to preserve backward compatibility. Symlinks are not created when non-latest go is being installed -ln -sf $(brew --prefix go@${default_go_version})/bin/* /usr/local/bin/ - -invoke_tests "Common" "Go" diff --git a/images/macos/scripts/build/install-haskell.sh b/images/macos/scripts/build/install-haskell.sh deleted file mode 100644 index d88bf616e..000000000 --- a/images/macos/scripts/build/install-haskell.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -e -o pipefail -################################################################################ -## File: install-haskell.sh -## Desc: Install Haskell -################################################################################ - -source ~/utils/utils.sh - -curl --proto '=https' --tlsv1.2 -fsSL https://get-ghcup.haskell.org | bash -export PATH="$HOME/.ghcup/bin:$PATH" -echo 'export PATH="$PATH:$HOME/.ghcup/bin"' >> $HOME/.bashrc - -# ghcup output looks like this "ghc 8.6.4 base-4.12.0.0 hls-powered", need to take all the first versions only(8.6.4 in that case) and avoid pre-release ones -availableVersions=$(ghcup list -t ghc -r | grep -v "prerelease" | awk '{print $2}') - -# Install 3 latest major versions(For instance 8.6.5, 8.8.4, 8.10.2) -minorMajorVersions=$(echo "$availableVersions" | cut -d"." -f 1,2 | uniq | tail -n3) -for majorMinorVersion in $minorMajorVersions; do - fullVersion=$(echo "$availableVersions" | grep "$majorMinorVersion." | tail -n1) - echo "install ghc version $fullVersion..." - ghcup install $fullVersion - ghcup set $fullVersion -done - -echo "install cabal..." -ghcup install-cabal - -echo "Updating stack..." -ghcup install stack latest - -invoke_tests "Haskell" diff --git a/images/macos/scripts/build/install-miniconda.sh b/images/macos/scripts/build/install-miniconda.sh deleted file mode 100644 index 7d9ea2fe1..000000000 --- a/images/macos/scripts/build/install-miniconda.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -e -o pipefail -################################################################################ -## File: install-miniconda.sh -## Desc: Install Miniconda -################################################################################ - -source ~/utils/utils.sh - -miniconda_installer_path=$(download_with_retry "https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh") -chmod +x $miniconda_installer_path -sudo $miniconda_installer_path -b -p /usr/local/miniconda - -# Chmod with full permissions recursively to avoid permissions restrictions -sudo chmod -R 777 /usr/local/miniconda - -sudo ln -s /usr/local/miniconda/bin/conda /usr/local/bin/conda - -if [[ -d $HOME/.conda ]]; then - sudo chown -R $USER $HOME/.conda -fi - -echo "export CONDA=/usr/local/miniconda" >> $HOME/.bashrc - -invoke_tests "Common" "Miniconda" diff --git a/images/macos/scripts/build/install-mongodb.sh b/images/macos/scripts/build/install-mongodb.sh deleted file mode 100644 index c603d3892..000000000 --- a/images/macos/scripts/build/install-mongodb.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -e -o pipefail -################################################################################ -## File: install-mongodb.sh -## Desc: Install MongoDB -################################################################################ - -source ~/utils/utils.sh - -# MongoDB object-value database -# Install latest release version of MongoDB Community Edition -# https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x -toolsetVersion=$(get_toolset_value '.mongodb.version') - -brew tap mongodb/brew -versionToInstall=$(brew search --formulae /mongodb-community@$toolsetVersion/ | awk -F'/' '{print $3}' | tail -1) -echo "Installing mongodb $versionToInstall" -brew_smart_install $versionToInstall - -if ! which mongo ; then - brew link $versionToInstall -fi - -invoke_tests "Databases" "MongoDB" diff --git a/images/macos/scripts/build/install-mono.sh b/images/macos/scripts/build/install-mono.sh index 3ac147f0a..41bdd2d30 100644 --- a/images/macos/scripts/build/install-mono.sh +++ b/images/macos/scripts/build/install-mono.sh @@ -47,5 +47,5 @@ sudo mv $nunit3_console_wrapper "${MONO_VERSIONS_PATH}/${mono_version}/Commands/ echo "Creating short symlink '${mono_version_short}'..." sudo ln -s ${MONO_VERSIONS_PATH}/${mono_version} ${MONO_VERSIONS_PATH}/${mono_version_short} -# Invoke tests for Xamarin and Mono -invoke_tests "Xamarin" "Mono" +# Invoke tests and Mono +invoke_tests "Mono" diff --git a/images/macos/scripts/build/install-node.sh b/images/macos/scripts/build/install-node.sh index 9e8a084b0..85b30368d 100644 --- a/images/macos/scripts/build/install-node.sh +++ b/images/macos/scripts/build/install-node.sh @@ -16,12 +16,4 @@ echo Installing yarn... yarn_installer_path=$(download_with_retry "https://yarnpkg.com/install.sh") bash $yarn_installer_path -if is_Monterey; then - npm_global_packages=$(get_toolset_value '.npm.global_packages[].name') - for module in ${npm_global_packages[@]}; do - echo "Install $module" - npm install -g $module -done -fi - invoke_tests "Node" "Node.js" diff --git a/images/macos/scripts/build/install-pipx-packages.sh b/images/macos/scripts/build/install-pipx-packages.sh deleted file mode 100644 index 0b4a8f90f..000000000 --- a/images/macos/scripts/build/install-pipx-packages.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -e -o pipefail -################################################################################ -## File: install-pipx-packages.sh -## Desc: Install Pipx Packages -################################################################################ - -source ~/utils/utils.sh - -export PATH="$PATH:/opt/pipx_bin" - -pipx_packages=$(get_toolset_value '.pipx[].package') - -for package in $pipx_packages; do - echo "Install $package into default python" - pipx install $package -done - -invoke_tests "PipxPackages" diff --git a/images/macos/scripts/build/install-python.sh b/images/macos/scripts/build/install-python.sh index 426cc4351..084f88b89 100644 --- a/images/macos/scripts/build/install-python.sh +++ b/images/macos/scripts/build/install-python.sh @@ -8,30 +8,6 @@ source ~/utils/utils.sh echo "Installing Python Tooling" -if is_Monterey; then - echo "Install latest Python 2" - python2_pkg=$(download_with_retry "https://www.python.org/ftp/python/2.7.18/python-2.7.18-macosx10.9.pkg") - python2_pkg_sha256="c570f38b05dd8b112ad21b418cdf51a9816d62f9f44746452739d421be24d50c" - use_checksum_comparison $python2_pkg $python2_pkg_sha256 - - choice_changes_xml=$(mktemp /tmp/python2_choice_changes.xml.XXXXXX) - sudo installer -showChoiceChangesXML -pkg $python2_pkg -target / | tee $choice_changes_xml > /dev/null - - # To avoid symlink conflicts, remove tools installation in /usr/local/bin using installer choices - xmllint --shell $choice_changes_xml < $(find $(brew --repository) -name swiftlint.rb) - HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_FROM_API=1 brew install swiftlint -else - brew_smart_install "swiftlint" -fi +brew_smart_install "swiftlint" invoke_tests "Linters" "SwiftLint" diff --git a/images/macos/scripts/build/install-visualstudio.sh b/images/macos/scripts/build/install-visualstudio.sh deleted file mode 100644 index e4fa7a35a..000000000 --- a/images/macos/scripts/build/install-visualstudio.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash -e -o pipefail -################################################################################ -## File: install-visualstudio.sh -## Desc: Install Visual Studio -################################################################################ - -source ~/utils/utils.sh -source ~/utils/xamarin-utils.sh - -install_vsmac() { - local vsmac_version=$1 - local vsmac_default=$2 - if [[ $vsmac_version == "2019" ]]; then - vsmac_download_url=$(curl -fsSL "https://aka.ms/manifest/stable" | jq -r '.items[] | select(.genericName=="VisualStudioMac").url') - elif [[ $vsmac_version == "2022" ]]; then - vsmac_download_url=$(curl -fsSL "https://aka.ms/manifest/stable-2022" | jq -r '.items[] | select(.genericName=="VisualStudioMac").url') - elif [[ $vsmac_version == "preview" ]]; then - vsmac_download_url=$(curl -fsSL "https://aka.ms/manifest/preview" | jq -r '.items[] | select(.genericName=="VisualStudioMac").url') - else - vsmac_download_url=$(buildVSMacDownloadUrl $vsmac_version) - fi - - echo "Installing Visual Studio ${vsmac_version} for Mac" - TMPMOUNT=$(/usr/bin/mktemp -d /tmp/visualstudio.XXXX) - mkdir -p "$TMPMOUNT/downloads" - - vsmac_installer=$(download_with_retry $vsmac_download_url "$TMPMOUNT/downloads/${vsmac_download_url##*/}") - - echo "Mounting Visual Studio..." - hdiutil attach $vsmac_installer -mountpoint $TMPMOUNT - - echo "Moving Visual Studio to /Applications/..." - pushd $TMPMOUNT - tar cf - "./Visual Studio.app" | tar xf - -C /Applications/ - - if [[ $vsmac_version != $vsmac_default ]]; then - mv "/Applications/Visual Studio.app" "/Applications/Visual Studio ${vsmac_version}.app" - fi - - popd - sudo hdiutil detach $TMPMOUNT - sudo rm -rf $TMPMOUNT -} - -vsmac_versions=($(get_toolset_value '.xamarin.vsmac.versions[]')) -default_vsmac_version=$(get_toolset_value '.xamarin.vsmac.default') - -for version in ${vsmac_versions[@]}; do - install_vsmac $version $default_vsmac_version -done - -invoke_tests "Common" "VSMac" diff --git a/images/macos/scripts/build/install-xamarin.sh b/images/macos/scripts/build/install-xamarin.sh deleted file mode 100644 index faa0b70df..000000000 --- a/images/macos/scripts/build/install-xamarin.sh +++ /dev/null @@ -1,92 +0,0 @@ -#!/bin/bash -e -o pipefail -################################################################################ -## File: install-xamarin.sh -## Desc: Install Xamarin -################################################################################ - -source ~/utils/utils.sh -source ~/utils/xamarin-utils.sh - -mono_versions=($(get_toolset_value '.xamarin."mono_versions" | reverse | .[]')) -xamarin_ios_versions=($(get_toolset_value '.xamarin."ios_versions" | reverse | .[]')) -xamarin_mac_versions=($(get_toolset_value '.xamarin."mac_versions" | reverse | .[]')) -xamarin_android_versions=($(get_toolset_value '.xamarin."android_versions" | reverse | .[]')) -latest_sdk_symlink=$(get_toolset_value '.xamarin.bundles[0].symlink') -current_sdk_symlink=$(get_toolset_value '.xamarin."bundle_default"') -default_xcode_version=$(get_toolset_value '.xcode.default') - -if [[ $current_sdk_symlink == "latest" ]]; then - current_sdk_symlink=$latest_sdk_symlink -fi - -MONO_VERSIONS_PATH="/Library/Frameworks/Mono.framework/Versions" -IOS_VERSIONS_PATH="/Library/Frameworks/Xamarin.iOS.framework/Versions" -ANDROID_VERSIONS_PATH="/Library/Frameworks/Xamarin.Android.framework/Versions" -MAC_VERSIONS_PATH="/Library/Frameworks/Xamarin.Mac.framework/Versions" - -TMPMOUNT=$(/usr/bin/mktemp -d /tmp/visualstudio.XXXX) -TMPMOUNT_FRAMEWORKS=$TMPMOUNT/frameworks -createBackupFolders - -pushd $TMPMOUNT - -# Download NUnit console -downloadNUnitConsole - -# Install Mono sdks -for version in ${mono_versions[@]}; do installMono $version; done -sudo mv -v $TMPMOUNT_FRAMEWORKS/mono/* $MONO_VERSIONS_PATH/ - -# Install Xamarin.iOS sdks -for version in ${xamarin_ios_versions[@]}; do installXamarinIOS $version; done -sudo mv -v $TMPMOUNT_FRAMEWORKS/ios/* $IOS_VERSIONS_PATH/ - -# Install Xamarin.Mac sdks -for version in ${xamarin_mac_versions[@]}; do installXamarinMac $version; done -sudo mv -v $TMPMOUNT_FRAMEWORKS/mac/* $MAC_VERSIONS_PATH/ - -# Install Xamarin.Android sdks -for version in ${xamarin_android_versions[@]}; do installXamarinAndroid $version; done -sudo mv -v $TMPMOUNT_FRAMEWORKS/android/* $ANDROID_VERSIONS_PATH/ - - -# Create bundles -bundles_count=$(get_toolset_value '.xamarin.bundles | length') -for ((bundle_index=0; bundle_index Security & Privacy -> General -# - Unlock security preferences with user password (button 'Click the lock to make changes') -# - Click 'Allow' or 'Details…' button to confirm developers -# - Click 'Not now' button on restarting pop-up -# - Close System Preferences - -on run argv - set userpassword to item 1 of argv - set secpane to "Security & Privacy" - - activate application "System Preferences" - delay 5 - - tell application "System Events" - tell process "System Preferences" - set frontmost to true - delay 2 - click menu item secpane of menu "View" of menu bar 1 - delay 5 - click button 1 of window 1 - delay 5 - keystroke userpassword - delay 5 - keystroke return - delay 5 - click radio button "General" of tab group 1 of window 1 - delay 5 - if exists of UI element "Details…" of tab group 1 of window 1 then - click button "Details…" of tab group 1 of window 1 - delay 5 - keystroke return - delay 5 - keystroke return - delay 5 - end if - if exists of UI element "Allow" of tab group 1 of window 1 then - click button "Allow" of tab group 1 of window 1 - delay 5 - keystroke return - delay 5 - end if - click button 5 of window 1 - end tell - end tell -end run \ No newline at end of file diff --git a/images/macos/scripts/helpers/utils.sh b/images/macos/scripts/helpers/utils.sh index 6dbb23102..df45ad58f 100644 --- a/images/macos/scripts/helpers/utils.sh +++ b/images/macos/scripts/helpers/utils.sh @@ -81,10 +81,6 @@ is_VenturaX64() { is_Ventura && ! is_Arm64 } -is_Monterey() { - [ "$OSTYPE" = "darwin21" ] -} - get_toolset_value() { local toolset_path=$(echo "$IMAGE_FOLDER/toolset.json") local query=$1 diff --git a/images/macos/scripts/helpers/xamarin-utils.sh b/images/macos/scripts/helpers/xamarin-utils.sh deleted file mode 100644 index 20e3b9dc8..000000000 --- a/images/macos/scripts/helpers/xamarin-utils.sh +++ /dev/null @@ -1,215 +0,0 @@ -#!/bin/bash -e -o pipefail - -source ~/utils/utils.sh - -# Xamarin can clean their SDKs while updating to newer versions, -# so we should be able to detect it during image generation - -buildVSMacDownloadUrl() { - echo "https://dl.xamarin.com/VsMac/VisualStudioForMac-${1}.dmg" -} - -buildMonoDownloadUrl() { - echo "https://dl.xamarin.com/MonoFrameworkMDK/Macx86/MonoFramework-MDK-${1}.macos10.xamarin.universal.pkg" -} - -buildXamariniIOSDownloadUrl() { - echo "https://dl.xamarin.com/MonoTouch/Mac/xamarin.ios-${1}.pkg" -} - -buildXamarinMacDownloadUrl() { - echo "https://dl.xamarin.com/XamarinforMac/Mac/xamarin.mac-${1}.pkg" -} - -buildXamarinAndroidDownloadUrl() { - echo "https://dl.xamarin.com/MonoforAndroid/Mac/xamarin.android-${1}.pkg" -} - -installMono() { - local VERSION=$1 - - echo "Installing Mono ${VERSION}..." - local MONO_FOLDER_NAME=$(echo $VERSION | cut -d. -f 1,2,3) - local SHORT_VERSION=$(echo $VERSION | cut -d. -f 1,2) - local PKG_URL=$(buildMonoDownloadUrl $VERSION) - - sudo installer -pkg "$(download_with_retry "$PKG_URL")" -target / - - echo "Installing nunit3-console for Mono "$VERSION - installNunitConsole $MONO_FOLDER_NAME - - echo "Creating short symlink '${SHORT_VERSION}'" - sudo ln -s ${MONO_VERSIONS_PATH}/${MONO_FOLDER_NAME} ${MONO_VERSIONS_PATH}/${SHORT_VERSION} - - echo "Move to backup folder" - sudo mv -v $MONO_VERSIONS_PATH/* $TMPMOUNT_FRAMEWORKS/mono/ -} - -installXamarinIOS() { - local VERSION=$1 - - echo "Installing Xamarin.iOS ${VERSION}..." - local SHORT_VERSION=$(echo $VERSION | cut -d. -f 1,2) - local PKG_URL=$(buildXamariniIOSDownloadUrl $VERSION) - - sudo installer -pkg "$(download_with_retry "$PKG_URL")" -target / - - echo "Creating short symlink '${SHORT_VERSION}'" - sudo ln -s ${IOS_VERSIONS_PATH}/${VERSION} ${IOS_VERSIONS_PATH}/${SHORT_VERSION} - - echo "Move to backup folder" - sudo mv -v $IOS_VERSIONS_PATH/* $TMPMOUNT_FRAMEWORKS/ios/ -} - -installXamarinMac() { - local VERSION=$1 - - echo "Installing Xamarin.Mac ${VERSION}..." - local SHORT_VERSION=$(echo $VERSION | cut -d. -f 1,2) - local PKG_URL=$(buildXamarinMacDownloadUrl $VERSION) - - sudo installer -pkg "$(download_with_retry "$PKG_URL")" -target / - - echo "Creating short symlink '${SHORT_VERSION}'" - sudo ln -s ${MAC_VERSIONS_PATH}/${VERSION} ${MAC_VERSIONS_PATH}/${SHORT_VERSION} - - echo "Move to backup folder" - sudo mv -v $MAC_VERSIONS_PATH/* $TMPMOUNT_FRAMEWORKS/mac/ -} - -installXamarinAndroid() { - local VERSION=$1 - - echo "Installing Xamarin.Android ${VERSION}..." - local SHORT_VERSION=$(echo $VERSION | cut -d. -f 1,2) - local PKG_URL=$(buildXamarinAndroidDownloadUrl $VERSION) - - sudo installer -pkg "$(download_with_retry "$PKG_URL")" -target / - - if [ "$VERSION" == "9.4.1.0" ]; then - # Fix symlinks for broken Xamarin.Android - fixXamarinAndroidSymlinksInLibDir $VERSION - fi - - echo "Creating short symlink '${SHORT_VERSION}'" - sudo ln -s ${ANDROID_VERSIONS_PATH}/${VERSION} ${ANDROID_VERSIONS_PATH}/${SHORT_VERSION} - - echo "Move to backup folder" - sudo mv -v $ANDROID_VERSIONS_PATH/* $TMPMOUNT_FRAMEWORKS/android/ -} - -createBundle() { - local SYMLINK=$1 - local MONO_SDK=$2 - local IOS_SDK=$3 - local MAC_SDK=$4 - local ANDROID_SDK=$5 - - echo "Creating bundle '$SYMLINK' (Mono $MONO_SDK; iOS $IOS_SDK; Mac $MAC_SDK; Android $ANDROID_SDK" - deleteSymlink ${SYMLINK} - sudo ln -s ${MONO_VERSIONS_PATH}/${MONO_SDK} ${MONO_VERSIONS_PATH}/${SYMLINK} - sudo ln -s ${IOS_VERSIONS_PATH}/${IOS_SDK} ${IOS_VERSIONS_PATH}/${SYMLINK} - sudo ln -s ${MAC_VERSIONS_PATH}/${MAC_SDK} ${MAC_VERSIONS_PATH}/${SYMLINK} - sudo ln -s ${ANDROID_VERSIONS_PATH}/${ANDROID_SDK} ${ANDROID_VERSIONS_PATH}/${SYMLINK} -} - -createBundleLink() { - local SOURCE=$1 - local TARGET=$2 - echo "Creating bundle symlink '$SOURCE' -> '$TARGET'" - deleteSymlink ${TARGET} - sudo ln -s ${MONO_VERSIONS_PATH}/$SOURCE ${MONO_VERSIONS_PATH}/$TARGET - sudo ln -s ${IOS_VERSIONS_PATH}/$SOURCE ${IOS_VERSIONS_PATH}/$TARGET - sudo ln -s ${MAC_VERSIONS_PATH}/$SOURCE ${MAC_VERSIONS_PATH}/$TARGET - sudo ln -s ${ANDROID_VERSIONS_PATH}/$SOURCE ${ANDROID_VERSIONS_PATH}/$TARGET -} - -# https://github.com/xamarin/xamarin-android/issues/3457 -# Recreate missing symlinks in lib for new Xamarin.Android package -# Symlink path /Library/Frameworks/Xamarin.Android.framework/Libraries -# xbuild -> xamarin.android/xbuild -# xbuild-frameworks -> xamarin.android/xbuild-frameworks -fixXamarinAndroidSymlinksInLibDir() { - local XAMARIN_ANDROID_VERSION=$1 - local XAMARIN_ANDROID_LIB_PATH="${ANDROID_VERSIONS_PATH}/${XAMARIN_ANDROID_VERSION}/lib" - - if [ -d "${XAMARIN_ANDROID_LIB_PATH}" ]; then - pushd "${XAMARIN_ANDROID_LIB_PATH}" > /dev/null - - local XAMARIN_ANDROID_XBUILD_DIR="${XAMARIN_ANDROID_LIB_PATH}/xbuild" - if [ ! -d "${XAMARIN_ANDROID_XBUILD_DIR}" ]; then - echo "${XAMARIN_ANDROID_XBUILD_DIR}" - sudo ln -sf xamarin.android/xbuild xbuild - fi - - local XAMARIN_ANDROID_XBUILD_FRAMEWORKS_DIR="${XAMARIN_ANDROID_LIB_PATH}/xbuild-frameworks" - if [ ! -d "${XAMARIN_ANDROID_XBUILD_FRAMEWORKS_DIR}" ]; then - echo "${XAMARIN_ANDROID_XBUILD_FRAMEWORKS_DIR}" - sudo ln -sf xamarin.android/xbuild-frameworks xbuild-frameworks - fi - - popd > /dev/null - fi -} - -installNunitConsole() { - local MONO_VERSION=$1 - local TMP_WRAPPER_PATH=$(mktemp) - - cat < "$TMP_WRAPPER_PATH" -#!/bin/bash -e -o pipefail -exec /Library/Frameworks/Mono.framework/Versions/${MONO_VERSION}/bin/mono --debug \$MONO_OPTIONS $NUNIT3_PATH/nunit3-console.exe "\$@" -EOF - sudo chmod +x $TMP_WRAPPER_PATH - sudo mv "$TMP_WRAPPER_PATH" "${MONO_VERSIONS_PATH}/${MONO_VERSION}/Commands/nunit3-console" -} - -downloadNUnitConsole() { - echo "Downloading NUnit 3..." - local NUNIT3_VERSION='3.6.1' - local NUNIT3_LOCATION="https://github.com/nunit/nunit-console/releases/download/${NUNIT3_VERSION}/NUnit.Console-${NUNIT3_VERSION}.zip" - local NUNIT3_PATH="/Library/Developer/nunit/${NUNIT3_VERSION}" - - NUNIT3_ARCHIVE=$(download_with_retry $NUNIT3_LOCATION) - - echo "Installing NUnit 3..." - sudo mkdir -p $NUNIT3_PATH - sudo unzip "$NUNIT3_ARCHIVE" -d $NUNIT3_PATH -} - -createUWPShim() { - echo "Creating UWP Shim to hack UWP build failure..." - cat < ${TMPMOUNT}/Microsoft.Windows.UI.Xaml.CSharp.Targets - - - - -EOF - - local UWPTARGET_PATH=/Library/Frameworks/Mono.framework/External/xbuild/Microsoft/WindowsXaml - - sudo mkdir -p $UWPTARGET_PATH/v11.0/ - sudo cp ${TMPMOUNT}/Microsoft.Windows.UI.Xaml.CSharp.Targets $UWPTARGET_PATH/v11.0/ - sudo mkdir -p $UWPTARGET_PATH/v12.0/ - sudo cp ${TMPMOUNT}/Microsoft.Windows.UI.Xaml.CSharp.Targets $UWPTARGET_PATH/v12.0/ - sudo mkdir -p $UWPTARGET_PATH/v14.0/ - sudo cp ${TMPMOUNT}/Microsoft.Windows.UI.Xaml.CSharp.Targets $UWPTARGET_PATH/v14.0/ - sudo mkdir -p $UWPTARGET_PATH/v15.0/ - sudo cp ${TMPMOUNT}/Microsoft.Windows.UI.Xaml.CSharp.Targets $UWPTARGET_PATH/v15.0/ - sudo mkdir -p $UWPTARGET_PATH/v16.0/ - sudo cp ${TMPMOUNT}/Microsoft.Windows.UI.Xaml.CSharp.Targets $UWPTARGET_PATH/v16.0/ -} - -createBackupFolders() { - mkdir -p $TMPMOUNT_FRAMEWORKS/mono - mkdir -p $TMPMOUNT_FRAMEWORKS/ios - mkdir -p $TMPMOUNT_FRAMEWORKS/mac - mkdir -p $TMPMOUNT_FRAMEWORKS/android -} - -deleteSymlink() { - sudo rm -f ${MONO_VERSIONS_PATH}/${1} - sudo rm -f ${IOS_VERSIONS_PATH}/${1} - sudo rm -f ${MAC_VERSIONS_PATH}/${1} - sudo rm -f ${ANDROID_VERSIONS_PATH}/${1} -} diff --git a/images/macos/scripts/tests/Android.Tests.ps1 b/images/macos/scripts/tests/Android.Tests.ps1 index 654a05e37..766dfd8a7 100644 --- a/images/macos/scripts/tests/Android.Tests.ps1 +++ b/images/macos/scripts/tests/Android.Tests.ps1 @@ -57,14 +57,6 @@ Describe "Android" { Sdkmanager = "$env:ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" } ) - if ($os.IsMonterey) { - $testCases += @( - @{ - PackageName = "SDK tools" - Sdkmanager = "$env:ANDROID_HOME/tools/bin/sdkmanager" - } - ) - } It "Sdkmanager from is available" -TestCases $testCases { "$Sdkmanager --version" | Should -ReturnZeroExitCode diff --git a/images/macos/scripts/tests/BasicTools.Tests.ps1 b/images/macos/scripts/tests/BasicTools.Tests.ps1 index 53942da4d..fd7613134 100644 --- a/images/macos/scripts/tests/BasicTools.Tests.ps1 +++ b/images/macos/scripts/tests/BasicTools.Tests.ps1 @@ -26,12 +26,6 @@ Describe "cmake" { } } -Describe "Subversion" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "Subversion" { - "svn --version" | Should -ReturnZeroExitCode - } -} - Describe "SwiftFormat" { It "SwiftFormat" { "swiftformat --version" | Should -ReturnZeroExitCode @@ -87,7 +81,7 @@ Describe "7-Zip" { } } -Describe "Apache Ant" -Skip:($os.IsMonterey) { +Describe "Apache Ant" { It "Apache Ant" { "ant -version" | Should -ReturnZeroExitCode } @@ -111,12 +105,6 @@ Describe "bazel" { } } -Describe "Julia" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "Julia" { - "julia --version" | Should -ReturnZeroExitCode - } -} - Describe "jq" { It "jq" { "jq --version" | Should -ReturnZeroExitCode @@ -135,31 +123,13 @@ Describe "wget" { } } -Describe "vagrant" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "vagrant" { - "vagrant --version" | Should -ReturnZeroExitCode - } -} - -Describe "virtualbox" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "virtualbox" { - "vboxmanage -v" | Should -ReturnZeroExitCode - } -} - -Describe "R" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "R" { - "R --version" | Should -ReturnZeroExitCode - } -} - Describe "Homebrew" { It "Homebrew" { "brew --version" | Should -ReturnZeroExitCode } } -Describe "Kotlin" -Skip:($os.IsMonterey) { +Describe "Kotlin" { $kotlinPackages = @("kapt", "kotlin", "kotlinc", "kotlinc-jvm", "kotlinc-js") It " is available" -TestCases ($kotlinPackages | ForEach-Object { @{ toolName = $_ } }) { @@ -173,12 +143,6 @@ Describe "yq" { } } -Describe "imagemagick" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "imagemagick" { - "magick -version" | Should -ReturnZeroExitCode - } -} - Describe "pkgconf" { It "pkgconf" { "pkgconf --version" | Should -ReturnZeroExitCode diff --git a/images/macos/scripts/tests/Common.Tests.ps1 b/images/macos/scripts/tests/Common.Tests.ps1 index 4d6ebf8e2..8e6be12f5 100644 --- a/images/macos/scripts/tests/Common.Tests.ps1 +++ b/images/macos/scripts/tests/Common.Tests.ps1 @@ -58,77 +58,18 @@ Describe "AzCopy" { } } -Describe "Miniconda" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "Conda" { - [System.Environment]::GetEnvironmentVariable("CONDA") | Should -Not -BeNullOrEmpty - $condaBinPath = Join-Path $env:CONDA "bin" "conda" - "$condaBinPath --version" | Should -ReturnZeroExitCode - } -} - -Describe "Stack" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "Stack" { - "stack --version" | Should -ReturnZeroExitCode - } -} - Describe "CocoaPods" { It "CocoaPods" { "pod --version" | Should -ReturnZeroExitCode } } -Describe "VSMac" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - $vsMacVersions = (Get-ToolsetContent).xamarin.vsmac.versions - $defaultVSMacVersion = (Get-ToolsetContent).xamarin.vsmac.default - - $testCases = $vsMacVersions | ForEach-Object { - $vsPath = "/Applications/Visual Studio $_.app" - if ($_ -eq $defaultVSMacVersion) { - $vsPath = "/Applications/Visual Studio.app" - } - - @{ vsversion = $_ ; vspath = $vsPath } - } - - It "Visual Studio for Mac is installed" -TestCases $testCases { - $vstoolPath = Join-Path $vsPath "Contents/MacOS/vstool" - $vsPath | Should -Exist - $vstoolPath | Should -Exist - } - - It "Visual Studio $defaultVSMacVersion for Mac is default" { - $vsPath = "/Applications/Visual Studio.app" - $vstoolPath = Join-Path $vsPath "Contents/MacOS/vstool" - $vsPath | Should -Exist - $vstoolPath | Should -Exist - } -} - -Describe "Swig" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "Swig" { - "swig -version" | Should -ReturnZeroExitCode - } -} - Describe "Bicep" { It "Bicep" { "bicep --version" | Should -ReturnZeroExitCode } } -Describe "Go" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "Go" { - "go version" | Should -ReturnZeroExitCode - } -} - -Describe "VirtualBox" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "Check kext kernel modules" { - kextstat | Out-String | Should -Match "org.virtualbox.kext" - } -} - Describe "CodeQL Bundle" { It "Is installed" { $CodeQLVersionWildcard = Join-Path $Env:AGENT_TOOLSDIRECTORY -ChildPath "CodeQL" | Join-Path -ChildPath "*" @@ -141,28 +82,6 @@ Describe "CodeQL Bundle" { } } -Describe "Colima" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "Colima" { - "colima version" | Should -ReturnZeroExitCode - } -} - -Describe "Compiled" -Skip:(-not $os.IsMonterey) { - It "Apache Ant" { - "ant -version" | Should -ReturnZeroExitCode - } - - $kotlinPackages = @("kapt", "kotlin", "kotlinc", "kotlinc-jvm", "kotlin-dce-js") - - It " is available" -TestCases ($kotlinPackages | ForEach-Object { @{ toolName = $_ } }) { - "$toolName -version" | Should -ReturnZeroExitCode - } - - It "sbt" { - "sbt -version" | Should -ReturnZeroExitCode - } -} - Describe "Unxip" { It "Unxip" { "unxip --version" | Should -ReturnZeroExitCode diff --git a/images/macos/scripts/tests/Haskell.Tests.ps1 b/images/macos/scripts/tests/Haskell.Tests.ps1 deleted file mode 100644 index c4ff72992..000000000 --- a/images/macos/scripts/tests/Haskell.Tests.ps1 +++ /dev/null @@ -1,30 +0,0 @@ -Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1" - -$os = Get-OSVersion - -Describe "Haskell" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - Context "GHCup" { - It "GHCup" { - "ghcup --version" | Should -ReturnZeroExitCode - } - } - Context "GHC" { - It "GHC" { - "ghc --version" | Should -ReturnZeroExitCode - } - } - Context "Cabal" { - It "Cabal" { - "cabal --version" | Should -ReturnZeroExitCode - } - } - Context "Stack" { - It "Stack" { - "stack --version" | Should -ReturnZeroExitCode - } - - It "Stack hook is not installed" { - "$HOME/.stack/hooks/ghc-install.sh" | Should -Not -Exist - } - } -} diff --git a/images/macos/scripts/tests/Mono.Tests.ps1 b/images/macos/scripts/tests/Mono.Tests.ps1 new file mode 100644 index 000000000..5d2822306 --- /dev/null +++ b/images/macos/scripts/tests/Mono.Tests.ps1 @@ -0,0 +1,74 @@ +Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1" +Import-Module "$PSScriptRoot/Helpers.psm1" -DisableNameChecking + +$os = Get-OSVersion + +BeforeAll { + function Get-ShortSymlink { + param ( + [string] $Version + ) + + $versionParts = $Version.Split(".") + return [String]::Join(".", $versionParts[0..1]) + } +} + +Describe "Mono" -Skip:($os.IsSequoia) { + $MONO_VERSIONS_PATH = "/Library/Frameworks/Mono.framework/Versions" + $monoToolsetVersion = @((Get-ToolsetContent).mono.framework.version) + $versionFolderPath = Join-Path $MONO_VERSIONS_PATH ([System.Version]::Parse($monoToolsetVersion).ToString(3)) + $testCase = @{ MonoVersion = $monoToolsetVersion; VersionFolderPath = $versionFolderPath; MonoVersionsPath = $MONO_VERSIONS_PATH } + + It "is installed" -TestCases $testCase { + param ( [string] $VersionFolderPath ) + + $monoBinPath = Join-Path $VersionFolderPath "bin" "mono" + $VersionFolderPath | Should -Exist + $monoBinPath | Should -Exist + } + + It "is available via short link" -TestCases $testCase { + param ( + [string] $MonoVersion, + [string] $MonoVersionsPath, + [string] $VersionFolderPath + ) + + $shortSymlink = Get-ShortSymlink $MonoVersion # only 'major.minor' + $shortSymlinkFolderPath = Join-Path $MonoVersionsPath $shortSymlink + if ($shortSymlink -eq "4.8") { return } # Skip this test for Mono 4.8 because it doesn't contain VERSION file + $shortVersionPath = Join-Path $shortSymlinkFolderPath "VERSION" + $fullVersionPath = Join-Path $VersionFolderPath "VERSION" + Confirm-IdenticalFileContent -File1 $shortVersionPath -File2 $fullVersionPath + } + + It "NUnit console is installed" -TestCases $testCase { + param ( [string] $VersionFolderPath ) + + $nunitPath = Join-Path $VersionFolderPath "Commands" "nunit3-console" + $nunitPath | Should -Exist + } + + It "Nuget is installed" -TestCases $testCase { + param ( [string] $VersionFolderPath ) + + $nugetBinaryPath = Join-Path $VersionFolderPath "lib" "mono" "nuget" "nuget.exe" + $nugetBinaryWrapperPath = Join-Path $VersionFolderPath "bin" "nuget" + $nugetCommandPath = Join-Path $VersionFolderPath "Commands" "nuget" + $nugetBinaryPath | Should -Exist + $nugetCommandPath | Should -Exist + $nugetBinaryWrapperPath | Should -Exist + } + + It "Nuget is valid" -TestCases $testCase { + param ( [string] $VersionFolderPath ) + + $nugetBinaryWrapperPath = Join-Path $VersionFolderPath "bin" "nuget" + "$nugetBinaryWrapperPath" | Should -ReturnZeroExitCode + } + + It "MSBuild is available" { + "msbuild -version" | Should -ReturnZeroExitCode + } +} diff --git a/images/macos/scripts/tests/PipxPackages.Tests.ps1 b/images/macos/scripts/tests/PipxPackages.Tests.ps1 deleted file mode 100644 index 8a7cb0dcb..000000000 --- a/images/macos/scripts/tests/PipxPackages.Tests.ps1 +++ /dev/null @@ -1,12 +0,0 @@ - -Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1" - -$os = Get-OSVersion - -Describe "PipxPackages" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - $pipxToolset = (Get-ToolsetContent).pipx - $testCases = $pipxToolset | ForEach-Object { @{package = $_.package; cmd = $_.cmd} } - It "" -TestCases $testCases { - "$cmd" | Should -ReturnZeroExitCode - } -} diff --git a/images/macos/scripts/tests/Toolset.Tests.ps1 b/images/macos/scripts/tests/Toolset.Tests.ps1 index f2aa3cd7a..b4afae7e0 100644 --- a/images/macos/scripts/tests/Toolset.Tests.ps1 +++ b/images/macos/scripts/tests/Toolset.Tests.ps1 @@ -6,11 +6,6 @@ function Get-ShortVersion([System.Version] $Version) { return [System.Version]::Parse($Version).ToString(2) } -function Invoke-BashUtilsFunction([string] $FunctionName, [string]$parameter) { - $xamarinUtilsPath = "$PSScriptRoot/../provision/utils/xamarin-utils.sh" - return Invoke-Expression "bash -c `"source $xamarinUtilsPath && $FunctionName $parameter`"" -} - Describe "Toolset JSON validation" { $toolsets | ForEach-Object { It "$($_.Name) is valid" { @@ -33,109 +28,5 @@ $toolsets | ForEach-Object { $toolset.xcode.versions | Should -Contain $toolset.xcode.default } } - - Context "VSMac" { - $vsmacVersion = $toolset.xamarin.vsmac - - It "Version '$vsmacVersion' is available and can be downloaded" { - $vsmacUrl = Invoke-BashUtilsFunction("buildVSMacDownloadUrl", $vsmacVersion) - Confirm-UrlAvailability $vsmacUrl - } - } - - Context "Mono" { - $sdkVersions = $toolset.xamarin.mono_versions - - $sdkVersions | ForEach-Object { - It "Version '$_' is available and can be downloaded" { - $sdkUrl = Invoke-BashUtilsFunction("buildMonoDownloadUrl", $_) - Confirm-UrlAvailability $sdkUrl - } - } - - It "Version list doesn't contain versions with the same major/minor version" { - $versions = $sdkVersions | ForEach-Object { Get-ShortVersion $_ } - Confirm-ArrayWithoutDuplicates $versions -Because "It doesn't allow to install more than one version with the same major/minor" - } - } - - Context "Xamarin.iOS" { - $sdkVersions = $toolset.xamarin.ios_versions - - $sdkVersions | ForEach-Object { - It "Version '$_' is available and can be downloaded" { - $sdkUrl = Invoke-BashUtilsFunction("buildXamariniIOSDownloadUrl", $_) - Confirm-UrlAvailability $sdkUrl - } - } - - It "Version list doesn't contain versions with the same major/minor version" { - $versions = $sdkVersions | ForEach-Object { Get-ShortVersion $_ } - Confirm-ArrayWithoutDuplicates $versions -Because "It doesn't allow to install more than one version with the same major/minor" - } - } - - Context "Xamarin.Mac" { - $sdkVersions = $toolset.xamarin.mac_versions - - $sdkVersions | ForEach-Object { - It "Version '$_' is available and can be downloaded" { - $sdkUrl = Invoke-BashUtilsFunction("buildXamarinMacDownloadUrl", $_) - Confirm-UrlAvailability $sdkUrl - } - } - - It "Version list doesn't contain versions with the same major/minor version" { - $versions = $sdkVersions | ForEach-Object { Get-ShortVersion $_ } - Confirm-ArrayWithoutDuplicates $versions -Because "It doesn't allow to install more than one version with the same major/minor" - } - } - - Context "Xamarin.Android" { - $sdkVersions = $toolset.xamarin.android_versions - - $sdkVersions | ForEach-Object { - It "Version '$_' is available and can be downloaded" { - $sdkUrl = Invoke-BashUtilsFunction("buildXamarinAndroidDownloadUrl", $_) - Confirm-UrlAvailability $sdkUrl - } - } - - It "Version list doesn't contain versions with the same major/minor version" { - $versions = $sdkVersions | ForEach-Object { $_.Replace("-", ".") } | ForEach-Object { Get-ShortVersion $_ } - Confirm-ArrayWithoutDuplicates $versions -Because "It doesn't allow to install more than one version with the same major/minor" - } - } - - Context "Xamarin bundles" { - $monoVersions = $toolset.xamarin.mono_versions | ForEach-Object { Get-ShortVersion $_ } - $iOSVersions = $toolset.xamarin.ios_versions | ForEach-Object { Get-ShortVersion $_ } - $macVersions = $toolset.xamarin.mac_versions | ForEach-Object { Get-ShortVersion $_ } - # Old Xamarin.Android version looks like "9.0.0-18" that doesn't support by System.Version - $androidVersions = $toolset.xamarin.android_versions | ForEach-Object { Get-ShortVersion $_.Replace("-", ".") } - $bundles = $toolset.xamarin.bundles - - $bundles | ForEach-Object { - It "'$($_.symlink)' is valid" { - $monoVersions | Should -Contain $_.mono - $iOSVersions | Should -Contain $_.ios - $macVersions | Should -Contain $_.mac - $androidVersions | Should -Contain $_.android - } - } - - It "Each bundle has unique symlink" { - $symlinks = $bundles | ForEach-Object { $_.symlink } - Confirm-ArrayWithoutDuplicates $symlinks -Because "Bundle symlinks should be unique" - } - - It "Current bundle is valid" { - $currentBundleSymlink = $toolset.xamarin.bundle_default - if ($currentBundleSymlink -ne "latest") { - $bundleSymlinks = $bundles | ForEach-Object { $_.symlink } - $bundleSymlinks | Should -Contain $currentBundleSymlink -Because "Current bundle should be installed" - } - } - } } } diff --git a/images/macos/scripts/tests/WebServers.Tests.ps1 b/images/macos/scripts/tests/WebServers.Tests.ps1 deleted file mode 100644 index 303fa3842..000000000 --- a/images/macos/scripts/tests/WebServers.Tests.ps1 +++ /dev/null @@ -1,25 +0,0 @@ -Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1" - -$os = Get-OSVersion - -Describe "Apache" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "Apache CLI" { - "httpd -v" | Should -ReturnZeroExitCode - } - - It "Apache Service" { - $service = brew services list --json | ConvertFrom-Json | Where-Object { $_.name -eq "httpd" } - $service.status | Should -Match "(stopped|none)" - } -} - -Describe "Nginx" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "Nginx CLI" { - "nginx -v" | Should -ReturnZeroExitCode - } - - It "Nginx Service" { - $service = brew services list --json | ConvertFrom-Json | Where-Object { $_.name -eq "nginx" } - $service.status | Should -Match "(stopped|none)" - } -} diff --git a/images/macos/scripts/tests/Xamarin.Tests.ps1 b/images/macos/scripts/tests/Xamarin.Tests.ps1 deleted file mode 100644 index a09f87f13..000000000 --- a/images/macos/scripts/tests/Xamarin.Tests.ps1 +++ /dev/null @@ -1,317 +0,0 @@ -Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1" -Import-Module "$PSScriptRoot/Helpers.psm1" -DisableNameChecking - -$os = Get-OSVersion - -if ($os.IsVentura -or $os.IsSonoma) { - $MONO_VERSIONS = @((Get-ToolsetContent).mono.framework.version) - $XAMARIN_IOS_VERSIONS = @() - $XAMARIN_MAC_VERSIONS = @() - $XAMARIN_ANDROID_VERSIONS = @() -} elseif ($os.IsMonterey) { - $MONO_VERSIONS = (Get-ToolsetContent).xamarin.mono_versions - $XAMARIN_IOS_VERSIONS = (Get-ToolsetContent).xamarin.ios_versions - $XAMARIN_MAC_VERSIONS = (Get-ToolsetContent).xamarin.mac_versions - $XAMARIN_ANDROID_VERSIONS = (Get-ToolsetContent).xamarin.android_versions -} elseif ($os.IsSequoia) { - Write-Host "Skipping all the Mono and Xamarin tests as deprecated" - # Dummy workaround for the issue with the tests discovery - $MONO_VERSIONS = @() - $XAMARIN_IOS_VERSIONS = @() - $XAMARIN_MAC_VERSIONS = @() - $XAMARIN_ANDROID_VERSIONS = @() -} - -BeforeAll { - function Get-ShortSymlink { - param ( - [string] $Version - ) - - $versionParts = $Version.Split(".") - return [String]::Join(".", $versionParts[0..1]) - } -} - -Describe "Mono" -Skip:($os.IsSequoia) { - $MONO_VERSIONS | ForEach-Object { - Context "$_" { - $MONO_VERSIONS_PATH = "/Library/Frameworks/Mono.framework/Versions" - $versionFolderPath = Join-Path $MONO_VERSIONS_PATH ([System.Version]::Parse($_).ToString(3)) - $testCase = @{ MonoVersion = $_; VersionFolderPath = $versionFolderPath; MonoVersionsPath = $MONO_VERSIONS_PATH } - - It "is installed" -TestCases $testCase { - param ( [string] $VersionFolderPath ) - - $monoBinPath = Join-Path $VersionFolderPath "bin" "mono" - $VersionFolderPath | Should -Exist - $monoBinPath | Should -Exist - } - - It "is available via short link" -TestCases $testCase { - param ( - [string] $MonoVersion, - [string] $MonoVersionsPath, - [string] $VersionFolderPath - ) - - $shortSymlink = Get-ShortSymlink $MonoVersion # only 'major.minor' - $shortSymlinkFolderPath = Join-Path $MonoVersionsPath $shortSymlink - if ($shortSymlink -eq "4.8") { return } # Skip this test for Mono 4.8 because it doesn't contain VERSION file - $shortVersionPath = Join-Path $shortSymlinkFolderPath "VERSION" - $fullVersionPath = Join-Path $VersionFolderPath "VERSION" - - Confirm-IdenticalFileContent -File1 $shortVersionPath -File2 $fullVersionPath - } - - It "NUnit console is installed" -TestCases $testCase { - param ( [string] $VersionFolderPath ) - - $nunitPath = Join-Path $VersionFolderPath "Commands" "nunit3-console" - $nunitPath | Should -Exist - } - - It "Nuget is installed" -TestCases $testCase { - param ( [string] $VersionFolderPath ) - - $nugetBinaryPath = Join-Path $VersionFolderPath "lib" "mono" "nuget" "nuget.exe" - $nugetBinaryWrapperPath = Join-Path $VersionFolderPath "bin" "nuget" - $nugetCommandPath = Join-Path $VersionFolderPath "Commands" "nuget" - - $nugetBinaryPath | Should -Exist - $nugetCommandPath | Should -Exist - $nugetBinaryWrapperPath | Should -Exist - } - - It "Nuget is valid" -TestCases $testCase { - param ( [string] $VersionFolderPath ) - - $nugetBinaryWrapperPath = Join-Path $VersionFolderPath "bin" "nuget" - "$nugetBinaryWrapperPath" | Should -ReturnZeroExitCode - } - } - } - - It "MSBuild is available" { - "msbuild -version" | Should -ReturnZeroExitCode - } -} - -Describe "Xamarin.iOS" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - $XAMARIN_IOS_VERSIONS | ForEach-Object { - Context "$_" { - $XAMARIN_IOS_VERSIONS_PATH = "/Library/Frameworks/Xamarin.iOS.framework/Versions" - $versionFolderPath = Join-Path $XAMARIN_IOS_VERSIONS_PATH $_ - $testCase = @{ XamarinIosVersion = $_; VersionFolderPath = $versionFolderPath; IosVersionsPath = $XAMARIN_IOS_VERSIONS_PATH } - - It "is installed" -TestCases $testCase { - param ( [string] $VersionFolderPath ) - - $xamarinBinPath = Join-Path $VersionFolderPath "bin" - $VersionFolderPath | Should -Exist - $xamarinBinPath | Should -Exist - } - - It "is available via short link" -TestCases $testCase { - param ( - [string] $XamarinIosVersion, - [string] $IosVersionsPath, - [string] $VersionFolderPath - ) - - $shortSymlink = Get-ShortSymlink $XamarinIosVersion # only 'major.minor' - $shortSymlinkFolderPath = Join-Path $IosVersionsPath $shortSymlink - $shortVersionPath = Join-Path $shortSymlinkFolderPath "VERSION" - $fullVersionPath = Join-Path $VersionFolderPath "VERSION" - - Confirm-IdenticalFileContent -File1 $shortVersionPath -File2 $fullVersionPath - } - } - } -} - -Describe "Xamarin.Mac" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - $XAMARIN_MAC_VERSIONS | ForEach-Object { - Context "$_" { - $XAMARIN_MAC_VERSIONS_PATH = "/Library/Frameworks/Xamarin.Mac.framework/Versions" - $versionFolderPath = Join-Path $XAMARIN_MAC_VERSIONS_PATH $_ - $testCase = @{ XamarinMacVersion = $_; VersionFolderPath = $versionFolderPath; MacVersionsPath = $XAMARIN_MAC_VERSIONS_PATH } - - It "is installed" -TestCases $testCase { - param ( [string] $VersionFolderPath ) - - $xamarinBinPath = Join-Path $VersionFolderPath "bin" - $VersionFolderPath | Should -Exist - $xamarinBinPath | Should -Exist - } - - It "is available via short link" -TestCases $testCase { - param ( - [string] $XamarinMacVersion, - [string] $MacVersionsPath, - [string] $VersionFolderPath - ) - - $shortSymlink = Get-ShortSymlink $XamarinMacVersion # only 'major.minor' - $shortSymlinkFolderPath = Join-Path $MacVersionsPath $shortSymlink - $shortVersionPath = Join-Path $shortSymlinkFolderPath "VERSION" - $fullVersionPath = Join-Path $VersionFolderPath "VERSION" - - Confirm-IdenticalFileContent -File1 $shortVersionPath -File2 $fullVersionPath - } - } - } -} - -Describe "Xamarin.Android" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - $XAMARIN_ANDROID_VERSIONS | ForEach-Object { - Context "$_" { - $XAMARIN_ANDROID_VERSIONS_PATH = "/Library/Frameworks/Xamarin.Android.framework/Versions" - $versionFolderPath = Join-Path $XAMARIN_ANDROID_VERSIONS_PATH $_ - $testCase = @{ XamarinAndroidVersion = $_; VersionFolderPath = $versionFolderPath; AndroidVersionsPath = $XAMARIN_ANDROID_VERSIONS_PATH } - - It "is installed" -TestCases $testCase { - param ( [string] $VersionFolderPath ) - - $xamarinLibPath = Join-Path $VersionFolderPath "lib" - $xamarinLibPath | Should -Exist - } - - It "is available via short link" -TestCases $testCase { - param ( - [string] $XamarinAndroidVersion, - [string] $AndroidVersionsPath, - [string] $VersionFolderPath - ) - - $shortSymlink = Get-ShortSymlink $XamarinAndroidVersion # only 'major.minor' - $shortSymlinkFolderPath = Join-Path $AndroidVersionsPath $shortSymlink - $shortVersionPath = Join-Path $shortSymlinkFolderPath "VERSION" - $fullVersionPath = Join-Path $VersionFolderPath "VERSION" - - Confirm-IdenticalFileContent -File1 $shortVersionPath -File2 $fullVersionPath - } - - It "has correct symlinks" -TestCases $testCase { - param ( [string] $VersionFolderPath ) - - $xamarinLibPath = Join-Path $VersionFolderPath "lib" - Join-Path $xamarinLibPath "xbuild" | Should -Exist - Join-Path $xamarinLibPath "xbuild-frameworks" | Should -Exist - } - } - } -} - -Describe "Xamarin Bundles" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - BeforeAll { - $MONO_VERSIONS_PATH = "/Library/Frameworks/Mono.framework/Versions" - $XAMARIN_IOS_VERSIONS_PATH = "/Library/Frameworks/Xamarin.iOS.framework/Versions" - $XAMARIN_MAC_VERSIONS_PATH = "/Library/Frameworks/Xamarin.Mac.framework/Versions" - $XAMARIN_ANDROID_VERSIONS_PATH = "/Library/Frameworks/Xamarin.Android.framework/Versions" - } - - If ($XAMARIN_BUNDLES.Count -eq 0) { return } # Skip this test if there are no bundles - - [array]$XAMARIN_BUNDLES = (Get-ToolsetContent).xamarin.bundles - $XAMARIN_DEFAULT_BUNDLE = (Get-ToolsetContent).xamarin.bundle_default - If ($XAMARIN_DEFAULT_BUNDLE -eq "latest") { $XAMARIN_DEFAULT_BUNDLE = $XAMARIN_BUNDLES[0].symlink } - - $currentBundle = [PSCustomObject] @{ - symlink = "Current" - mono = $XAMARIN_DEFAULT_BUNDLE - ios = $XAMARIN_DEFAULT_BUNDLE - mac = $XAMARIN_DEFAULT_BUNDLE - android = $XAMARIN_DEFAULT_BUNDLE - } - - $latestBundle = [PSCustomObject] @{ - symlink = "Latest" - mono = $XAMARIN_BUNDLES[0].mono - ios = $XAMARIN_BUNDLES[0].ios - mac = $XAMARIN_BUNDLES[0].mac - android = $XAMARIN_BUNDLES[0].android - } - - $bundles = $XAMARIN_BUNDLES + $currentBundle + $latestBundle - $allBundles = $bundles | ForEach-Object { @{BundleSymlink = $_.symlink; BundleMono = $_.mono; BundleIos = $_.ios; BundleMac = $_.mac; BundleAndroid = $_.android } } - - It "Mono symlink exists" -TestCases $allBundles { - param ( [string] $BundleSymlink ) - - (Join-Path $MONO_VERSIONS_PATH $BundleSymlink) | Should -Exist - } - - It "Mono symlink points to the correct version" -TestCases $allBundles { - param ( - [string] $BundleSymlink, - [string] $BundleMono - ) - - if ($BundleMono -eq "4.8") { return } # Skip this test for Mono 4.8 because it doesn't contain VERSION file - $sourceVersionPath = Join-Path $MONO_VERSIONS_PATH $BundleMono "VERSION" - $targetVersionPath = Join-Path $MONO_VERSIONS_PATH $BundleSymlink "VERSION" - - Confirm-IdenticalFileContent -File1 $targetVersionPath -File2 $sourceVersionPath - } - - It "iOS symlink exists" -TestCases $allBundles { - param ( [string] $BundleSymlink ) - - (Join-Path $XAMARIN_IOS_VERSIONS_PATH $BundleSymlink) | Should -Exist - } - - It "iOS symlink points to the correct version" -TestCases $allBundles { - param ( - [string] $BundleSymlink, - [string] $BundleIos - ) - - $sourceVersionPath = Join-Path $XAMARIN_IOS_VERSIONS_PATH $BundleIos "VERSION" - $targetVersionPath = Join-Path $XAMARIN_IOS_VERSIONS_PATH $BundleSymlink "VERSION" - - Confirm-IdenticalFileContent -File1 $targetVersionPath -File2 $sourceVersionPath - } - - It "Mac symlink exists" -TestCases $allBundles { - param ( [string] $BundleSymlink ) - - (Join-Path $XAMARIN_MAC_VERSIONS_PATH $BundleSymlink) | Should -Exist - } - - It "Mac symlink points to the correct version" -TestCases $allBundles { - param ( - [string] $BundleSymlink, - [string] $BundleMac - ) - - $sourceVersionPath = Join-Path $XAMARIN_MAC_VERSIONS_PATH $BundleMac "VERSION" - $targetVersionPath = Join-Path $XAMARIN_MAC_VERSIONS_PATH $BundleSymlink "VERSION" - - Confirm-IdenticalFileContent -File1 $targetVersionPath -File2 $sourceVersionPath - } - - It "Xamarin.Android symlink exists" -TestCases $allBundles { - param ( [string] $BundleSymlink ) - - (Join-Path $XAMARIN_ANDROID_VERSIONS_PATH $BundleSymlink) | Should -Exist - } - - It "Android symlink points to the correct version" -TestCases $allBundles { - param ( - [string] $BundleSymlink, - [string] $BundleAndroid - ) - - $sourceVersionPath = Join-Path $XAMARIN_ANDROID_VERSIONS_PATH $BundleAndroid "VERSION" - $targetVersionPath = Join-Path $XAMARIN_ANDROID_VERSIONS_PATH $BundleSymlink "VERSION" - - Confirm-IdenticalFileContent -File1 $targetVersionPath -File2 $sourceVersionPath - } -} - -Describe "Nuget" -Skip:($os.IsVentura -or $os.IsSonoma -or $os.IsSequoia) { - It "Nuget config contains nuget.org feed" { - Get-Content $env:HOME/.config/NuGet/NuGet.Config | Out-String | Should -Match "nuget.org" - } -} diff --git a/images/macos/scripts/tests/Xcode.Tests.ps1 b/images/macos/scripts/tests/Xcode.Tests.ps1 index 4489b9ab3..f56fe806d 100644 --- a/images/macos/scripts/tests/Xcode.Tests.ps1 +++ b/images/macos/scripts/tests/Xcode.Tests.ps1 @@ -122,20 +122,3 @@ Describe "Xcode simulators" { Switch-Xcode -Version $defaultXcode } } - -Describe "Xcode Simulators Naming" -Skip:(-not $os.IsMonterey) { - $testCases = Get-BrokenXcodeSimulatorsList - It "Simulator ' []'" -TestCases $testCases { - $simctlPath = Get-XcodeToolPath -Version $XcodeVersion -ToolName "simctl" - [string]$rawDevicesInfo = Invoke-Expression "$simctlPath list devices --json" - $jsonDevicesInfo = ($rawDevicesInfo | ConvertFrom-Json).devices - - $foundSimulators = $jsonDevicesInfo.$RuntimeId | Where-Object { $_.deviceTypeIdentifier -eq $DeviceId } - $foundSimulators | Should -HaveCount 1 - $foundSimulators[0].name | Should -Be $SimulatorName - - $foundSimulators = $jsonDevicesInfo.$RuntimeId | Where-Object { $_.name -eq $SimulatorName } - $foundSimulators | Should -HaveCount 1 - $foundSimulators[0].deviceTypeIdentifier | Should -Be $DeviceId - } -} diff --git a/images/macos/templates/macOS-12.anka.pkr.hcl b/images/macos/templates/macOS-12.anka.pkr.hcl deleted file mode 100644 index 398623bbd..000000000 --- a/images/macos/templates/macOS-12.anka.pkr.hcl +++ /dev/null @@ -1,315 +0,0 @@ -packer { - required_plugins { - veertu-anka = { - version = ">= v3.2.0" - source = "github.com/veertuinc/veertu-anka" - } - } -} - -locals { - image_folder = "/Users/${var.vm_username}/image-generation" -} - -variable "builder_type" { - type = string - default = "veertu-anka-vm-clone" - validation { - condition = contains(["veertu-anka-vm-clone", "null"], var.builder_type) - error_message = "The builder_type value must be one of [veertu-anka-vm-clone, null]." - } -} - -variable "source_vm_name" { - type = string -} - -variable "source_vm_port" { - type = number - default = 22 -} - -variable "source_vm_tag" { - type = string - default = "" -} - -variable "socks_proxy" { - type = string - default = "" -} - -variable "build_id" { - type = string -} - -variable "vm_username" { - type = string - sensitive = true -} - -variable "vm_password" { - type = string - sensitive = true -} - -variable "github_api_pat" { - type = string - sensitive = true - default = "" -} - -variable "xcode_install_storage_url" { - type = string - sensitive = true -} - -variable "xcode_install_sas" { - type = string - sensitive = true -} - -variable "vcpu_count" { - type = string - default = "6" -} - -variable "ram_size" { - type = string - default = "24G" -} - -variable "image_os" { - type = string - default = "macos12" -} - -source "veertu-anka-vm-clone" "template" { - vm_name = "${var.build_id}" - source_vm_name = "${var.source_vm_name}" - source_vm_tag = "${var.source_vm_tag}" - vcpu_count = "${var.vcpu_count}" - ram_size = "${var.ram_size}" - stop_vm = "true" -} - -source "null" "template" { - ssh_host = "${var.source_vm_name}" - ssh_port = "${var.source_vm_port}" - ssh_username = "${var.vm_username}" - ssh_password = "${var.vm_password}" - ssh_proxy_host = "${var.socks_proxy}" -} - -build { - sources = ["source.${var.builder_type}.template"] - - provisioner "shell" { - inline = ["mkdir ${local.image_folder}"] - } - - provisioner "file" { - destination = "${local.image_folder}/" - sources = [ - "${path.root}/../assets/xamarin-selector", - "${path.root}/../scripts/tests", - "${path.root}/../scripts/docs-gen", - "${path.root}/../scripts/helpers" - ] - } - - provisioner "file" { - destination = "${local.image_folder}/docs-gen/" - source = "${path.root}/../../../helpers/software-report-base" - } - - provisioner "file" { - destination = "${local.image_folder}/add-certificate.swift" - source = "${path.root}/../assets/add-certificate.swift" - } - - provisioner "file" { - destination = ".bashrc" - source = "${path.root}/../assets/bashrc" - } - - provisioner "file" { - destination = ".bash_profile" - source = "${path.root}/../assets/bashprofile" - } - - provisioner "shell" { - inline = [ "mkdir ~/bootstrap" ] - } - - provisioner "file" { - destination = "bootstrap" - source = "${path.root}/../assets/bootstrap-provisioner/" - } - - provisioner "file" { - destination = "${local.image_folder}/toolset.json" - source = "${path.root}/../toolsets/toolset-12.json" - } - provisioner "shell" { - execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'" - inline = [ - "mv ${local.image_folder}/docs-gen ${local.image_folder}/software-report", - "mv ${local.image_folder}/xamarin-selector ${local.image_folder}/assets", - "mkdir ~/utils", - "mv ${local.image_folder}/helpers/confirm-identified-developers.scpt ~/utils", - "mv ${local.image_folder}/helpers/invoke-tests.sh ~/utils", - "mv ${local.image_folder}/helpers/utils.sh ~/utils", - "mv ${local.image_folder}/helpers/xamarin-utils.sh ~/utils" - ] - } - provisioner "shell" { - execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}" - scripts = [ - "${path.root}/../scripts/build/install-xcode-clt.sh", - "${path.root}/../scripts/build/install-homebrew.sh" - ] - } - - provisioner "shell" { - environment_vars = ["PASSWORD=${var.vm_password}", "USERNAME=${var.vm_username}"] - execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}" - scripts = [ - "${path.root}/../scripts/build/configure-tccdb-macos.sh", - "${path.root}/../scripts/build/configure-network-interface-detection.sh", - "${path.root}/../scripts/build/configure-autologin.sh", - "${path.root}/../scripts/build/configure-auto-updates.sh", - "${path.root}/../scripts/build/configure-screensaver.sh", - "${path.root}/../scripts/build/configure-ntpconf.sh", - "${path.root}/../scripts/build/configure-max-files-limitation.sh", - "${path.root}/../scripts/build/configure-shell.sh" - ] - } - - provisioner "shell" { - environment_vars = ["IMAGE_VERSION=${var.build_id}", "IMAGE_OS=${var.image_os}", "PASSWORD=${var.vm_password}"] - execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}" - scripts = [ - "${path.root}/../scripts/build/configure-preimagedata.sh", - "${path.root}/../scripts/build/configure-ssh.sh", - "${path.root}/../scripts/build/configure-machine.sh" - ] - } - - provisioner "shell" { - execute_command = "source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}" - expect_disconnect = true - inline = ["echo 'Reboot VM'", "shutdown -r now"] - } - - provisioner "shell" { - environment_vars = ["API_PAT=${var.github_api_pat}", "USER_PASSWORD=${var.vm_password}", "IMAGE_FOLDER=${local.image_folder}"] - execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}" - pause_before = "30s" - scripts = [ - "${path.root}/../scripts/build/configure-windows.sh", - "${path.root}/../scripts/build/install-powershell.sh", - "${path.root}/../scripts/build/install-dotnet.sh", - "${path.root}/../scripts/build/install-python.sh", - "${path.root}/../scripts/build/install-azcopy.sh", - "${path.root}/../scripts/build/install-openssl.sh", - "${path.root}/../scripts/build/install-ruby.sh", - "${path.root}/../scripts/build/install-rubygems.sh", - "${path.root}/../scripts/build/install-git.sh", - "${path.root}/../scripts/build/install-mongodb.sh", - "${path.root}/../scripts/build/install-node.sh", - "${path.root}/../scripts/build/install-common-utils.sh" - ] - } - - provisioner "shell" { - environment_vars = ["XCODE_INSTALL_STORAGE_URL=${var.xcode_install_storage_url}", "XCODE_INSTALL_SAS=${var.xcode_install_sas}", "IMAGE_FOLDER=${local.image_folder}"] - execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}" - script = "${path.root}/../scripts/build/Install-Xcode.ps1" - } - - provisioner "shell" { - execute_command = "source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}" - expect_disconnect = true - inline = ["echo 'Reboot VM'", "shutdown -r now"] - } - - provisioner "shell" { - environment_vars = ["API_PAT=${var.github_api_pat}", "IMAGE_FOLDER=${local.image_folder}"] - execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}" - scripts = [ - "${path.root}/../scripts/build/install-actions-cache.sh", - "${path.root}/../scripts/build/install-llvm.sh", - "${path.root}/../scripts/build/install-golang.sh", - "${path.root}/../scripts/build/install-swiftlint.sh", - "${path.root}/../scripts/build/install-openjdk.sh", - "${path.root}/../scripts/build/install-php.sh", - "${path.root}/../scripts/build/install-aws-tools.sh", - "${path.root}/../scripts/build/install-rust.sh", - "${path.root}/../scripts/build/install-gcc.sh", - "${path.root}/../scripts/build/install-haskell.sh", - "${path.root}/../scripts/build/install-cocoapods.sh", - "${path.root}/../scripts/build/install-android-sdk.sh", - "${path.root}/../scripts/build/install-xamarin.sh", - "${path.root}/../scripts/build/install-visualstudio.sh", - "${path.root}/../scripts/build/install-nvm.sh", - "${path.root}/../scripts/build/install-apache.sh", - "${path.root}/../scripts/build/install-nginx.sh", - "${path.root}/../scripts/build/install-postgresql.sh", - "${path.root}/../scripts/build/install-audiodevice.sh", - "${path.root}/../scripts/build/install-vcpkg.sh", - "${path.root}/../scripts/build/install-miniconda.sh", - "${path.root}/../scripts/build/install-safari.sh", - "${path.root}/../scripts/build/install-chrome.sh", - "${path.root}/../scripts/build/install-edge.sh", - "${path.root}/../scripts/build/install-firefox.sh", - "${path.root}/../scripts/build/install-pypy.sh", - "${path.root}/../scripts/build/install-pipx-packages.sh", - "${path.root}/../scripts/build/install-bicep.sh", - "${path.root}/../scripts/build/install-codeql-bundle.sh", - "${path.root}/../scripts/build/install-compilable-brew-packages.sh" - ] - } - - provisioner "shell" { - environment_vars = ["IMAGE_FOLDER=${local.image_folder}"] - execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}" - scripts = [ - "${path.root}/../scripts/build/Install-Toolset.ps1", - "${path.root}/../scripts/build/Configure-Toolset.ps1" - ] - } - - provisioner "shell" { - execute_command = "source $HOME/.bash_profile; ruby {{ .Path }}" - script = "${path.root}/../scripts/build/configure-xcode-simulators.rb" - } - - provisioner "shell" { - execute_command = "chmod +x {{ .Path }}; {{ .Vars }} pwsh -f {{ .Path }}" - script = "${path.root}/../scripts/build/Update-XcodeSimulators.ps1" - } - - provisioner "shell" { - environment_vars = ["IMAGE_FOLDER=${local.image_folder}"] - execute_command = "source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}" - inline = [ - "pwsh -File \"${local.image_folder}/software-report/Generate-SoftwareReport.ps1\" -OutputDirectory \"${local.image_folder}/output/software-report\" -ImageName ${var.build_id}", - "pwsh -File \"${local.image_folder}/tests/RunAll-Tests.ps1\"" - ] - } - - provisioner "file" { - destination = "${path.root}/../../image-output/" - direction = "download" - source = "${local.image_folder}/output/" - } - - provisioner "shell" { - execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}" - scripts = [ - "${path.root}/../scripts/build/configure-hostname.sh", - "${path.root}/../scripts/build/configure-system.sh" - ] - } -} diff --git a/images/macos/templates/macOS-13.anka.pkr.hcl b/images/macos/templates/macOS-13.anka.pkr.hcl index 25789a533..f764115fd 100644 --- a/images/macos/templates/macOS-13.anka.pkr.hcl +++ b/images/macos/templates/macOS-13.anka.pkr.hcl @@ -111,7 +111,6 @@ build { provisioner "file" { destination = "${local.image_folder}/" sources = [ - "${path.root}/../assets/xamarin-selector", "${path.root}/../scripts/tests", "${path.root}/../scripts/docs-gen", "${path.root}/../scripts/helpers" @@ -156,12 +155,10 @@ build { execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'" inline = [ "mv ${local.image_folder}/docs-gen ${local.image_folder}/software-report", - "mv ${local.image_folder}/xamarin-selector ${local.image_folder}/assets", "mkdir ~/utils", "mv ${local.image_folder}/helpers/confirm-identified-developers-macos13.scpt ~/utils", "mv ${local.image_folder}/helpers/invoke-tests.sh ~/utils", "mv ${local.image_folder}/helpers/utils.sh ~/utils", - "mv ${local.image_folder}/helpers/xamarin-utils.sh ~/utils" ] } diff --git a/images/macos/templates/macOS-13.arm64.anka.pkr.hcl b/images/macos/templates/macOS-13.arm64.anka.pkr.hcl index 7e03aa8fe..e4f4e38cd 100644 --- a/images/macos/templates/macOS-13.arm64.anka.pkr.hcl +++ b/images/macos/templates/macOS-13.arm64.anka.pkr.hcl @@ -112,7 +112,6 @@ build { provisioner "file" { destination = "${local.image_folder}/" sources = [ - "${path.root}/../assets/xamarin-selector", "${path.root}/../scripts/tests", "${path.root}/../scripts/docs-gen", "${path.root}/../scripts/helpers" @@ -157,12 +156,9 @@ build { execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'" inline = [ "mv ${local.image_folder}/docs-gen ${local.image_folder}/software-report", - "mv ${local.image_folder}/xamarin-selector ${local.image_folder}/assets", "mkdir ~/utils", - "mv ${local.image_folder}/helpers/confirm-identified-developers.scpt ~/utils", "mv ${local.image_folder}/helpers/invoke-tests.sh ~/utils", "mv ${local.image_folder}/helpers/utils.sh ~/utils", - "mv ${local.image_folder}/helpers/xamarin-utils.sh ~/utils" ] } diff --git a/images/macos/templates/macOS-14.anka.pkr.hcl b/images/macos/templates/macOS-14.anka.pkr.hcl index a29cd926b..04ad479d3 100644 --- a/images/macos/templates/macOS-14.anka.pkr.hcl +++ b/images/macos/templates/macOS-14.anka.pkr.hcl @@ -111,7 +111,6 @@ build { provisioner "file" { destination = "${local.image_folder}/" sources = [ - "${path.root}/../assets/xamarin-selector", "${path.root}/../scripts/tests", "${path.root}/../scripts/docs-gen", "${path.root}/../scripts/helpers" @@ -156,12 +155,10 @@ build { execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'" inline = [ "mv ${local.image_folder}/docs-gen ${local.image_folder}/software-report", - "mv ${local.image_folder}/xamarin-selector ${local.image_folder}/assets", "mkdir ~/utils", "mv ${local.image_folder}/helpers/confirm-identified-developers-macos14.scpt ~/utils", "mv ${local.image_folder}/helpers/invoke-tests.sh ~/utils", "mv ${local.image_folder}/helpers/utils.sh ~/utils", - "mv ${local.image_folder}/helpers/xamarin-utils.sh ~/utils" ] } diff --git a/images/macos/templates/macOS-14.arm64.anka.pkr.hcl b/images/macos/templates/macOS-14.arm64.anka.pkr.hcl index be90e1015..e61c239f0 100644 --- a/images/macos/templates/macOS-14.arm64.anka.pkr.hcl +++ b/images/macos/templates/macOS-14.arm64.anka.pkr.hcl @@ -112,7 +112,6 @@ build { provisioner "file" { destination = "${local.image_folder}/" sources = [ - "${path.root}/../assets/xamarin-selector", "${path.root}/../scripts/tests", "${path.root}/../scripts/docs-gen", "${path.root}/../scripts/helpers" @@ -157,12 +156,9 @@ build { execute_command = "sudo sh -c '{{ .Vars }} {{ .Path }}'" inline = [ "mv ${local.image_folder}/docs-gen ${local.image_folder}/software-report", - "mv ${local.image_folder}/xamarin-selector ${local.image_folder}/assets", "mkdir ~/utils", - "mv ${local.image_folder}/helpers/confirm-identified-developers.scpt ~/utils", "mv ${local.image_folder}/helpers/invoke-tests.sh ~/utils", "mv ${local.image_folder}/helpers/utils.sh ~/utils", - "mv ${local.image_folder}/helpers/xamarin-utils.sh ~/utils" ] } diff --git a/images/macos/toolsets/Readme.md b/images/macos/toolsets/Readme.md index 54b96c80c..3714d9178 100644 --- a/images/macos/toolsets/Readme.md +++ b/images/macos/toolsets/Readme.md @@ -29,62 +29,6 @@ ] ``` -## Xamarin - -- `vsmac` - version of Visual Studio For Mac to install. - **Example:** `"8.3.11.1"` - -- `mono_versions` - the array of Mono versions to install. - **Example:** `[ "6.4.0.208", "6.0.0.334" ]` - -- `ios_versions` - the array of Xamarin iOS versions to install. - **Example:** `[ "13.6.0.12", "13.4.0.2", "13.2.0.47" ]` - -- `mac_versions` - the array of Xamarin iOS versions to install. - **Example:** `[ "6.6.0.12", "6.4.0.2", "6.2.0.47" ]` - -- `android_versions` - the array of Xamarin iOS versions to install. - **Example:** `[ "10.0.6.2", "9.4.1.0" ]` - -**Note:** More than one version of SDK with the same major.minor version should not be installed. It applies to `mono_versions`, `ios_versions`, `mac_versions`, `android_versions` fields. -For example, if Mono `6.4.0.100` is installed and Mono `6.4.1.2` was released recently, we should not install both, just update `6.4.0.100` -> `6.4.1.2`. Only major and minor version changes can break backward compatibility so it is safe. - -- `bundle_default` - the symlink of the bundle that will be set as default on the image. -This bundle will be set as `Current`. - **Example:** `"5_12_0"` (set bundle with symlink `5_12_0` as default) - **Example:** `"latest"` (set latest bundle as default) - -- `bundles` - the array of objects that describe bundles that will be created on image after sdk installation. -The first bundle in the list will be as `Latest`. - - Each object should contain the following fields: - - `symlink` - unique id of the bundle (usually looks like "__") - - `mono` - version of Mono that will be set in this bundle. Only two numbers (`major.minor`) should be specified. - - `ios` - version of Xamarin.iOS that will be set in this bundle. Only two numbers (`major.minor`) should be specified. - - `mac` - version of Xamarin.Mac that will be set in this bundle. Only two numbers (`major.minor`) should be specified. - - `android` - version of Xamarin.Android that will be set in this bundle. Only two numbers (`major.minor`) should be specified. - -**Example:** - -```json - [ - { - "symlink": "6_4_2", - "mono": "6.4", - "ios": "13.6", - "mac": "6.6", - "android": "10.0" - }, - { - "symlink": "6_4_1", - "mono": "6.4", - "ios": "13.4", - "mac": "6.4", - "android": "10.0" - } - ] -``` - ## Android - `platform-list` - the array of android platforms to install. @@ -96,7 +40,7 @@ The first bundle in the list will be as `Latest`. - `extras` - the array of android extra items to install. **Example:** `[ "google;google_play_services", "intel;Hardware_Accelerated_Execution_Manager" ]` -- `addons` - the array of android addons to install. +- `addons` - the array of android add-ons to install. **Example:** `[ "addon-google_apis-google-24", "addon-google_apis-google-23" ]` ## Toolset JSON validation diff --git a/images/macos/toolsets/toolset-12.json b/images/macos/toolsets/toolset-12.json deleted file mode 100644 index e63383d7a..000000000 --- a/images/macos/toolsets/toolset-12.json +++ /dev/null @@ -1,368 +0,0 @@ -{ - "xcode": { - "default": "14.2", - "x64": { - "versions": [ - { "link": "14.2", "version": "14.2.0+14C18", "install_runtimes": "true", "sha256": "686B9D53CA49E50D563BC0104B1E8B4F7CCFE80064A6D689965FB819BF8EFE72" }, - { "link": "14.1", "version": "14.1.0+14B47b", "install_runtimes": "true", "sha256": "12F8A3AEF78BF354470AD8B351ADDD925C8EDAD888137D138CA50A8130EB9F2F" }, - { "link": "14.0.1", "version": "14.0.1+14A400", "symlinks": ["14.0"], "install_runtimes": "true", "sha256": "EDB4DDCE02F92338E3D10B011FC86CD26520E3238585F06F3C182880DDD3B2AF" }, - { "link": "13.4.1", "version": "13.4.1+13F100", "symlinks": ["13.4"], "sha256": "A1E0DBD6D5A96C4A6D3D63600B58486759AA836C2D9F7E8FA6D7DA4C7399638B" }, - { "link": "13.3.1", "version": "13.3.1+13E500a", "symlinks": ["13.3"], "sha256": "D10B4644DB84BA43F7B18CE94FB3CA1ACD255D39781F4AF8FC88BD8581E08F97" }, - { "link": "13.2.1", "version": "13.2.1+13C100", "symlinks": ["13.2"], "sha256": "D3BFCC6225D531587490C0DFC0926C80B7D50D17671DC8F25868F965F5D65F9D" }, - { "link": "13.1", "version": "13.1.0+13A1030d", "sha256": "4EFDEEA0EEEDA1957BB394128CCCD1DAAC3CB0A3D074224E0FAB90855CCA09C4" } - ] - } - }, - "xamarin": { - "vsmac": { - "default": "2022", - "versions": [ "2019", "2022" ] - }, - "mono_versions": [ - "6.12.0.188" - ], - "ios_versions": [ - "16.4.0.23", "16.2.0.5", "16.1.1.27", "16.0.0.72", "15.12.0.2", "15.10.0.5", "15.8.0.3", "15.6.0.3", "15.4.0.0", "15.2.0.17", "15.0.0.6" - ], - "mac_versions": [ - "9.3.0.23", "9.1.0.5", "9.0.0.27", "8.12.0.2", "8.10.0.5", "8.8.0.3", "8.6.0.3", "8.4.0.0", "8.2.0.17", "7.14.0.27" - ], - "android_versions": [ - "13.2.2.0", "13.1.0.1", "13.0.0.0", "12.3.3.3", "12.2.8.3", "12.1.0.2", "12.0.0.3", "11.3.0.4" - ], - "bundle_default": "6_12_21", - "bundles": [ - { - "symlink": "6_12_25", - "mono":"6.12", - "ios": "16.4", - "mac": "9.3", - "android": "13.2" - }, - { - "symlink": "6_12_24", - "mono":"6.12", - "ios": "16.2", - "mac": "9.1", - "android": "13.2" - }, - { - "symlink": "6_12_23", - "mono":"6.12", - "ios": "16.2", - "mac": "9.1", - "android": "13.1" - }, - { - "symlink": "6_12_22", - "mono":"6.12", - "ios": "16.1", - "mac": "9.0", - "android": "13.1" - }, - { - "symlink": "6_12_21", - "mono":"6.12", - "ios": "16.0", - "mac": "8.12", - "android": "13.1" - }, - { - "symlink": "6_12_20", - "mono":"6.12", - "ios": "16.0", - "mac": "8.12", - "android": "13.0" - }, - { - "symlink": "6_12_19", - "mono":"6.12", - "ios": "15.12", - "mac": "8.12", - "android": "13.0" - }, - { - "symlink": "6_12_18", - "mono":"6.12", - "ios": "15.10", - "mac": "8.10", - "android": "12.3" - }, - { - "symlink": "6_12_17", - "mono":"6.12", - "ios": "15.10", - "mac": "8.10", - "android": "12.2" - }, - { - "symlink": "6_12_16", - "mono":"6.12", - "ios": "15.8", - "mac": "8.8", - "android": "12.2" - }, - { - "symlink": "6_12_15", - "mono":"6.12", - "ios": "15.8", - "mac": "8.8", - "android": "12.1" - }, - { - "symlink": "6_12_14", - "mono":"6.12", - "ios": "15.8", - "mac": "8.8", - "android": "12.0" - }, - { - "symlink": "6_12_13", - "mono":"6.12", - "ios": "15.6", - "mac": "8.6", - "android": "12.0" - }, - { - "symlink": "6_12_12", - "mono":"6.12", - "ios": "15.4", - "mac": "8.4", - "android": "12.0" - }, - { - "symlink": "6_12_11", - "mono":"6.12", - "ios": "15.2", - "mac": "8.2", - "android": "12.0" - }, - { - "symlink": "6_12_10", - "mono":"6.12", - "ios": "15.0", - "mac": "7.14", - "android": "11.3" - } - ] - }, - "java": { - "x64": { - "default": "8", - "versions": [ "8", "11", "17", "21"] - } - }, - "android": { - "cmdline-tools": "commandlinetools-mac-9123335_latest.zip", - "platform_min_version": "31", - "build_tools_min_version": "31.0.0", - "extras": [ - "android;m2repository", "google;m2repository", "google;google_play_services" - ], - "addons": [], - "additional_tools": [ - "cmake;3.18.1", - "cmake;3.22.1" - ], - "ndk": { - "default": "25", - "versions": [ - "24", "25", "26", "27" - ] - } - }, - "powershellModules": [ - { "name": "Az" }, - { "name": "MarkdownPS" }, - { "name": "Pester" }, - { "name": "PSScriptAnalyzer" } - ], - "npm": { - "global_packages": [ - { "name": "appcenter-cli", "test": "appcenter --version" } - ] - }, - "brew": { - "common_packages": [ - "aria2", - "azure-cli", - "bazelisk", - "carthage", - "cmake", - "colima", - "gh", - "gnupg", - "gnu-tar", - "libpq", - "p7zip", - "packer", - "perl", - "pkg-config", - "subversion", - "swiftformat", - "swig", - "zstd", - "gmp", - "zlib", - "libxext", - "libxft", - "tcl-tk", - "r", - "yq", - "imagemagick", - "unxip", - "xcbeautify", - "xcodes" - ], - "cask_packages": [ - "julia", - "vagrant", - "virtualbox", - "parallels" - ], - "compilable_packages": [ - "ant", - "kotlin", - "sbt" - ] - }, - "gcc": { - "versions": [ - "12", - "13", - "14" - ] - }, - "toolcache": [ - { - "name": "Python", - "url" : "https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json", - "platform" : "darwin", - "arch": { - "x64": { - "versions": [ - "3.7.*", - "3.8.*", - "3.9.*", - "3.10.*", - "3.11.*", - "3.12.*" - ] - } - } - }, - { - "name": "PyPy", - "platform" : "darwin", - "arch": { - "x64": { - "versions": [ - "2.7", - "3.7", - "3.8", - "3.9", - "3.10" - ] - } - } - }, - { - "name": "Node", - "url" : "https://raw.githubusercontent.com/actions/node-versions/main/versions-manifest.json", - "platform" : "darwin", - "arch": { - "x64": { - "versions": [ - "16.*", - "18.*", - "20.*" - ] - } - } - }, - { - "name": "Go", - "url" : "https://raw.githubusercontent.com/actions/go-versions/main/versions-manifest.json", - "platform" : "darwin", - "arch": { - "x64": { - "variable_template" : "GOROOT_{0}_{1}_X64", - "versions": [ - "1.20.*", - "1.21.*", - "1.22.*", - "1.23.*" - ] - } - } - }, - { - "name": "Ruby", - "arch": { - "x64": { - "versions": [ - "3.0.*", - "3.1.*", - "3.2.*", - "3.3.*" - ] - } - } - } - ], - "pipx": [ - { - "package": "yamllint", - "cmd": "yamllint --version" - } - ], - "dotnet": { - "arch":{ - "x64": { - "versions": [ - "6.0", - "7.0", - "8.0" - ] - } - } - }, - "ruby": { - "default": "3.0", - "rubygems": [ - "xcode-install", - "cocoapods", - "xcpretty", - "bundler", - "fastlane", - "jazzy" - ] - }, - "go": { - "default": "1.21" - }, - "node": { - "default": "18", - "nvm_installer": "0.39.7", - "nvm_versions": [ - "16", - "18", - "20" - ] - }, - "llvm": { - "version": "15" - }, - "php": { - "version": "8.3" - }, - "mongodb": { - "version": "5.0" - }, - "postgresql": { - "version": "14" - }, - "pwsh": { - "version": "7.4" - } -}