Skip to content

Commit fd9df7c

Browse files
grendellojonpryor
authored andcommitted
[ci] Install JetBrains OpenJDK 8, 11
Context: #4567 We want to support using OpenJDK 11 to build Xamarin.Android projects. For better or worse, we can't "change the entire world," not all at once. In particular, the Android Designer Integration Tests do not currently support building with or running under JDK 11. "Split the difference", kind of: Instead of installing Corretto JDK 8 into `$HOME/android-toolchain/jdk`, install JetBrains OpenJDK 8 and 11 into the new paths: * `$HOME/android-toolchain/jdk-1.8` * `$HOME/android-toolchain/jdk-11` We will continue *using* JDK 1.8 by default, until PR #4567 is ready to completely merge, at which point we'll use JDK 11 to build Xamarin.Android, while continuing to use JDK 1.8 with the Designer.
1 parent f52e89f commit fd9df7c

20 files changed

+410
-229
lines changed

build-tools/automation/azure-pipelines-oss.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ pr:
1717
# Predefined variables: https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml
1818
# https://dev.azure.com/xamarin/public/_apps/hub/ms.vss-ciworkflow.build-ci-hub?_a=edit-build-definition&id=48&view=Tab_Variables
1919
variables:
20+
XA.Jdk.Folder: jdk-1.8
2021
XA.Build.MacOSSPool: VSEng-Xamarin-RedmondMacMojaveBuildPool-Android-OSS
2122
XA.Build.LinuxOSSPool: Xamarin-Android-Ubuntu-Public
2223

@@ -157,7 +158,7 @@ stages:
157158
- script: echo "##vso[task.setvariable variable=HOME]$(Agent.HomeDirectory)"
158159
displayName: set HOME to agent directory
159160

160-
- script: echo "##vso[task.setvariable variable=PATH]$PATH:$(Agent.HomeDirectory)/android-toolchain/jdk/bin"
161+
- script: echo "##vso[task.setvariable variable=PATH]$PATH:$(Agent.HomeDirectory)/android-toolchain/$(XA.Jdk.Folder)/bin"
161162
displayName: append jdk tools to PATH
162163

163164
- script: make jenkins V=1 PREPARE_CI_PR=1 PREPARE_AUTOPROVISION=1 CONFIGURATION=$(XA.Build.Configuration)

build-tools/automation/azure-pipelines.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ resources:
4444

4545
# Global variables
4646
variables:
47+
XA.Jdk.Folder: jdk-1.8
4748
NuGetArtifactName: nupkgs
4849
InstallerArtifactName: installers
4950
TestAssembliesArtifactName: test-assemblies
@@ -96,7 +97,7 @@ stages:
9697
- checkout: self
9798
submodules: recursive
9899

99-
- script: echo "##vso[task.setvariable variable=JAVA_HOME]$HOME/Library/Android/jdk"
100+
- script: echo "##vso[task.setvariable variable=JAVA_HOME]$HOME/Library/Android/$(XA.Jdk.Folder)"
100101
displayName: set JAVA_HOME
101102

102103
- template: yaml-templates/use-dot-net.yaml

build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.Linux.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ namespace Xamarin.Android.Prepare
44
{
55
partial class Configurables
66
{
7+
const string JetBrainsOpenJDKOperatingSystem = "linux-x64";
8+
79
partial class Urls
810
{
911
public static readonly Uri Corretto = new Uri ($"{Corretto_BaseUri}{CorrettoUrlPathVersion}/amazon-corretto-{CorrettoDistVersion}-linux-x64.tar.gz");

build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.MacOS.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@ namespace Xamarin.Android.Prepare
44
{
55
partial class Configurables
66
{
7-
partial class Urls
8-
{
9-
public static readonly Uri Corretto = new Uri ($"{Corretto_BaseUri}{CorrettoUrlPathVersion}/amazon-corretto-{CorrettoDistVersion}-macosx-x64.tar.gz");
10-
}
7+
const string JetBrainsOpenJDKOperatingSystem = "osx-x64";
118

129
partial class Defaults
1310
{

build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.Windows.cs

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,11 @@ namespace Xamarin.Android.Prepare
55
{
66
partial class Configurables
77
{
8-
partial class Urls
9-
{
10-
public static Uri Corretto => GetWindowsCorrettoUrl ();
11-
12-
public static readonly Uri Corretto64 = new Uri ($"{Corretto_BaseUri}{CorrettoUrlPathVersion}/amazon-corretto-{CorrettoDistVersion}-windows-x64-jdk.zip");
13-
public static readonly Uri Corretto32 = new Uri ($"{Corretto_BaseUri}{CorrettoUrlPathVersion}/amazon-corretto-{CorrettoDistVersion}-windows-x86-jdk.zip");
14-
15-
static Uri GetWindowsCorrettoUrl ()
16-
{
17-
if (Context.Instance.OS == null)
18-
return Corretto64;
19-
20-
return Context.Instance.OS.Is64Bit ? Corretto64 : Corretto32;
21-
}
22-
}
8+
const string JetBrainsOpenJDKOperatingSystem = "windows-x64";
239

2410
partial class Defaults
2511
{
2612
public const string NativeLibraryExtension = ".dll";
27-
public static readonly Version CorrettoVersion = Version.Parse (CorrettoDistVersion);
2813
}
2914

3015
partial class Paths

build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.cs

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,30 @@ namespace Xamarin.Android.Prepare
1515
//
1616
partial class Configurables
1717
{
18+
const string JetBrainsOpenJDK11Version = "11.0.4";
19+
const string JetBrainsOpenJDK11Release = "546.1";
20+
static readonly string JetBrainsOpenJDK11DownloadVersion = JetBrainsOpenJDK11Version.Replace ('.', '_');
21+
22+
const string JetBrainsOpenJDK8Version = "8.202";
23+
const string JetBrainsOpenJDK8Release = "1483.37";
24+
static readonly string JetBrainsOpenJDK8DownloadVersion = JetBrainsOpenJDK8Version.Replace ('.', 'u');
25+
1826
const string CorrettoDistVersion = "8.242.08.1";
1927
const string CorrettoUrlPathVersion = CorrettoDistVersion;
2028

2129
static Context ctx => Context.Instance;
2230

2331
public static partial class Urls
2432
{
25-
// Keep the trailing slash here - OS-specific code assumes it's there.
26-
public const string Corretto_BaseUri = "https://corretto.aws/downloads/resources/";
33+
// https://bintray.com/jetbrains/intellij-jdk/download_file?file_path=jbrsdk-8u202-linux-x64-b1483.37.tar.gz
34+
// https://bintray.com/jetbrains/intellij-jdk/download_file?file_path=jbrsdk-8u202-osx-x64-b1483.37.tar.gz
35+
// https://bintray.com/jetbrains/intellij-jdk/download_file?file_path=jbrsdk-8u202-windows-x64-b1483.37.tar.gz
36+
public static readonly Uri JetBrainsOpenJDK8 = new Uri ($"https://bintray.com/jetbrains/intellij-jdk/download_file?file_path=jbrsdk-{JetBrainsOpenJDK8DownloadVersion}-{JetBrainsOpenJDKOperatingSystem}-b{JetBrainsOpenJDK8Release}.tar.gz");
37+
38+
// https://bintray.com/jetbrains/intellij-jdk/download_file?file_path=jbrsdk-11_0_4-linux-x64-b546.1.tar.gz
39+
// https://bintray.com/jetbrains/intellij-jdk/download_file?file_path=jbrsdk-11_0_4-osx-x64-b546.1.tar.gz
40+
// https://bintray.com/jetbrains/intellij-jdk/download_file?file_path=jbrsdk-11_0_4-windows-x64-b546.1.tar.gz
41+
public static readonly Uri JetBrainsOpenJDK11 = new Uri ($"https://bintray.com/jetbrains/intellij-jdk/download_file?file_path=jbrsdk-{JetBrainsOpenJDK11DownloadVersion}-{JetBrainsOpenJDKOperatingSystem}-b{JetBrainsOpenJDK11Release}.tar.gz");
2742

2843
/// <summary>
2944
/// Base URL for all Android SDK and NDK downloads. Used in <see cref="AndroidToolchain"/>
@@ -39,6 +54,14 @@ public static partial class Defaults
3954
{
4055
public static readonly char[] PropertyListSeparator = new [] { ':' };
4156

57+
public static readonly string JdkFolder = "jdk-1.8";
58+
59+
public static readonly Version JetBrainsOpenJDK11Version = new Version (Configurables.JetBrainsOpenJDK11Version);
60+
public static readonly Version JetBrainsOpenJDK11Release = new Version (Configurables.JetBrainsOpenJDK11Release);
61+
62+
public static readonly Version JetBrainsOpenJDK8Version = new Version (Configurables.JetBrainsOpenJDK8Version);
63+
public static readonly Version JetBrainsOpenJDK8Release = new Version (Configurables.JetBrainsOpenJDK8Release);
64+
4265
// Mono runtimes
4366
public const string DebugFileExtension = ".pdb";
4467
public const string MonoHostMingwRuntimeNativeLibraryExtension = WindowsDLLSuffix;
@@ -104,9 +127,9 @@ public static partial class Defaults
104127
public const int DefaultMaximumParallelTasks = 5;
105128

106129
/// <summary>
107-
/// The maximum JDK version we support. Note: this will probably go away with Corretto
130+
/// The maximum JDK version we support.
108131
/// </summary>
109-
public const int MaxJDKVersion = 8;
132+
public static readonly Version MaxJDKVersion = new Version (11, 99, 0);
110133

111134
/// <summary>
112135
/// Prefix for all the log files created by the bootstrapper.
@@ -314,10 +337,12 @@ public static partial class Paths
314337
public static string Mingw32CmakePath => GetCachedPath (ref mingw32CmakePath, () => Path.Combine (BuildBinDir, "mingw-32.cmake"));
315338
public static string Mingw64CmakePath => GetCachedPath (ref mingw64CmakePath, () => Path.Combine (BuildBinDir, "mingw-64.cmake"));
316339

317-
// Corretto OpenJDK
318-
public static string CorrettoCacheDir => GetCachedPath (ref correttoCacheDir, () => ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainCacheDirectory));
319-
public static string CorrettoInstallDir => GetCachedPath (ref correttoInstallDir, () => Path.Combine (ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainDirectory), "jdk"));
340+
// JetBrains OpenJDK
341+
public static string OpenJDK8InstallDir => GetCachedPath (ref openJDK8InstallDir, () => Path.Combine (ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainDirectory), "jdk-1.8"));
342+
public static string OpenJDK8CacheDir => GetCachedPath (ref openJDK8CacheDir, () => ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainCacheDirectory));
320343

344+
public static string OpenJDK11InstallDir => GetCachedPath (ref openJDK11InstallDir, () => Path.Combine (ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainDirectory), "jdk-11"));
345+
public static string OpenJDK11CacheDir => GetCachedPath (ref openJDK11CacheDir, () => ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainCacheDirectory));
321346
// bundle
322347
public static string BCLTestsArchiveName = "bcl-tests.zip";
323348

@@ -403,6 +428,8 @@ static string GetCachedPath (ref string? variable, Func<string> creator)
403428
static string? monoSdksTpnExternalPath;
404429
static string? monoSDKSIncludeDestDir;
405430
static string? monoLlvmTpnPath;
431+
static string? openJDK8InstallDir, openJDK11InstallDir;
432+
static string? openJDK8CacheDir, openJDK11CacheDir;
406433
}
407434
}
408435
}

build-tools/xaprepare/xaprepare/OperatingSystems/OS.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ protected virtual bool InitOS ()
184184
JavaHome = Context.Instance.Properties.GetValue (KnownProperties.JavaSdkDirectory)?.Trim () ?? String.Empty;
185185
if (String.IsNullOrEmpty (JavaHome)) {
186186
var androidToolchainDirectory = Context.Instance.Properties.GetValue (KnownProperties.AndroidToolchainDirectory)?.Trim ();
187-
JavaHome = Path.Combine (androidToolchainDirectory, "jdk");
187+
JavaHome = Path.Combine (androidToolchainDirectory, Configurables.Defaults.JdkFolder);
188188
}
189189

190190
string extension = IsWindows ? ".exe" : string.Empty;

build-tools/xaprepare/xaprepare/Scenarios/Scenario_AndroidToolchain.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@ namespace Xamarin.Android.Prepare
66
partial class Scenario_AndroidToolchain : ScenarioNoStandardEndSteps
77
{
88
public Scenario_AndroidToolchain ()
9-
: base ("AndroidToolchain", "Install Android SDK, NDK and Corretto JDK.")
9+
: base ("AndroidToolchain", "Install Android SDK, NDK and OpenJDK.")
1010
{}
1111

1212
protected override void AddSteps (Context context)
1313
{
14-
Steps.Add (new Step_InstallCorrettoOpenJDK ());
14+
Steps.Add (new Step_InstallJetBrainsOpenJDK8 ());
15+
Steps.Add (new Step_InstallJetBrainsOpenJDK11 ());
1516
Steps.Add (new Step_Android_SDK_NDK ());
1617

1718
// disable installation of missing programs...

build-tools/xaprepare/xaprepare/Scenarios/Scenario_Standard.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ protected override void AddSteps (Context context)
1919
throw new ArgumentNullException (nameof (context));
2020

2121
Steps.Add (new Step_ShowEnabledRuntimes ());
22-
Steps.Add (new Step_InstallCorrettoOpenJDK ());
22+
Steps.Add (new Step_InstallJetBrainsOpenJDK8 ());
23+
Steps.Add (new Step_InstallJetBrainsOpenJDK11 ());
2324
Steps.Add (new Step_Android_SDK_NDK ());
2425
Steps.Add (new Step_GenerateFiles (atBuildStart: true));
2526
Steps.Add (new Step_PrepareProps ());

build-tools/xaprepare/xaprepare/Steps/Step_InstallCorrettoOpenJDK.Linux.cs

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)