Skip to content

Commit 60963fb

Browse files
[macOS] Add java to the macOS 13 arm64 (#8395)
1 parent 8d1fc73 commit 60963fb

File tree

6 files changed

+65
-24
lines changed

6 files changed

+65
-24
lines changed

images/macos/provision/core/openjdk.sh

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,24 @@ createEnvironmentVariable() {
55
local JAVA_VERSION=$1
66
local DEFAULT=$2
77

8-
INSTALL_PATH_PATTERN=$(echo ${AGENT_TOOLSDIRECTORY}/Java_Temurin-Hotspot_jdk/${JAVA_VERSION}*/x64/Contents/Home/)
8+
if [[ $arch == "arm64" ]]; then
9+
INSTALL_PATH_PATTERN=$(echo ${AGENT_TOOLSDIRECTORY}/Java_Temurin-Hotspot_jdk/${JAVA_VERSION}*/arm64/Contents/Home/)
10+
else
11+
INSTALL_PATH_PATTERN=$(echo ${AGENT_TOOLSDIRECTORY}/Java_Temurin-Hotspot_jdk/${JAVA_VERSION}*/x64/Contents/Home/)
12+
fi
913

1014
if [[ ${DEFAULT} == "True" ]]; then
1115
echo "Setting up JAVA_HOME variable to ${INSTALL_PATH_PATTERN}"
1216
echo "export JAVA_HOME=${INSTALL_PATH_PATTERN}" >> "${HOME}/.bashrc"
1317
fi
1418

15-
echo "Setting up JAVA_HOME_${JAVA_VERSION}_X64 variable to ${INSTALL_PATH_PATTERN}"
16-
echo "export JAVA_HOME_${JAVA_VERSION}_X64=${INSTALL_PATH_PATTERN}" >> "${HOME}/.bashrc"
19+
if [[ $arch == "arm64" ]]; then
20+
echo "Setting up JAVA_HOME_${JAVA_VERSION}_arm64 variable to ${INSTALL_PATH_PATTERN}"
21+
echo "export JAVA_HOME_${JAVA_VERSION}_arm64=${INSTALL_PATH_PATTERN}" >> "${HOME}/.bashrc"
22+
else
23+
echo "Setting up JAVA_HOME_${JAVA_VERSION}_X64 variable to ${INSTALL_PATH_PATTERN}"
24+
echo "export JAVA_HOME_${JAVA_VERSION}_X64=${INSTALL_PATH_PATTERN}" >> "${HOME}/.bashrc"
25+
fi
1726
}
1827

1928
installOpenJDK() {
@@ -22,36 +31,52 @@ installOpenJDK() {
2231
# Get link for Java binaries and Java version
2332
assetUrl=$(curl -fsSL "https://api.adoptium.net/v3/assets/latest/${JAVA_VERSION}/hotspot")
2433

25-
asset=$(echo ${assetUrl} | jq -r '.[] | select(.binary.os=="mac" and .binary.image_type=="jdk" and .binary.architecture=="x64")')
34+
if [[ $arch == "arm64" ]]; then
35+
asset=$(echo ${assetUrl} | jq -r '.[] | select(.binary.os=="mac" and .binary.image_type=="jdk" and .binary.architecture=="aarch64")')
36+
else
37+
asset=$(echo ${assetUrl} | jq -r '.[] | select(.binary.os=="mac" and .binary.image_type=="jdk" and .binary.architecture=="x64")')
38+
fi
39+
2640
archivePath=$(echo ${asset} | jq -r '.binary.package.link')
2741
fullVersion=$(echo ${asset} | jq -r '.version.semver' | tr '+' '-')
2842

2943
JAVA_TOOLCACHE_PATH=${AGENT_TOOLSDIRECTORY}/Java_Temurin-Hotspot_jdk
30-
3144
javaToolcacheVersionPath=$JAVA_TOOLCACHE_PATH/${fullVersion}
32-
javaToolcacheVersionArchPath=${javaToolcacheVersionPath}/x64
45+
46+
if [[ $arch == "arm64" ]]; then
47+
javaToolcacheVersionArchPath=${javaToolcacheVersionPath}/arm64
48+
else
49+
javaToolcacheVersionArchPath=${javaToolcacheVersionPath}/x64
50+
fi
3351

3452
# Download and extract Java binaries
3553
download_with_retries ${archivePath} /tmp OpenJDK-${fullVersion}.tar.gz
36-
54+
3755
echo "Creating ${javaToolcacheVersionArchPath} directory"
3856
mkdir -p ${javaToolcacheVersionArchPath}
3957

4058
tar -xf /tmp/OpenJDK-${fullVersion}.tar.gz -C ${javaToolcacheVersionArchPath} --strip-components=1
59+
4160
# Create complete file
42-
touch ${javaToolcacheVersionPath}/x64.complete
61+
if [[ $arch == "arm64" ]]; then
62+
touch ${javaToolcacheVersionPath}/arm64.complete
63+
else
64+
touch ${javaToolcacheVersionPath}/x64.complete
65+
fi
4366

4467
# Create a symlink to '/Library/Java/JavaVirtualMachines'
4568
# so '/usr/libexec/java_home' will be able to find Java
4669
sudo ln -sf ${javaToolcacheVersionArchPath} /Library/Java/JavaVirtualMachines/Temurin-Hotspot-${JAVA_VERSION}.jdk
4770
}
4871

49-
defaultVersion=$(get_toolset_value '.java.default')
50-
jdkVersionsToInstall=($(get_toolset_value ".java.versions[]"))
72+
arch=$(get_arch)
73+
echo $arch
74+
defaultVersion=$(get_toolset_value '.java.'$arch'.default')
75+
jdkVersionsToInstall=($(get_toolset_value ".java.${arch}.versions[]"))
5176

5277
for jdkVersionToInstall in ${jdkVersionsToInstall[@]}; do
5378
installOpenJDK ${jdkVersionToInstall}
54-
79+
5580
if [[ ${jdkVersionToInstall} == ${defaultVersion} ]]
5681
then
5782
createEnvironmentVariable ${jdkVersionToInstall} True

images/macos/software-report/SoftwareReport.Generator.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64)) {
100100
# Project Management
101101
$projectManagement = $installedSoftware.AddHeader("Project Management")
102102
$projectManagement.AddToolVersion("Apache Ant", $(Get-ApacheAntVersion))
103+
$projectManagement.AddToolVersion("Apache Maven", $(Get-MavenVersion))
104+
$projectManagement.AddToolVersion("Gradle", $(Get-GradleVersion))
103105
if ((-not $os.IsVentura) -and (-not $os.IsVenturaArm64)) {
104-
$projectManagement.AddToolVersion("Apache Maven", $(Get-MavenVersion))
105-
$projectManagement.AddToolVersion("Gradle", $(Get-GradleVersion))
106106
$projectManagement.AddToolVersion("Sbt", $(Get-SbtVersion))
107107
}
108108

images/macos/templates/macOS-13.arm64.anka.pkr.hcl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ build {
195195
provisioner "shell" {
196196
scripts = [
197197
"./provision/core/llvm.sh",
198+
"./provision/core/openjdk.sh",
198199
"./provision/core/rust.sh",
199200
"./provision/core/gcc.sh",
200201
"./provision/core/cocoapods.sh",

images/macos/tests/Java.Tests.ps1

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
22
Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1" -DisableNameChecking
33

44
$os = Get-OSVersion
5+
$arch = Get-Architecture
56

67
function Get-NativeVersionFormat {
78
param($Version)
@@ -11,7 +12,7 @@ function Get-NativeVersionFormat {
1112
return $Version
1213
}
1314

14-
Describe "Java" -Skip:($os.IsVenturaArm64) {
15+
Describe "Java" {
1516
BeforeAll {
1617
function Validate-JavaVersion {
1718
param($JavaCommand, $ExpectedVersion)
@@ -26,10 +27,14 @@ Describe "Java" -Skip:($os.IsVenturaArm64) {
2627
}
2728

2829
$toolsetJava = Get-ToolsetValue "java"
29-
$defaultVersion = $toolsetJava.default
30-
$jdkVersions = $toolsetJava.versions
30+
$defaultVersion = $toolsetJava.$arch.default
31+
$jdkVersions = $toolsetJava.$arch.versions
3132

32-
$testCases = $jdkVersions | ForEach-Object { @{ Title = $_; Version = (Get-NativeVersionFormat $_); EnvVariable = "JAVA_HOME_${_}_X64" } }
33+
if ($os.IsVenturaArm64) {
34+
$testCases = $jdkVersions | ForEach-Object { @{ Title = $_; Version = (Get-NativeVersionFormat $_); EnvVariable = "JAVA_HOME_${_}_arm64" } }
35+
} else {
36+
$testCases = $jdkVersions | ForEach-Object { @{ Title = $_; Version = (Get-NativeVersionFormat $_); EnvVariable = "JAVA_HOME_${_}_X64" } }
37+
}
3338
$testCases += @{ Title = "Default"; Version = (Get-NativeVersionFormat $defaultVersion); EnvVariable = "JAVA_HOME" }
3439

3540
$testCases | ForEach-Object {
@@ -59,16 +64,20 @@ Describe "Java" -Skip:($os.IsVenturaArm64) {
5964
}
6065
}
6166
}
62-
67+
6368
Context "Gradle" {
6469
Describe "Gradle" {
6570
It "Gradle is installed" {
6671
"gradle --version" | Should -ReturnZeroExitCode
6772
}
68-
69-
It "Gradle is installed to /usr/local/bin" {
73+
74+
It "Gradle is installed to /usr/local/bin" -Skip:($os.IsVenturaArm64) {
7075
(Get-Command "gradle").Path | Should -BeExactly "/usr/local/bin/gradle"
7176
}
77+
78+
It "Gradle is installed to /opt/homebrew/bin/gradle" -Skip:($os.IsVentura) {
79+
(Get-Command "gradle").Path | Should -BeExactly "/opt/homebrew/bin/gradle"
80+
}
7281
}
7382
}
74-
}
83+
}

images/macos/tests/Xamarin.Tests.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ Import-Module "$PSScriptRoot/../helpers/Common.Helpers.psm1"
22
Import-Module "$PSScriptRoot/../helpers/Tests.Helpers.psm1" -DisableNameChecking
33

44
$os = Get-OSVersion
5-
if ($os.IsVentura -or $os.IsVenturaArm64) {
5+
if ($os.IsVentura -or $os.IsVenturaArm64) {
66
$MONO_VERSIONS = @(Get-ToolsetValue "mono.framework.version")
77
$XAMARIN_IOS_VERSIONS = @()
88
$XAMARIN_MAC_VERSIONS = @()

images/macos/toolsets/toolset-13.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,14 @@
1919
}
2020
},
2121
"java": {
22-
"default": "17",
23-
"versions": [ "8", "11", "17" ]
22+
"x64": {
23+
"default": "17",
24+
"versions": [ "8", "11", "17" ]
25+
},
26+
"arm64": {
27+
"default": "17",
28+
"versions": [ "11", "17" ]
29+
}
2430
},
2531
"android": {
2632
"platform_min_version": "27",

0 commit comments

Comments
 (0)