[macOS] Add java to the macOS 13 arm64 (#8395)
This commit is contained in:
@@ -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))
|
||||||
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64)) {
|
|
||||||
$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)) {
|
||||||
$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",
|
||||||
|
|||||||
@@ -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"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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",
|
||||||
|
|||||||
Reference in New Issue
Block a user