Add support for toolchain java 15
Closes https://github.com/bazelbuild/bazel/issues/11871
I modelled this on @davido's addition of a java 14 toolchain, here:[https://github.com/bazelbuild/bazel/pull/11514](url).
The test plan has the same form:
Create java_tools from this commit:
` $ bazel build src:java_tools_java11.zip`
Switch to using the java_tools from the above step in WORKSPACE file:
```
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "remote_java_tools_linux",
urls = [
"file:///<path to the java_tools_java11.zip>",
],
)
```
Add Zulu OpenJDK15 to use as javabase in WORKSPACE file:
```
http_archive(
name = "openjdk15_linux_archive",
build_file_content = """
java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
""",
strip_prefix = "zulu15.27.17-ca-jdk15.0.0-linux_x64",
urls = ["https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz"],
)
```
Activate custom java toolchain and javabase in .bazelrc file:
```
build --java_toolchain=@remote_java_tools_linux//:toolchain_jdk_15
build --host_java_toolchain=@remote_java_tools_linux//:toolchain_jdk_15
build --javabase=@openjdk15_linux_archive//:runtime
build --host_javabase=@openjdk15_linux_archive//:runtime
```
Create Java 15 example class file:
```
public class Javac15Example {
static String textBlock = """
Hello,
World
""";
public static void main(String[] args) {
System.out.println(textBlock);
}
}
```
Add Bazel file to build Java 15 syntax class:
```
java_binary(
name = "Javac15Example",
srcs = ["Javac15Example.java"],
main_class = "Javac15Example",
)
```
Test that it works as expected:
```
$ bazel run java:Javac15Example
INFO: Analyzed target //java:Javac15Example (1 packages loaded, 2 targets configured).
INFO: Found 1 target...
INFO: From Building java/Javac15Example.jar (1 source file):
Target //java:Javac15Example up-to-date:
bazel-bin/java/Javac15Example.jar
bazel-bin/java/Javac15Example
INFO: Elapsed time: 1.502s, Critical Path: 1.30s
INFO: 1 process: 1 worker.
INFO: Build completed successfully, 2 total actions
INFO: Build completed successfully, 2 total actions
Hello,
World
```
Closes #12168.
PiperOrigin-RevId: 335931179
diff --git a/WORKSPACE b/WORKSPACE
index ba8a1bb..9d1dfd2 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -838,6 +838,45 @@
# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
http_archive(
+ name = "remotejdk15_linux_for_testing",
+ build_file = "@local_jdk//:BUILD.bazel",
+ patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
+ patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
+ strip_prefix = "zulu15.27.17-ca-jdk15.0.0-linux_x64",
+ urls = [
+ "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
+ "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
+ ],
+)
+
+# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
+http_archive(
+ name = "remotejdk15_macos_for_testing",
+ build_file = "@local_jdk//:BUILD.bazel",
+ patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
+ patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
+ strip_prefix = "zulu15.27.17-ca-jdk15.0.0-macosx_x64",
+ urls = [
+ "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
+ "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
+ ],
+)
+
+# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
+http_archive(
+ name = "remotejdk15_win_for_testing",
+ build_file = "@local_jdk//:BUILD.bazel",
+ patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
+ patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
+ strip_prefix = "zulu15.27.17-ca-jdk15.0.0-win_x64",
+ urls = [
+ "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-win_x64.zip",
+ "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-win_x64.zip",
+ ],
+)
+
+# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
+http_archive(
name = "remote_java_tools_linux_for_testing",
patch_cmds = EXPORT_WORKSPACE_IN_BUILD_FILE,
patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_FILE_WIN,
@@ -977,6 +1016,48 @@
urls = ["https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-win_x64.zip"],
)
+# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
+http_archive(
+ name = "openjdk15_linux_archive",
+ build_file_content = """
+java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
+exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
+""",
+ strip_prefix = "zulu15.27.17-ca-jdk15.0.0-linux_x64",
+ urls = [
+ "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
+ "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
+ ],
+)
+
+# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
+http_archive(
+ name = "openjdk15_darwin_archive",
+ build_file_content = """
+java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
+exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
+""",
+ strip_prefix = "zulu15.27.17-ca-jdk15.0.0-macosx_x64",
+ urls = [
+ "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
+ "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
+ ],
+)
+
+# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
+http_archive(
+ name = "openjdk15_windows_archive",
+ build_file_content = """
+java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
+exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
+""",
+ strip_prefix = "zulu15.27.17-ca-jdk15.0.0-win_x64",
+ urls = [
+ "https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-win_x64.zip",
+ "https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-win_x64.zip",
+ ],
+)
+
load("@io_bazel_skydoc//:setup.bzl", "stardoc_repositories")
stardoc_repositories()