[Mac OS] Configure template for Mac OS 14 ARM64 image (#8769)

* Configure template for Mac OS 14 ARM64 image

* Change conditions for ruby
This commit is contained in:
Vasilii Polikarpov
2023-11-10 18:53:24 +01:00
committed by GitHub
parent f685533110
commit df292beac6
31 changed files with 434 additions and 202 deletions

View File

@@ -30,13 +30,17 @@ function Get-OSVersion {
$osVersionMajorMinor = $osVersion.Version.ToString(2) $osVersionMajorMinor = $osVersion.Version.ToString(2)
$processorArchitecture = arch $processorArchitecture = arch
return [PSCustomObject]@{ return [PSCustomObject]@{
Version = $osVersion.Version Version = $osVersion.Version
Platform = $osVersion.Platform Platform = $osVersion.Platform
IsBigSur = $osVersion.Version.Major -eq "11" IsArm64 = $processorArchitecture -eq "arm64"
IsMonterey = $osVersion.Version.Major -eq "12" IsBigSur = $osVersion.Version.Major -eq "11"
IsVentura = $($osVersion.Version.Major -eq "13" -and $processorArchitecture -ne "arm64") IsMonterey = $osVersion.Version.Major -eq "12"
IsVentura = $($osVersion.Version.Major -eq "13")
IsVenturaArm64 = $($osVersion.Version.Major -eq "13" -and $processorArchitecture -eq "arm64") IsVenturaArm64 = $($osVersion.Version.Major -eq "13" -and $processorArchitecture -eq "arm64")
IsVenturaX64 = $($osVersion.Version.Major -eq "13" -and $processorArchitecture -ne "arm64")
IsSonoma = $($osVersion.Version.Major -eq "14") IsSonoma = $($osVersion.Version.Major -eq "14")
IsSonomaArm64 = $($osVersion.Version.Major -eq "14" -and $processorArchitecture -eq "arm64")
IsSonomaX64 = $($osVersion.Version.Major -eq "14" -and $processorArchitecture -ne "arm64")
} }
} }

View File

@@ -132,7 +132,7 @@ function Approve-XcodeLicense {
Write-Host "Approving Xcode license for '$XcodeRootPath'..." Write-Host "Approving Xcode license for '$XcodeRootPath'..."
$xcodeBuildPath = Get-XcodeToolPath -XcodeRootPath $XcodeRootPath -ToolName "xcodebuild" $xcodeBuildPath = Get-XcodeToolPath -XcodeRootPath $XcodeRootPath -ToolName "xcodebuild"
if ($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { if ($os.IsVentura -or $os.IsSonoma) {
Invoke-ValidateCommand -Command "sudo $xcodeBuildPath -license accept" -Timeout 15 Invoke-ValidateCommand -Command "sudo $xcodeBuildPath -license accept" -Timeout 15
} else { } else {
Invoke-ValidateCommand -Command "sudo $xcodeBuildPath -license accept" Invoke-ValidateCommand -Command "sudo $xcodeBuildPath -license accept"

View File

@@ -17,7 +17,7 @@ else
fi fi
release_label="macOS-${label_version}" release_label="macOS-${label_version}"
if is_Ventura || is_Sonoma; then if is_VenturaX64 || is_SonomaX64; then
software_url="https://github.com/actions/runner-images/blob/${image_label}/${image_version}/images/macos/${image_label}-Readme.md" software_url="https://github.com/actions/runner-images/blob/${image_label}/${image_version}/images/macos/${image_label}-Readme.md"
releaseUrl="https://github.com/actions/runner-images/releases/tag/${image_label}%2F${image_version}" releaseUrl="https://github.com/actions/runner-images/releases/tag/${image_label}%2F${image_version}"
else else

View File

@@ -3,7 +3,7 @@
source ~/utils/utils.sh source ~/utils/utils.sh
# Close System Preferences window because in Ventura arm64 it is opened by default on Apperance tab # Close System Preferences window because in Ventura arm64 it is opened by default on Apperance tab
if is_VenturaArm64; then if is_Arm64; then
echo "Close System Preferences window" echo "Close System Preferences window"
osascript -e 'tell application "System Preferences" to quit' osascript -e 'tell application "System Preferences" to quit'
fi fi

View File

@@ -4,7 +4,7 @@ source ~/utils/utils.sh
echo "Install openssl@1.1" echo "Install openssl@1.1"
brew_smart_install "openssl@1.1" brew_smart_install "openssl@1.1"
if ! is_VenturaArm64; then if ! is_Arm64; then
# Symlink brew openssl@1.1 to `/usr/local/bin` as Homebrew refuses # Symlink brew openssl@1.1 to `/usr/local/bin` as Homebrew refuses
ln -sf $(brew --prefix openssl@1.1)/bin/openssl /usr/local/bin/openssl ln -sf $(brew --prefix openssl@1.1)/bin/openssl /usr/local/bin/openssl
else else
@@ -12,7 +12,7 @@ else
ln -sf $(brew --prefix openssl@1.1)/bin/openssl /opt/homebrew/bin/openssl ln -sf $(brew --prefix openssl@1.1)/bin/openssl /opt/homebrew/bin/openssl
fi fi
if ! is_VenturaArm64; then if ! is_Arm64; then
# Most of buildsystems and scripts look up ssl here # Most of buildsystems and scripts look up ssl here
ln -sf $(brew --cellar openssl@1.1)/1.1* /usr/local/opt/openssl ln -sf $(brew --cellar openssl@1.1)/1.1* /usr/local/opt/openssl
fi fi

View File

@@ -19,7 +19,7 @@ else
echo 'export PATH="$GEM_PATH:/usr/local/opt/ruby@'${DEFAULT_RUBY_VERSION}'/bin:$PATH"' >> "$HOME/.bashrc" echo 'export PATH="$GEM_PATH:/usr/local/opt/ruby@'${DEFAULT_RUBY_VERSION}'/bin:$PATH"' >> "$HOME/.bashrc"
fi fi
if ! is_VenturaArm64; then if ! is_Arm64; then
echo "Install Ruby from toolset..." echo "Install Ruby from toolset..."
[ -n "$API_PAT" ] && authString=(-H "Authorization: token ${API_PAT}") [ -n "$API_PAT" ] && authString=(-H "Authorization: token ${API_PAT}")
PACKAGE_TAR_NAMES=$(curl "${authString[@]}" -fsSL "https://api.github.com/repos/ruby/ruby-builder/releases/latest" | jq -r '.assets[].name') PACKAGE_TAR_NAMES=$(curl "${authString[@]}" -fsSL "https://api.github.com/repos/ruby/ruby-builder/releases/latest" | jq -r '.assets[].name')

View File

@@ -46,53 +46,44 @@ download_with_retries() {
return 1 return 1
} }
is_VenturaArm64() { is_Arm64() {
arch=$(get_arch) [ "$(arch)" = "arm64" ]
if [ "$OSTYPE" = "darwin22" ] && [ $arch = "arm64" ]; then
true
else
false
fi
} }
is_Sonoma() { is_Sonoma() {
if [ "$OSTYPE" = "darwin23" ]; then [ "$OSTYPE" = "darwin23" ]
true }
else
false is_SonomaArm64() {
fi is_Sonoma && is_Arm64
}
is_SonomaX64() {
is_Sonoma && ! is_Arm64
} }
is_Ventura() { is_Ventura() {
if [ "$OSTYPE" = "darwin22" ]; then [ "$OSTYPE" = "darwin22" ]
true }
else
false is_VenturaArm64() {
fi is_Ventura && is_Arm64
}
is_VenturaX64() {
is_Ventura && ! is_Arm64
} }
is_Monterey() { is_Monterey() {
if [ "$OSTYPE" = "darwin21" ]; then [ "$OSTYPE" = "darwin21" ]
true
else
false
fi
} }
is_BigSur() { is_BigSur() {
if [ "$OSTYPE" = "darwin20" ]; then [ "$OSTYPE" = "darwin20" ]
true
else
false
fi
} }
is_Veertu() { is_Veertu() {
if [ -d "/Library/Application Support/Veertu" ]; then [ -d "/Library/Application Support/Veertu" ]
true
else
false
fi
} }
get_toolset_path() { get_toolset_path() {

View File

@@ -11,7 +11,7 @@ function Build-BrowserSection {
[ToolVersionNode]::new("ChromeDriver", $(Get-ChromeDriverVersion)) [ToolVersionNode]::new("ChromeDriver", $(Get-ChromeDriverVersion))
) )
if (-not $os.IsVenturaArm64) { if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
$nodes += @( $nodes += @(
[ToolVersionNode]::new("Microsoft Edge", $(Get-EdgeVersion)) [ToolVersionNode]::new("Microsoft Edge", $(Get-EdgeVersion))
[ToolVersionNode]::new("Microsoft Edge WebDriver", $(Get-EdgeDriverVersion)) [ToolVersionNode]::new("Microsoft Edge WebDriver", $(Get-EdgeDriverVersion))
@@ -79,7 +79,7 @@ function Get-GeckodriverVersion {
function Get-SeleniumVersion { function Get-SeleniumVersion {
$os = Get-OSVersion $os = Get-OSVersion
if ($os.IsVenturaArm64) { if ($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
$cellarPath = "/opt/homebrew/Cellar" $cellarPath = "/opt/homebrew/Cellar"
} else { } else {
$cellarPath = "/usr/local/Cellar" $cellarPath = "/usr/local/Cellar"

View File

@@ -40,26 +40,26 @@ $languageAndRuntime.AddNodes($(Get-GccVersions))
$languageAndRuntime.AddNodes($(Get-FortranVersions)) $languageAndRuntime.AddNodes($(Get-FortranVersions))
$languageAndRuntime.AddToolVersion("Julia", $(Get-JuliaVersion)) $languageAndRuntime.AddToolVersion("Julia", $(Get-JuliaVersion))
$languageAndRuntime.AddToolVersion("Kotlin", $(Get-KotlinVersion)) $languageAndRuntime.AddToolVersion("Kotlin", $(Get-KotlinVersion))
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$languageAndRuntime.AddToolVersion("Go", $(Get-GoVersion)) $languageAndRuntime.AddToolVersion("Go", $(Get-GoVersion))
} }
$languageAndRuntime.AddToolVersion("Mono", $(Get-MonoVersion)) $languageAndRuntime.AddToolVersion("Mono", $(Get-MonoVersion))
$languageAndRuntime.AddToolVersion("Node.js", $(Get-NodeVersion)) $languageAndRuntime.AddToolVersion("Node.js", $(Get-NodeVersion))
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$languageAndRuntime.AddToolVersion("MSBuild", $(Get-MSBuildVersion)) $languageAndRuntime.AddToolVersion("MSBuild", $(Get-MSBuildVersion))
$languageAndRuntime.AddToolVersion("NVM", $(Get-NVMVersion)) $languageAndRuntime.AddToolVersion("NVM", $(Get-NVMVersion))
$languageAndRuntime.AddToolVersionsListInline("NVM - Cached node versions", $(Get-NVMNodeVersionList), '^\d+') $languageAndRuntime.AddToolVersionsListInline("NVM - Cached node versions", $(Get-NVMNodeVersionList), '^\d+')
} }
$languageAndRuntime.AddToolVersion("Perl", $(Get-PerlVersion)) $languageAndRuntime.AddToolVersion("Perl", $(Get-PerlVersion))
if (-not $os.IsVenturaArm64) { if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
$languageAndRuntime.AddToolVersion("PHP", $(Get-PHPVersion)) $languageAndRuntime.AddToolVersion("PHP", $(Get-PHPVersion))
} }
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$languageAndRuntime.AddToolVersion("Python", $(Get-PythonVersion)) $languageAndRuntime.AddToolVersion("Python", $(Get-PythonVersion))
} }
if (-not $os.IsVenturaArm64) { if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
$languageAndRuntime.AddToolVersion("Python3", $(Get-Python3Version)) $languageAndRuntime.AddToolVersion("Python3", $(Get-Python3Version))
} }
$languageAndRuntime.AddToolVersion("R", $(Get-RVersion)) $languageAndRuntime.AddToolVersion("R", $(Get-RVersion))
@@ -70,31 +70,31 @@ $packageManagement = $installedSoftware.AddHeader("Package Management")
$packageManagement.AddToolVersion("Bundler", $(Get-BundlerVersion)) $packageManagement.AddToolVersion("Bundler", $(Get-BundlerVersion))
$packageManagement.AddToolVersion("Carthage", $(Get-CarthageVersion)) $packageManagement.AddToolVersion("Carthage", $(Get-CarthageVersion))
$packageManagement.AddToolVersion("CocoaPods", $(Get-CocoaPodsVersion)) $packageManagement.AddToolVersion("CocoaPods", $(Get-CocoaPodsVersion))
if (-not $os.IsVenturaArm64) { if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
$packageManagement.AddToolVersion("Composer", $(Get-ComposerVersion)) $packageManagement.AddToolVersion("Composer", $(Get-ComposerVersion))
} }
$packageManagement.AddToolVersion("Homebrew", $(Get-HomebrewVersion)) $packageManagement.AddToolVersion("Homebrew", $(Get-HomebrewVersion))
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$packageManagement.AddToolVersion("Miniconda", $(Get-CondaVersion)) $packageManagement.AddToolVersion("Miniconda", $(Get-CondaVersion))
} }
$packageManagement.AddToolVersion("NPM", $(Get-NPMVersion)) $packageManagement.AddToolVersion("NPM", $(Get-NPMVersion))
$packageManagement.AddToolVersion("NuGet", $(Get-NuGetVersion)) $packageManagement.AddToolVersion("NuGet", $(Get-NuGetVersion))
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$packageManagement.AddToolVersion("Pip", $(Get-PipVersion -Version 2)) $packageManagement.AddToolVersion("Pip", $(Get-PipVersion -Version 2))
} }
if (-not $os.IsVenturaArm64) { if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
$packageManagement.AddToolVersion("Pip3", $(Get-PipVersion -Version 3)) $packageManagement.AddToolVersion("Pip3", $(Get-PipVersion -Version 3))
$packageManagement.AddToolVersion("Pipx", $(Get-PipxVersion)) $packageManagement.AddToolVersion("Pipx", $(Get-PipxVersion))
} }
$packageManagement.AddToolVersion("RubyGems", $(Get-RubyGemsVersion)) $packageManagement.AddToolVersion("RubyGems", $(Get-RubyGemsVersion))
if (-not $os.IsVenturaArm64) { if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
$packageManagement.AddToolVersion("Vcpkg", $(Get-VcpkgVersion)) $packageManagement.AddToolVersion("Vcpkg", $(Get-VcpkgVersion))
} }
$packageManagement.AddToolVersion("Yarn", $(Get-YarnVersion)) $packageManagement.AddToolVersion("Yarn", $(Get-YarnVersion))
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$packageManagement.AddNode($(Build-PackageManagementEnvironmentTable)) $packageManagement.AddNode($(Build-PackageManagementEnvironmentTable))
} }
# Project Management # Project Management
@@ -102,7 +102,7 @@ $projectManagement = $installedSoftware.AddHeader("Project Management")
$projectManagement.AddToolVersion("Apache Ant", $(Get-ApacheAntVersion)) $projectManagement.AddToolVersion("Apache Ant", $(Get-ApacheAntVersion))
$projectManagement.AddToolVersion("Apache Maven", $(Get-MavenVersion)) $projectManagement.AddToolVersion("Apache Maven", $(Get-MavenVersion))
$projectManagement.AddToolVersion("Gradle", $(Get-GradleVersion)) $projectManagement.AddToolVersion("Gradle", $(Get-GradleVersion))
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$projectManagement.AddToolVersion("Sbt", $(Get-SbtVersion)) $projectManagement.AddToolVersion("Sbt", $(Get-SbtVersion))
} }
@@ -124,11 +124,11 @@ $utilities.AddToolVersion("gpg (GnuPG)", $(Get-GPGVersion))
if ($os.IsBigSur) { if ($os.IsBigSur) {
$utilities.AddToolVersion("helm", $(Get-HelmVersion)) $utilities.AddToolVersion("helm", $(Get-HelmVersion))
} }
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$utilities.AddToolVersion("ImageMagick", $(Get-ImageMagickVersion)) $utilities.AddToolVersion("ImageMagick", $(Get-ImageMagickVersion))
} }
$utilities.AddToolVersion("jq", $(Get-JqVersion)) $utilities.AddToolVersion("jq", $(Get-JqVersion))
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$utilities.AddToolVersion("mongo", $(Get-MongoVersion)) $utilities.AddToolVersion("mongo", $(Get-MongoVersion))
$utilities.AddToolVersion("mongod", $(Get-MongodVersion)) $utilities.AddToolVersion("mongod", $(Get-MongodVersion))
} }
@@ -138,7 +138,7 @@ if ($os.IsBigSur) {
$utilities.AddToolVersion("OpenSSL", $(Get-OpenSSLVersion)) $utilities.AddToolVersion("OpenSSL", $(Get-OpenSSLVersion))
$utilities.AddToolVersion("Packer", $(Get-PackerVersion)) $utilities.AddToolVersion("Packer", $(Get-PackerVersion))
$utilities.AddToolVersion("pkg-config", $(Get-PKGConfigVersion)) $utilities.AddToolVersion("pkg-config", $(Get-PKGConfigVersion))
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$utilities.AddToolVersion("PostgreSQL", $(Get-PostgresServerVersion)) $utilities.AddToolVersion("PostgreSQL", $(Get-PostgresServerVersion))
$utilities.AddToolVersion("psql (PostgreSQL)", $(Get-PostgresClientVersion)) $utilities.AddToolVersion("psql (PostgreSQL)", $(Get-PostgresClientVersion))
$utilities.AddToolVersion("Sox", $(Get-SoxVersion)) $utilities.AddToolVersion("Sox", $(Get-SoxVersion))
@@ -157,7 +157,7 @@ $tools = $installedSoftware.AddHeader("Tools")
if ($os.IsBigSur) { if ($os.IsBigSur) {
$tools.AddToolVersion("Aliyun CLI", $(Get-AliyunCLIVersion)) $tools.AddToolVersion("Aliyun CLI", $(Get-AliyunCLIVersion))
} }
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$tools.AddToolVersion("App Center CLI", $(Get-AppCenterCLIVersion)) $tools.AddToolVersion("App Center CLI", $(Get-AppCenterCLIVersion))
} }
$tools.AddToolVersion("AWS CLI", $(Get-AWSCLIVersion)) $tools.AddToolVersion("AWS CLI", $(Get-AWSCLIVersion))
@@ -166,7 +166,7 @@ $tools.AddToolVersion("AWS Session Manager CLI", $(Get-AWSSessionManagerCLIVersi
$tools.AddToolVersion("Azure CLI", $(Get-AzureCLIVersion)) $tools.AddToolVersion("Azure CLI", $(Get-AzureCLIVersion))
$tools.AddToolVersion("Azure CLI (azure-devops)", $(Get-AzureDevopsVersion)) $tools.AddToolVersion("Azure CLI (azure-devops)", $(Get-AzureDevopsVersion))
$tools.AddToolVersion("Bicep CLI", $(Get-BicepVersion)) $tools.AddToolVersion("Bicep CLI", $(Get-BicepVersion))
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$tools.AddToolVersion("Cabal", $(Get-CabalVersion)) $tools.AddToolVersion("Cabal", $(Get-CabalVersion))
} }
$tools.AddToolVersion("Cmake", $(Get-CmakeVersion)) $tools.AddToolVersion("Cmake", $(Get-CmakeVersion))
@@ -175,26 +175,26 @@ if ($os.IsMonterey) {
$tools.AddToolVersion("Colima", $(Get-ColimaVersion)) $tools.AddToolVersion("Colima", $(Get-ColimaVersion))
} }
$tools.AddToolVersion("Fastlane", $(Get-FastlaneVersion)) $tools.AddToolVersion("Fastlane", $(Get-FastlaneVersion))
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$tools.AddToolVersion("GHC", $(Get-GHCVersion)) $tools.AddToolVersion("GHC", $(Get-GHCVersion))
$tools.AddToolVersion("GHCup", $(Get-GHCupVersion)) $tools.AddToolVersion("GHCup", $(Get-GHCupVersion))
$tools.AddToolVersion("Jazzy", $(Get-JazzyVersion)) $tools.AddToolVersion("Jazzy", $(Get-JazzyVersion))
} }
if (-not $os.IsVenturaArm64) { if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
$tools.AddToolVersion("Stack", $(Get-StackVersion)) $tools.AddToolVersion("Stack", $(Get-StackVersion))
} }
$tools.AddToolVersion("SwiftFormat", $(Get-SwiftFormatVersion)) $tools.AddToolVersion("SwiftFormat", $(Get-SwiftFormatVersion))
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$tools.AddToolVersion("Swig", $(Get-SwigVersion)) $tools.AddToolVersion("Swig", $(Get-SwigVersion))
} }
$tools.AddToolVersion("Xcode Command Line Tools", $(Get-XcodeCommandLineToolsVersion)) $tools.AddToolVersion("Xcode Command Line Tools", $(Get-XcodeCommandLineToolsVersion))
# Linters # Linters
$linters = $installedSoftware.AddHeader("Linters") $linters = $installedSoftware.AddHeader("Linters")
if (-not $os.IsVenturaArm64) { if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
$linters.AddToolVersion("SwiftLint", $(Get-SwiftLintVersion)) $linters.AddToolVersion("SwiftLint", $(Get-SwiftLintVersion))
} }
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$linters.AddToolVersion("Yamllint", $(Get-YamllintVersion)) $linters.AddToolVersion("Yamllint", $(Get-YamllintVersion))
} }
@@ -220,7 +220,7 @@ if (-not $os.IsSonoma) {
$rust.AddToolVersion("Rustup", $(Get-RustupVersion)) $rust.AddToolVersion("Rustup", $(Get-RustupVersion))
$rustPackages = $rust.AddHeader("Packages") $rustPackages = $rust.AddHeader("Packages")
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64)) { if (-not $os.IsVentura) {
$rustPackages.AddToolVersion("Bindgen", $(Get-Bindgen)) $rustPackages.AddToolVersion("Bindgen", $(Get-Bindgen))
$rustPackages.AddToolVersion("Cargo-audit", $(Get-Cargoaudit)) $rustPackages.AddToolVersion("Cargo-audit", $(Get-Cargoaudit))
$rustPackages.AddToolVersion("Cargo-outdated", $(Get-Cargooutdated)) $rustPackages.AddToolVersion("Cargo-outdated", $(Get-Cargooutdated))
@@ -238,13 +238,13 @@ $powerShellModules = $powerShell.AddHeader("PowerShell Modules")
$powerShellModules.AddNodes($(Get-PowerShellModules)) $powerShellModules.AddNodes($(Get-PowerShellModules))
# Web Servers # Web Servers
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$webServers = $installedSoftware.AddHeader("Web Servers") $webServers = $installedSoftware.AddHeader("Web Servers")
$webServers.AddTable($(Build-WebServersSection)) $webServers.AddTable($(Build-WebServersSection))
} }
# Xamarin section # Xamarin section
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64) -and (-not $os.IsSonoma)) { if ((-not $os.IsVentura) -and (-not $os.IsSonoma)) {
$xamarin = $installedSoftware.AddHeader("Xamarin") $xamarin = $installedSoftware.AddHeader("Xamarin")
$vsForMac = $xamarin.AddHeader("Visual Studio for Mac") $vsForMac = $xamarin.AddHeader("Visual Studio for Mac")
$vsForMac.AddTable($(Build-VSMacTable)) $vsForMac.AddTable($(Build-VSMacTable))

View File

@@ -2,7 +2,7 @@ function Get-JavaVersions {
$defaultJavaPath = (Get-Item env:JAVA_HOME).value $defaultJavaPath = (Get-Item env:JAVA_HOME).value
$os = Get-OSVersion $os = Get-OSVersion
if ($os.IsVenturaArm64) { if ($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
$javaVersions = Get-Item env:JAVA_HOME_*_arm64 $javaVersions = Get-Item env:JAVA_HOME_*_arm64
} else { } else {
$javaVersions = Get-Item env:JAVA_HOME_*_X64 $javaVersions = Get-Item env:JAVA_HOME_*_X64

View File

@@ -37,7 +37,7 @@ function Build-ToolcacheSection {
$nodes = @() $nodes = @()
if (-not $os.IsVenturaArm64) { if ((-not $os.IsVenturaArm64) -and (-not $os.IsSonomaArm64)) {
$nodes += @( $nodes += @(
[ToolVersionsListNode]::new("Ruby", $(Get-ToolcacheRubyVersions), '^\d+\.\d+', "List"), [ToolVersionsListNode]::new("Ruby", $(Get-ToolcacheRubyVersions), '^\d+\.\d+', "List"),
[ToolVersionsListNode]::new("PyPy", $(Get-ToolcachePyPyVersions), '^\d+\.\d+', "List") [ToolVersionsListNode]::new("PyPy", $(Get-ToolcachePyPyVersions), '^\d+\.\d+', "List")

View File

@@ -0,0 +1,237 @@
packer {
required_plugins {
veertu-anka = {
version = ">= v3.2.0"
source = "github.com/veertuinc/veertu-anka"
}
}
}
variable "source_vm_name" {
type = string
}
variable "source_vm_tag" {
type = string
}
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
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 = "8G"
}
variable "image_os" {
type = string
default = "macos14"
}
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"
log_level = "debug"
}
build {
sources = [
"source.veertu-anka-vm-clone.template"
]
provisioner "shell" {
inline = [
"mkdir ~/image-generation"
]
}
provisioner "file" {
destination = "image-generation/"
sources = [
"./provision/assets",
"./tests",
"./software-report",
"./helpers"
]
}
provisioner "file" {
destination = "image-generation/software-report/"
source = "../../helpers/software-report-base"
}
provisioner "file" {
destination = "image-generation/add-certificate.swift"
source = "./provision/configuration/add-certificate.swift"
}
provisioner "file" {
destination = ".bashrc"
source = "./provision/configuration/environment/bashrc"
}
provisioner "file" {
destination = ".bash_profile"
source = "./provision/configuration/environment/bashprofile"
}
provisioner "file" {
destination = "./"
source = "./provision/utils"
}
provisioner "shell" {
inline = [
"mkdir ~/bootstrap"
]
}
provisioner "file" {
destination = "bootstrap"
source = "./provision/bootstrap-provisioner/"
}
provisioner "file" {
destination = "image-generation/toolset.json"
source = "./toolsets/toolset-14.json"
}
provisioner "shell" {
scripts = [
"./provision/core/xcode-clt.sh",
"./provision/core/homebrew.sh",
"./provision/core/rosetta.sh"
]
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
}
provisioner "shell" {
scripts = [
"./provision/configuration/configure-tccdb-macos.sh",
"./provision/configuration/disable-auto-updates.sh",
"./provision/configuration/ntpconf.sh",
"./provision/configuration/shell-change.sh"
]
environment_vars = [
"PASSWORD=${var.vm_password}",
"USERNAME=${var.vm_username}"
]
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
}
provisioner "shell" {
scripts = [
"./provision/configuration/preimagedata.sh",
"./provision/configuration/configure-ssh.sh",
"./provision/configuration/configure-machine.sh"
]
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 }}"
}
provisioner "shell" {
script = "./provision/core/reboot.sh"
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
expect_disconnect = true
}
provisioner "shell" {
pause_before = "30s"
scripts = [
"./provision/core/open_windows_check.sh",
"./provision/core/powershell.sh",
"./provision/core/mono.sh",
"./provision/core/dotnet.sh",
"./provision/core/azcopy.sh",
"./provision/core/openssl.sh",
"./provision/core/ruby.sh",
"./provision/core/rubygem.sh",
"./provision/core/git.sh",
"./provision/core/node.sh",
"./provision/core/commonutils.sh"
]
environment_vars = [
"API_PAT=${var.github_api_pat}",
"USER_PASSWORD=${var.vm_password}"
]
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
}
provisioner "shell" {
script = "./provision/core/xcode.ps1"
environment_vars = [
"XCODE_INSTALL_STORAGE_URL=${var.xcode_install_storage_url}",
"XCODE_INSTALL_SAS=${var.xcode_install_sas}"
]
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} pwsh -f {{ .Path }}"
}
provisioner "shell" {
script = "./provision/core/reboot.sh"
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; sudo {{ .Vars }} {{ .Path }}"
expect_disconnect = true
}
provisioner "shell" {
scripts = [
"./provision/core/action-archive-cache.sh",
"./provision/core/llvm.sh",
"./provision/core/openjdk.sh",
"./provision/core/aws.sh",
"./provision/core/rust.sh",
"./provision/core/gcc.sh",
"./provision/core/cocoapods.sh",
"./provision/core/android-toolsets.sh",
"./provision/core/safari.sh",
"./provision/core/chrome.sh",
"./provision/core/bicep.sh",
"./provision/core/codeql-bundle.sh"
]
environment_vars = [
"API_PAT=${var.github_api_pat}"
]
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
}
provisioner "shell" {
script = "./provision/core/delete-duplicate-sims.rb"
execute_command = "source $HOME/.bash_profile; ruby {{ .Path }}"
}
provisioner "shell" {
inline = [
"pwsh -File \"$HOME/image-generation/software-report/SoftwareReport.Generator.ps1\" -OutputDirectory \"$HOME/image-generation/output/software-report\" -ImageName ${var.build_id}"
]
execute_command = "source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
}
provisioner "file" {
destination = "../image-output/"
direction = "download"
source = "./image-generation/output/"
}
provisioner "shell" {
scripts = [
"./provision/configuration/configure-hostname.sh"
]
execute_command = "chmod +x {{ .Path }}; source $HOME/.bash_profile; {{ .Vars }} {{ .Path }}"
}
}

View File

@@ -25,7 +25,7 @@ Describe "cmake" {
} }
} }
Describe "Subversion" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Subversion" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "Subversion" { It "Subversion" {
"svn --version" | Should -ReturnZeroExitCode "svn --version" | Should -ReturnZeroExitCode
} }
@@ -61,7 +61,7 @@ Describe "Perl" {
} }
} }
Describe "Helm" -Skip:($os.IsMonterey -or $os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Helm" -Skip:($os.IsMonterey -or $os.IsVentura -or $os.IsSonoma) {
It "Helm" { It "Helm" {
"helm version --short" | Should -ReturnZeroExitCode "helm version --short" | Should -ReturnZeroExitCode
} }
@@ -116,7 +116,7 @@ Describe "bazel" {
} }
} }
Describe "Aliyun CLI" -Skip:($os.IsMonterey -or $os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Aliyun CLI" -Skip:($os.IsMonterey -or $os.IsVentura -or $os.IsSonoma) {
It "Aliyun CLI" { It "Aliyun CLI" {
"aliyun --version" | Should -ReturnZeroExitCode "aliyun --version" | Should -ReturnZeroExitCode
} }
@@ -146,13 +146,13 @@ Describe "wget" {
} }
} }
Describe "vagrant" -Skip:($os.IsBigSur -or $os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "vagrant" -Skip:($os.IsBigSur -or $os.IsVentura -or $os.IsSonoma) {
It "vagrant" { It "vagrant" {
"vagrant --version" | Should -ReturnZeroExitCode "vagrant --version" | Should -ReturnZeroExitCode
} }
} }
Describe "virtualbox" -Skip:($os.IsBigSur -or $os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "virtualbox" -Skip:($os.IsBigSur -or $os.IsVentura -or $os.IsSonoma) {
It "virtualbox" { It "virtualbox" {
"vboxmanage -v" | Should -ReturnZeroExitCode "vboxmanage -v" | Should -ReturnZeroExitCode
} }
@@ -178,7 +178,7 @@ Describe "Kotlin" {
} }
} }
Describe "sbt" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "sbt" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "sbt" { It "sbt" {
"sbt -version" | Should -ReturnZeroExitCode "sbt -version" | Should -ReturnZeroExitCode
} }
@@ -190,7 +190,7 @@ Describe "yq" {
} }
} }
Describe "imagemagick" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "imagemagick" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "imagemagick" { It "imagemagick" {
"magick -version" | Should -ReturnZeroExitCode "magick -version" | Should -ReturnZeroExitCode
} }

View File

@@ -31,7 +31,7 @@ Describe "Chrome" {
Describe "Selenium server" { Describe "Selenium server" {
It "Selenium server" { It "Selenium server" {
$os = Get-OSVersion $os = Get-OSVersion
if ($os.IsVenturaArm64) { if ($os.IsArm64) {
$cellarPath = "/opt/homebrew/Cellar" $cellarPath = "/opt/homebrew/Cellar"
} else { } else {
$cellarPath = "/usr/local/Cellar" $cellarPath = "/usr/local/Cellar"
@@ -40,7 +40,7 @@ Describe "Selenium server" {
} }
} }
Describe "Edge" -Skip:($os.IsVenturaArm64) { Describe "Edge" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
It "Microsoft Edge" { It "Microsoft Edge" {
$edgeLocation = "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge" $edgeLocation = "/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge"
$edgeLocation | Should -Exist $edgeLocation | Should -Exist
@@ -52,7 +52,7 @@ Describe "Edge" -Skip:($os.IsVenturaArm64) {
} }
} }
Describe "Firefox" -Skip:($os.IsVenturaArm64) { Describe "Firefox" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
It "Firefox" { It "Firefox" {
$firefoxLocation = "/Applications/Firefox.app/Contents/MacOS/firefox" $firefoxLocation = "/Applications/Firefox.app/Contents/MacOS/firefox"
$firefoxLocation | Should -Exist $firefoxLocation | Should -Exist

View File

@@ -10,7 +10,7 @@ Describe ".NET" {
} }
Describe "GCC" { Describe "GCC" {
$testCases = Get-ToolsetValue -KeyPath gcc.versions | ForEach-Object { @{Version = $_} } $testCases = Get-ToolsetValue -KeyPath gcc.versions | ForEach-Object { @{Version = $_ } }
It "GCC <Version>" -TestCases $testCases { It "GCC <Version>" -TestCases $testCases {
param ( param (
@@ -33,7 +33,7 @@ Describe "GCC" {
} }
} }
Describe "vcpkg" -Skip:($os.IsVenturaArm64) { Describe "vcpkg" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
It "vcpkg" { It "vcpkg" {
"vcpkg version" | Should -ReturnZeroExitCode "vcpkg version" | Should -ReturnZeroExitCode
} }
@@ -58,7 +58,7 @@ Describe "AzCopy" {
} }
} }
Describe "Miniconda" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Miniconda" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "Conda" { It "Conda" {
Get-EnvironmentVariable "CONDA" | Should -Not -BeNullOrEmpty Get-EnvironmentVariable "CONDA" | Should -Not -BeNullOrEmpty
$condaBinPath = Join-Path $env:CONDA "bin" "conda" $condaBinPath = Join-Path $env:CONDA "bin" "conda"
@@ -66,7 +66,7 @@ Describe "Miniconda" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonom
} }
} }
Describe "Stack" -Skip:($os.IsVenturaArm64) { Describe "Stack" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
It "Stack" { It "Stack" {
"stack --version" | Should -ReturnZeroExitCode "stack --version" | Should -ReturnZeroExitCode
} }
@@ -78,7 +78,7 @@ Describe "CocoaPods" {
} }
} }
Describe "VSMac" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "VSMac" -Skip:($os.IsVentura -or $os.IsSonoma) {
$vsMacVersions = Get-ToolsetValue "xamarin.vsmac.versions" $vsMacVersions = Get-ToolsetValue "xamarin.vsmac.versions"
$defaultVSMacVersion = Get-ToolsetValue "xamarin.vsmac.default" $defaultVSMacVersion = Get-ToolsetValue "xamarin.vsmac.default"
@@ -105,7 +105,7 @@ Describe "VSMac" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) {
} }
} }
Describe "Swig" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Swig" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "Swig" { It "Swig" {
"swig -version" | Should -ReturnZeroExitCode "swig -version" | Should -ReturnZeroExitCode
} }
@@ -117,13 +117,13 @@ Describe "Bicep" {
} }
} }
Describe "Go" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Go" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "Go" { It "Go" {
"go version" | Should -ReturnZeroExitCode "go version" | Should -ReturnZeroExitCode
} }
} }
Describe "VirtualBox" -Skip:($os.IsBigSur -or $os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "VirtualBox" -Skip:($os.IsBigSur -or $os.IsVentura -or $os.IsSonoma) {
It "Check kext kernel modules" { It "Check kext kernel modules" {
kextstat | Out-String | Should -Match "org.virtualbox.kext" kextstat | Out-String | Should -Match "org.virtualbox.kext"
} }
@@ -141,7 +141,7 @@ Describe "CodeQL Bundle" {
} }
} }
Describe "Colima" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Colima" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "Colima" { It "Colima" {
"colima version" | Should -ReturnZeroExitCode "colima version" | Should -ReturnZeroExitCode
} }

View File

@@ -2,7 +2,7 @@ Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
$os = Get-OSVersion $os = Get-OSVersion
Describe "MongoDB" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "MongoDB" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "<ToolName>" -TestCases @( It "<ToolName>" -TestCases @(
@{ ToolName = "mongo" } @{ ToolName = "mongo" }
@{ ToolName = "mongod" } @{ ToolName = "mongod" }
@@ -12,7 +12,7 @@ Describe "MongoDB" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma)
} }
} }
Describe "PostgreSQL" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "PostgreSQL" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "PostgreSQL version should correspond to the version in the toolset" { It "PostgreSQL version should correspond to the version in the toolset" {
$toolsetVersion = Get-ToolsetValue 'postgresql.version' $toolsetVersion = Get-ToolsetValue 'postgresql.version'
# Client version # Client version

View File

@@ -1,7 +1,7 @@
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1" Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
$os = Get-OSVersion $os = Get-OSVersion
Describe "Haskell" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Haskell" -Skip:($os.IsVentura -or $os.IsSonoma) {
Context "GHCup" { Context "GHCup" {
It "GHCup" { It "GHCup" {
"ghcup --version" | Should -ReturnZeroExitCode "ghcup --version" | Should -ReturnZeroExitCode

View File

@@ -1,83 +1,83 @@
Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1" Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1" -DisableNameChecking Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1" -DisableNameChecking
$os = Get-OSVersion $os = Get-OSVersion
$arch = Get-Architecture $arch = Get-Architecture
function Get-NativeVersionFormat { function Get-NativeVersionFormat {
param($Version) param($Version)
if ($Version -in "8") { if ($Version -in "8") {
return "1.${Version}" return "1.${Version}"
} }
return $Version return $Version
} }
Describe "Java" { Describe "Java" {
BeforeAll { BeforeAll {
function Validate-JavaVersion { function Validate-JavaVersion {
param($JavaCommand, $ExpectedVersion) param($JavaCommand, $ExpectedVersion)
$commandResult = Get-CommandResult $JavaCommand $commandResult = Get-CommandResult $JavaCommand
$commandResult.ExitCode | Should -Be 0 $commandResult.ExitCode | Should -Be 0
$matchResult = $commandResult.Output | Select-String '^openjdk version \"([\d\._]+)\"' $matchResult = $commandResult.Output | Select-String '^openjdk version \"([\d\._]+)\"'
$matchResult.Matches.Success | Should -BeTrue $matchResult.Matches.Success | Should -BeTrue
$version = $matchResult.Matches.Groups[1].Value $version = $matchResult.Matches.Groups[1].Value
$version | Should -BeLike "${ExpectedVersion}*" $version | Should -BeLike "${ExpectedVersion}*"
} }
} }
$toolsetJava = Get-ToolsetValue "java" $toolsetJava = Get-ToolsetValue "java"
$defaultVersion = $toolsetJava.$arch.default $defaultVersion = $toolsetJava.$arch.default
$jdkVersions = $toolsetJava.$arch.versions $jdkVersions = $toolsetJava.$arch.versions
if ($os.IsVenturaArm64) { if ($os.IsArm64) {
$testCases = $jdkVersions | ForEach-Object { @{ Title = $_; Version = (Get-NativeVersionFormat $_); EnvVariable = "JAVA_HOME_${_}_arm64" } } $testCases = $jdkVersions | ForEach-Object { @{ Title = $_; Version = (Get-NativeVersionFormat $_); EnvVariable = "JAVA_HOME_${_}_arm64" } }
} else { } else {
$testCases = $jdkVersions | ForEach-Object { @{ Title = $_; Version = (Get-NativeVersionFormat $_); EnvVariable = "JAVA_HOME_${_}_X64" } } $testCases = $jdkVersions | ForEach-Object { @{ Title = $_; Version = (Get-NativeVersionFormat $_); EnvVariable = "JAVA_HOME_${_}_X64" } }
} }
$testCases += @{ Title = "Default"; Version = (Get-NativeVersionFormat $defaultVersion); EnvVariable = "JAVA_HOME" } $testCases += @{ Title = "Default"; Version = (Get-NativeVersionFormat $defaultVersion); EnvVariable = "JAVA_HOME" }
$testCases | ForEach-Object { $testCases | ForEach-Object {
Context $_.Title { Context $_.Title {
It "Version is found by 'java_home'" -TestCases $_ { It "Version is found by 'java_home'" -TestCases $_ {
"/usr/libexec/java_home -v${Version}" | Should -ReturnZeroExitCode "/usr/libexec/java_home -v${Version}" | Should -ReturnZeroExitCode
} }
It "Java <Version>" -TestCases $_ { It "Java <Version>" -TestCases $_ {
$envVariablePath = Get-EnvironmentVariable $EnvVariable $envVariablePath = Get-EnvironmentVariable $EnvVariable
$javaBinPath = Join-Path $envVariablePath "/bin/java" $javaBinPath = Join-Path $envVariablePath "/bin/java"
Validate-JavaVersion -JavaCommand "$javaBinPath -version" -ExpectedVersion $Version Validate-JavaVersion -JavaCommand "$javaBinPath -version" -ExpectedVersion $Version
} }
if ($_.Title -eq "Default") { if ($_.Title -eq "Default") {
It "Version is default" -TestCases $_ { It "Version is default" -TestCases $_ {
Validate-JavaVersion -JavaCommand "java -version" -ExpectedVersion $Version Validate-JavaVersion -JavaCommand "java -version" -ExpectedVersion $Version
} }
} }
} }
} }
Context "Maven" { Context "Maven" {
Describe "Maven" { Describe "Maven" {
It "Maven" { It "Maven" {
"mvn --version" | Should -ReturnZeroExitCode "mvn --version" | Should -ReturnZeroExitCode
} }
} }
} }
Context "Gradle" { Context "Gradle" {
Describe "Gradle" { Describe "Gradle" {
It "Gradle is installed" { It "Gradle is installed" {
"gradle --version" | Should -ReturnZeroExitCode "gradle --version" | Should -ReturnZeroExitCode
} }
It "Gradle is installed to /usr/local/bin" -Skip:($os.IsVenturaArm64) { It "Gradle is installed to /usr/local/bin" -Skip:($os.IsArm64) {
(Get-Command "gradle").Path | Should -BeExactly "/usr/local/bin/gradle" (Get-Command "gradle").Path | Should -BeExactly "/usr/local/bin/gradle"
} }
It "Gradle is installed to /opt/homebrew/bin/gradle" -Skip:(-not $os.IsVenturaArm64) { It "Gradle is installed to /opt/homebrew/bin/gradle" -Skip:(-not $os.IsArm64) {
(Get-Command "gradle").Path | Should -BeExactly "/opt/homebrew/bin/gradle" (Get-Command "gradle").Path | Should -BeExactly "/opt/homebrew/bin/gradle"
} }
} }
} }
} }

View File

@@ -2,8 +2,8 @@ Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1" -DisableNameChecking
$os = Get-OSVersion $os = Get-OSVersion
Describe "SwiftLint" -Skip:($os.IsVenturaArm64) { Describe "SwiftLint" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
It "SwiftLint" { It "SwiftLint" {
"swiftlint version" | Should -ReturnZeroExitCode "swiftlint version" | Should -ReturnZeroExitCode
} }
} }

View File

@@ -21,7 +21,7 @@ Describe "Node.js" {
} }
} }
Describe "nvm" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "nvm" -Skip:($os.IsVentura -or $os.IsSonoma) {
BeforeAll { BeforeAll {
$nvmPath = Join-Path $env:HOME ".nvm" "nvm.sh" $nvmPath = Join-Path $env:HOME ".nvm" "nvm.sh"
$nvmInitCommand = ". $nvmPath > /dev/null 2>&1 || true" $nvmInitCommand = ". $nvmPath > /dev/null 2>&1 || true"

View File

@@ -2,7 +2,7 @@ Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
$os = Get-OSVersion $os = Get-OSVersion
Describe "PHP" { Describe "PHP" {
Context "PHP" -Skip:($os.IsVenturaArm64) { Context "PHP" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
It "PHP Path" { It "PHP Path" {
Get-WhichTool "php" | Should -Not -BeLike "/usr/bin/php*" Get-WhichTool "php" | Should -Not -BeLike "/usr/bin/php*"
} }
@@ -13,7 +13,7 @@ Describe "PHP" {
} }
} }
Context "Composer" -Skip:($os.IsVenturaArm64) { Context "Composer" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
It "Composer" { It "Composer" {
"composer --version" | Should -ReturnZeroExitCode "composer --version" | Should -ReturnZeroExitCode
} }

View File

@@ -3,7 +3,7 @@ Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
$os = Get-OSVersion $os = Get-OSVersion
Describe "PipxPackages" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "PipxPackages" -Skip:($os.IsVentura -or $os.IsSonoma) {
$pipxToolset = Get-ToolsetValue "pipx" $pipxToolset = Get-ToolsetValue "pipx"
$testCases = $pipxToolset | ForEach-Object { @{package = $_.package; cmd = $_.cmd} } $testCases = $pipxToolset | ForEach-Object { @{package = $_.package; cmd = $_.cmd} }
It "<package>" -TestCases $testCases { It "<package>" -TestCases $testCases {

View File

@@ -3,7 +3,7 @@ Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1" -DisableNameChecking
$os = Get-OSVersion $os = Get-OSVersion
Describe "Python3" -Skip:($os.IsVenturaArm64) { Describe "Python3" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
It "Python 3 is available" { It "Python 3 is available" {
"python3 --version" | Should -ReturnZeroExitCode "python3 --version" | Should -ReturnZeroExitCode
} }
@@ -28,7 +28,7 @@ Describe "Python3" -Skip:($os.IsVenturaArm64) {
} }
Describe "Python2" -Skip:($os.IsVenturaArm64 -or $os.IsVentura -or $os.IsSonoma) { Describe "Python2" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "Python 2 is available" { It "Python 2 is available" {
"/Library/Frameworks/Python.framework/Versions/2.7/bin/python --version" | Should -ReturnZeroExitCode "/Library/Frameworks/Python.framework/Versions/2.7/bin/python --version" | Should -ReturnZeroExitCode
} }

View File

@@ -3,7 +3,7 @@ Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1" -DisableNameChecking
$os = Get-OSVersion $os = Get-OSVersion
Describe "Ruby" -Skip:($os.IsVentura -or $os.IsBigSur -or $os.IsMonterey -or $os.IsSonoma) { Describe "Ruby" -Skip:(-not $os.IsArm64) {
It "Ruby is available" { It "Ruby is available" {
"ruby --version" | Should -ReturnZeroExitCode "ruby --version" | Should -ReturnZeroExitCode
} }

View File

@@ -3,7 +3,7 @@ Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1" -DisableNameChecking
$os = Get-OSVersion $os = Get-OSVersion
Describe "Ruby" -Skip:($os.IsVenturaArm64) { Describe "Ruby" -Skip:($os.IsArm64) {
It "Ruby is available" { It "Ruby is available" {
"ruby --version" | Should -ReturnZeroExitCode "ruby --version" | Should -ReturnZeroExitCode
} }

View File

@@ -20,7 +20,7 @@ Describe "Bundler" {
} }
} }
Describe "Nomad shenzhen CLI" -Skip:($os.IsMonterey -or $os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Nomad shenzhen CLI" -Skip:($os.IsMonterey -or $os.IsVentura -or $os.IsSonoma) {
It "Nomad shenzhen CLI" { It "Nomad shenzhen CLI" {
"ipa --version" | Should -ReturnZeroExitCode "ipa --version" | Should -ReturnZeroExitCode
} }
@@ -38,7 +38,7 @@ Describe "xcpretty" {
} }
} }
Describe "jazzy" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "jazzy" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "jazzy" { It "jazzy" {
"jazzy --version" | Should -ReturnZeroExitCode "jazzy --version" | Should -ReturnZeroExitCode
} }

View File

@@ -17,7 +17,7 @@ Describe "Rust" {
"cargo --version" | Should -ReturnZeroExitCode "cargo --version" | Should -ReturnZeroExitCode
} }
} }
Context "Cargo dependencies" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Context "Cargo dependencies" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "bindgen" { It "bindgen" {
"bindgen --version" | Should -ReturnZeroExitCode "bindgen --version" | Should -ReturnZeroExitCode
} }

View File

@@ -25,7 +25,7 @@ Describe "Certificate" {
} }
} }
Describe "Audio device" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Audio device" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "Sox is installed" { It "Sox is installed" {
"sox --version" | Should -ReturnZeroExitCode "sox --version" | Should -ReturnZeroExitCode
} }

View File

@@ -57,7 +57,7 @@ Describe "Toolcache" {
} }
} }
Context "Ruby" -Skip:($os.IsVenturaArm64) { Context "Ruby" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
$rubyDirectory = Join-Path $toolcacheDirectory "Ruby" $rubyDirectory = Join-Path $toolcacheDirectory "Ruby"
$rubyPackage = $packages | Where-Object { $_.ToolName -eq "Ruby" } | Select-Object -First 1 $rubyPackage = $packages | Where-Object { $_.ToolName -eq "Ruby" } | Select-Object -First 1
$testCase = @{ RubyDirectory = $rubyDirectory } $testCase = @{ RubyDirectory = $rubyDirectory }
@@ -99,7 +99,7 @@ Describe "Toolcache" {
} }
} }
} }
Context "PyPy" -Skip:($os.IsVenturaArm64) { Context "PyPy" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
$pypyDirectory = Join-Path $toolcacheDirectory "PyPy" $pypyDirectory = Join-Path $toolcacheDirectory "PyPy"
$pypyPackage = $packages | Where-Object { $_.ToolName -eq "pypy" } | Select-Object -First 1 $pypyPackage = $packages | Where-Object { $_.ToolName -eq "pypy" } | Select-Object -First 1
$testCase = @{ PypyDirectory = $pypyDirectory } $testCase = @{ PypyDirectory = $pypyDirectory }
@@ -229,4 +229,4 @@ Describe "Toolcache" {
} }
} }
} }
} }

View File

@@ -2,7 +2,7 @@ Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
$os = Get-OSVersion $os = Get-OSVersion
Describe "Apache" -Skip:($os.IsVenturaArm64) { Describe "Apache" -Skip:($os.IsVenturaArm64 -or $os.IsSonomaArm64) {
It "Apache CLI" { It "Apache CLI" {
"httpd -v" | Should -ReturnZeroExitCode "httpd -v" | Should -ReturnZeroExitCode
} }
@@ -12,7 +12,7 @@ Describe "Apache" -Skip:($os.IsVenturaArm64) {
} }
} }
Describe "Nginx" -Skip:($os.IsVentura -or $os.IsVenturaArm64) { Describe "Nginx" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "Nginx CLI" { It "Nginx CLI" {
"nginx -v" | Should -ReturnZeroExitCode "nginx -v" | Should -ReturnZeroExitCode
} }

View File

@@ -2,7 +2,7 @@ Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1" -DisableNameChecking Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1" -DisableNameChecking
$os = Get-OSVersion $os = Get-OSVersion
if ($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { if ($os.IsVentura -or $os.IsSonoma) {
$MONO_VERSIONS = @(Get-ToolsetValue "mono.framework.version") $MONO_VERSIONS = @(Get-ToolsetValue "mono.framework.version")
$XAMARIN_IOS_VERSIONS = @() $XAMARIN_IOS_VERSIONS = @()
$XAMARIN_MAC_VERSIONS = @() $XAMARIN_MAC_VERSIONS = @()
@@ -89,7 +89,7 @@ Describe "Mono" {
} }
} }
Describe "Xamarin.iOS" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Xamarin.iOS" -Skip:($os.IsVentura -or $os.IsSonoma) {
$XAMARIN_IOS_VERSIONS | ForEach-Object { $XAMARIN_IOS_VERSIONS | ForEach-Object {
Context "$_" { Context "$_" {
$XAMARIN_IOS_VERSIONS_PATH = "/Library/Frameworks/Xamarin.iOS.framework/Versions" $XAMARIN_IOS_VERSIONS_PATH = "/Library/Frameworks/Xamarin.iOS.framework/Versions"
@@ -122,7 +122,7 @@ Describe "Xamarin.iOS" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSon
} }
} }
Describe "Xamarin.Mac" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Xamarin.Mac" -Skip:($os.IsVentura -or $os.IsSonoma) {
$XAMARIN_MAC_VERSIONS | ForEach-Object { $XAMARIN_MAC_VERSIONS | ForEach-Object {
Context "$_" { Context "$_" {
$XAMARIN_MAC_VERSIONS_PATH = "/Library/Frameworks/Xamarin.Mac.framework/Versions" $XAMARIN_MAC_VERSIONS_PATH = "/Library/Frameworks/Xamarin.Mac.framework/Versions"
@@ -155,7 +155,7 @@ Describe "Xamarin.Mac" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSon
} }
} }
Describe "Xamarin.Android" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Xamarin.Android" -Skip:($os.IsVentura -or $os.IsSonoma) {
$XAMARIN_ANDROID_VERSIONS | ForEach-Object { $XAMARIN_ANDROID_VERSIONS | ForEach-Object {
Context "$_" { Context "$_" {
$XAMARIN_ANDROID_VERSIONS_PATH = "/Library/Frameworks/Xamarin.Android.framework/Versions" $XAMARIN_ANDROID_VERSIONS_PATH = "/Library/Frameworks/Xamarin.Android.framework/Versions"
@@ -195,7 +195,7 @@ Describe "Xamarin.Android" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.I
} }
} }
Describe "Xamarin Bundles" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Xamarin Bundles" -Skip:($os.IsVentura -or $os.IsSonoma) {
BeforeAll { BeforeAll {
$MONO_VERSIONS_PATH = "/Library/Frameworks/Mono.framework/Versions" $MONO_VERSIONS_PATH = "/Library/Frameworks/Mono.framework/Versions"
$XAMARIN_IOS_VERSIONS_PATH = "/Library/Frameworks/Xamarin.iOS.framework/Versions" $XAMARIN_IOS_VERSIONS_PATH = "/Library/Frameworks/Xamarin.iOS.framework/Versions"
@@ -302,7 +302,7 @@ Describe "Xamarin Bundles" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.I
} }
} }
Describe "Nuget" -Skip:($os.IsVentura -or $os.IsVenturaArm64 -or $os.IsSonoma) { Describe "Nuget" -Skip:($os.IsVentura -or $os.IsSonoma) {
It "Nuget config contains nuget.org feed" { It "Nuget config contains nuget.org feed" {
Get-Content $env:HOME/.config/NuGet/NuGet.Config | Out-String | Should -Match "nuget.org" Get-Content $env:HOME/.config/NuGet/NuGet.Config | Out-String | Should -Match "nuget.org"
} }