[macOS] Add java to the macOS 13 arm64 (#8395)

This commit is contained in:
Alexey-Ayupov
2023-10-05 12:42:16 +02:00
committed by GitHub
parent 8d1fc7309c
commit 60963fb52e
6 changed files with 65 additions and 24 deletions
+28 -3
View File
@@ -5,15 +5,24 @@ createEnvironmentVariable() {
local JAVA_VERSION=$1 local JAVA_VERSION=$1
local DEFAULT=$2 local DEFAULT=$2
if [[ $arch == "arm64" ]]; then
INSTALL_PATH_PATTERN=$(echo ${AGENT_TOOLSDIRECTORY}/Java_Temurin-Hotspot_jdk/${JAVA_VERSION}*/arm64/Contents/Home/)
else
INSTALL_PATH_PATTERN=$(echo ${AGENT_TOOLSDIRECTORY}/Java_Temurin-Hotspot_jdk/${JAVA_VERSION}*/x64/Contents/Home/) INSTALL_PATH_PATTERN=$(echo ${AGENT_TOOLSDIRECTORY}/Java_Temurin-Hotspot_jdk/${JAVA_VERSION}*/x64/Contents/Home/)
fi
if [[ ${DEFAULT} == "True" ]]; then if [[ ${DEFAULT} == "True" ]]; then
echo "Setting up JAVA_HOME variable to ${INSTALL_PATH_PATTERN}" echo "Setting up JAVA_HOME variable to ${INSTALL_PATH_PATTERN}"
echo "export JAVA_HOME=${INSTALL_PATH_PATTERN}" >> "${HOME}/.bashrc" echo "export JAVA_HOME=${INSTALL_PATH_PATTERN}" >> "${HOME}/.bashrc"
fi fi
if [[ $arch == "arm64" ]]; then
echo "Setting up JAVA_HOME_${JAVA_VERSION}_arm64 variable to ${INSTALL_PATH_PATTERN}"
echo "export JAVA_HOME_${JAVA_VERSION}_arm64=${INSTALL_PATH_PATTERN}" >> "${HOME}/.bashrc"
else
echo "Setting up JAVA_HOME_${JAVA_VERSION}_X64 variable to ${INSTALL_PATH_PATTERN}" echo "Setting up JAVA_HOME_${JAVA_VERSION}_X64 variable to ${INSTALL_PATH_PATTERN}"
echo "export JAVA_HOME_${JAVA_VERSION}_X64=${INSTALL_PATH_PATTERN}" >> "${HOME}/.bashrc" echo "export JAVA_HOME_${JAVA_VERSION}_X64=${INSTALL_PATH_PATTERN}" >> "${HOME}/.bashrc"
fi
} }
installOpenJDK() { installOpenJDK() {
@@ -22,14 +31,23 @@ installOpenJDK() {
# Get link for Java binaries and Java version # Get link for Java binaries and Java version
assetUrl=$(curl -fsSL "https://api.adoptium.net/v3/assets/latest/${JAVA_VERSION}/hotspot") assetUrl=$(curl -fsSL "https://api.adoptium.net/v3/assets/latest/${JAVA_VERSION}/hotspot")
if [[ $arch == "arm64" ]]; then
asset=$(echo ${assetUrl} | jq -r '.[] | select(.binary.os=="mac" and .binary.image_type=="jdk" and .binary.architecture=="aarch64")')
else
asset=$(echo ${assetUrl} | jq -r '.[] | select(.binary.os=="mac" and .binary.image_type=="jdk" and .binary.architecture=="x64")') asset=$(echo ${assetUrl} | jq -r '.[] | select(.binary.os=="mac" and .binary.image_type=="jdk" and .binary.architecture=="x64")')
fi
archivePath=$(echo ${asset} | jq -r '.binary.package.link') archivePath=$(echo ${asset} | jq -r '.binary.package.link')
fullVersion=$(echo ${asset} | jq -r '.version.semver' | tr '+' '-') fullVersion=$(echo ${asset} | jq -r '.version.semver' | tr '+' '-')
JAVA_TOOLCACHE_PATH=${AGENT_TOOLSDIRECTORY}/Java_Temurin-Hotspot_jdk JAVA_TOOLCACHE_PATH=${AGENT_TOOLSDIRECTORY}/Java_Temurin-Hotspot_jdk
javaToolcacheVersionPath=$JAVA_TOOLCACHE_PATH/${fullVersion} javaToolcacheVersionPath=$JAVA_TOOLCACHE_PATH/${fullVersion}
if [[ $arch == "arm64" ]]; then
javaToolcacheVersionArchPath=${javaToolcacheVersionPath}/arm64
else
javaToolcacheVersionArchPath=${javaToolcacheVersionPath}/x64 javaToolcacheVersionArchPath=${javaToolcacheVersionPath}/x64
fi
# Download and extract Java binaries # Download and extract Java binaries
download_with_retries ${archivePath} /tmp OpenJDK-${fullVersion}.tar.gz download_with_retries ${archivePath} /tmp OpenJDK-${fullVersion}.tar.gz
@@ -38,16 +56,23 @@ installOpenJDK() {
mkdir -p ${javaToolcacheVersionArchPath} mkdir -p ${javaToolcacheVersionArchPath}
tar -xf /tmp/OpenJDK-${fullVersion}.tar.gz -C ${javaToolcacheVersionArchPath} --strip-components=1 tar -xf /tmp/OpenJDK-${fullVersion}.tar.gz -C ${javaToolcacheVersionArchPath} --strip-components=1
# Create complete file # Create complete file
if [[ $arch == "arm64" ]]; then
touch ${javaToolcacheVersionPath}/arm64.complete
else
touch ${javaToolcacheVersionPath}/x64.complete touch ${javaToolcacheVersionPath}/x64.complete
fi
# Create a symlink to '/Library/Java/JavaVirtualMachines' # Create a symlink to '/Library/Java/JavaVirtualMachines'
# so '/usr/libexec/java_home' will be able to find Java # so '/usr/libexec/java_home' will be able to find Java
sudo ln -sf ${javaToolcacheVersionArchPath} /Library/Java/JavaVirtualMachines/Temurin-Hotspot-${JAVA_VERSION}.jdk sudo ln -sf ${javaToolcacheVersionArchPath} /Library/Java/JavaVirtualMachines/Temurin-Hotspot-${JAVA_VERSION}.jdk
} }
defaultVersion=$(get_toolset_value '.java.default') arch=$(get_arch)
jdkVersionsToInstall=($(get_toolset_value ".java.versions[]")) echo $arch
defaultVersion=$(get_toolset_value '.java.'$arch'.default')
jdkVersionsToInstall=($(get_toolset_value ".java.${arch}.versions[]"))
for jdkVersionToInstall in ${jdkVersionsToInstall[@]}; do for jdkVersionToInstall in ${jdkVersionsToInstall[@]}; do
installOpenJDK ${jdkVersionToInstall} installOpenJDK ${jdkVersionToInstall}
@@ -100,9 +100,9 @@ if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64)) {
# Project Management # Project Management
$projectManagement = $installedSoftware.AddHeader("Project Management") $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("Gradle", $(Get-GradleVersion))
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64)) { if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64)) {
$projectManagement.AddToolVersion("Apache Maven", $(Get-MavenVersion))
$projectManagement.AddToolVersion("Gradle", $(Get-GradleVersion))
$projectManagement.AddToolVersion("Sbt", $(Get-SbtVersion)) $projectManagement.AddToolVersion("Sbt", $(Get-SbtVersion))
} }
@@ -195,6 +195,7 @@ build {
provisioner "shell" { provisioner "shell" {
scripts = [ scripts = [
"./provision/core/llvm.sh", "./provision/core/llvm.sh",
"./provision/core/openjdk.sh",
"./provision/core/rust.sh", "./provision/core/rust.sh",
"./provision/core/gcc.sh", "./provision/core/gcc.sh",
"./provision/core/cocoapods.sh", "./provision/core/cocoapods.sh",
+13 -4
View File
@@ -2,6 +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
$arch = Get-Architecture
function Get-NativeVersionFormat { function Get-NativeVersionFormat {
param($Version) param($Version)
@@ -11,7 +12,7 @@ function Get-NativeVersionFormat {
return $Version return $Version
} }
Describe "Java" -Skip:($os.IsVenturaArm64) { Describe "Java" {
BeforeAll { BeforeAll {
function Validate-JavaVersion { function Validate-JavaVersion {
param($JavaCommand, $ExpectedVersion) param($JavaCommand, $ExpectedVersion)
@@ -26,10 +27,14 @@ Describe "Java" -Skip:($os.IsVenturaArm64) {
} }
$toolsetJava = Get-ToolsetValue "java" $toolsetJava = Get-ToolsetValue "java"
$defaultVersion = $toolsetJava.default $defaultVersion = $toolsetJava.$arch.default
$jdkVersions = $toolsetJava.versions $jdkVersions = $toolsetJava.$arch.versions
if ($os.IsVenturaArm64) {
$testCases = $jdkVersions | ForEach-Object { @{ Title = $_; Version = (Get-NativeVersionFormat $_); EnvVariable = "JAVA_HOME_${_}_arm64" } }
} 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 {
@@ -66,9 +71,13 @@ Describe "Java" -Skip:($os.IsVenturaArm64) {
"gradle --version" | Should -ReturnZeroExitCode "gradle --version" | Should -ReturnZeroExitCode
} }
It "Gradle is installed to /usr/local/bin" { It "Gradle is installed to /usr/local/bin" -Skip:($os.IsVenturaArm64) {
(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:($os.IsVentura) {
(Get-Command "gradle").Path | Should -BeExactly "/opt/homebrew/bin/gradle"
}
} }
} }
} }
+6
View File
@@ -19,9 +19,15 @@
} }
}, },
"java": { "java": {
"x64": {
"default": "17", "default": "17",
"versions": [ "8", "11", "17" ] "versions": [ "8", "11", "17" ]
}, },
"arm64": {
"default": "17",
"versions": [ "11", "17" ]
}
},
"android": { "android": {
"platform_min_version": "27", "platform_min_version": "27",
"build_tools_min_version": "27.0.0", "build_tools_min_version": "27.0.0",