Skip to content

Commit a724f85

Browse files
committed
Java 16 toolchain support
Closes #13270. Change-Id: I215c2f86a35f87bea0102cf6da5248b19a319d3e
1 parent 8564a01 commit a724f85

File tree

12 files changed

+466
-10
lines changed

12 files changed

+466
-10
lines changed

WORKSPACE

+116
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,62 @@ http_archive(
623623
],
624624
)
625625

626+
# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
627+
http_archive(
628+
name = "remotejdk16_linux_for_testing",
629+
build_file = "@local_jdk//:BUILD.bazel",
630+
patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
631+
patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
632+
sha256 = "236b5ea97aff3cb312e743848d7efa77faf305170e41371a732ca93c1b797665",
633+
strip_prefix = "zulu16.28.11-ca-jdk16.0.0-linux_x64",
634+
urls = [
635+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-linux_x64.tar.gz",
636+
"https://cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-linux_x64.tar.gz",
637+
],
638+
)
639+
640+
# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
641+
http_archive(
642+
name = "remotejdk16_macos_for_testing",
643+
build_file = "@local_jdk//:BUILD.bazel",
644+
patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
645+
patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
646+
sha256 = "6d47ef22dc56ce1f5a102ed39e21d9a97320f0bb786818e2c686393109d79bc5",
647+
strip_prefix = "zulu16.28.11-ca-jdk16.0.0-macosx_x64",
648+
urls = [
649+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-macosx_x64.tar.gz",
650+
"https://cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-macosx_x64.tar.gz",
651+
],
652+
)
653+
654+
# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
655+
http_archive(
656+
name = "remotejdk16_macos_aarch64_for_testing",
657+
build_file = "@local_jdk//:BUILD.bazel",
658+
patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
659+
patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
660+
sha256 = "c92131e83bc71474850e667bc4e05fca33662b8feb009a0547aa14e76b40e890",
661+
strip_prefix = "zulu16.28.11-ca-jdk16.0.0-macosx_aarch64",
662+
urls = [
663+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-macosx_aarch64.tar.gz",
664+
"https://cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-macosx_aarch64.tar.gz",
665+
],
666+
)
667+
668+
# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
669+
http_archive(
670+
name = "remotejdk16_win_for_testing",
671+
build_file = "@local_jdk//:BUILD.bazel",
672+
patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
673+
patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
674+
sha256 = "6cbf98ada27476526a5f6dff79fd5f2c15e2f671818e503bdf741eb6c8fed3d4",
675+
strip_prefix = "zulu16.28.11-ca-jdk16.0.0-win_x64",
676+
urls = [
677+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-win_x64.zip",
678+
"https://cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-win_x64.zip",
679+
],
680+
)
681+
626682
# Used in src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
627683
dist_http_archive(
628684
name = "remote_java_tools_for_testing",
@@ -790,6 +846,66 @@ exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
790846
],
791847
)
792848

849+
# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
850+
http_archive(
851+
name = "openjdk16_linux_archive",
852+
build_file_content = """
853+
java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
854+
exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
855+
""",
856+
sha256 = "236b5ea97aff3cb312e743848d7efa77faf305170e41371a732ca93c1b797665",
857+
strip_prefix = "zulu16.28.11-ca-jdk16.0.0-linux_x64",
858+
urls = [
859+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-linux_x64.tar.gz",
860+
"https://cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-linux_x64.tar.gz",
861+
],
862+
)
863+
864+
# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
865+
http_archive(
866+
name = "openjdk16_darwin_archive",
867+
build_file_content = """
868+
java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
869+
exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
870+
""",
871+
sha256 = "6d47ef22dc56ce1f5a102ed39e21d9a97320f0bb786818e2c686393109d79bc5",
872+
strip_prefix = "zulu16.28.11-ca-jdk16.0.0-macosx_x64",
873+
urls = [
874+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-macosx_x64.tar.gz",
875+
"https://cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-macosx_x64.tar.gz",
876+
],
877+
)
878+
879+
# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
880+
http_archive(
881+
name = "openjdk16_darwin_aarch64_archive",
882+
build_file_content = """
883+
java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
884+
exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
885+
""",
886+
sha256 = "c92131e83bc71474850e667bc4e05fca33662b8feb009a0547aa14e76b40e890",
887+
strip_prefix = "zulu16.28.11-ca-jdk16.0.0-macosx_aarch64",
888+
urls = [
889+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-macosx_aarch64.tar.gz",
890+
"https://cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-macosx_aarch64.tar.gz",
891+
],
892+
)
893+
894+
# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
895+
http_archive(
896+
name = "openjdk16_windows_archive",
897+
build_file_content = """
898+
java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
899+
exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
900+
""",
901+
sha256 = "6cbf98ada27476526a5f6dff79fd5f2c15e2f671818e503bdf741eb6c8fed3d4",
902+
strip_prefix = "zulu16.28.11-ca-jdk16.0.0-win_x64",
903+
urls = [
904+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-win_x64.zip",
905+
"https://cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-win_x64.zip",
906+
],
907+
)
908+
793909
load("@io_bazel_skydoc//:setup.bzl", "stardoc_repositories")
794910

795911
stardoc_repositories()

src/BUILD

+8
Original file line numberDiff line numberDiff line change
@@ -715,6 +715,10 @@ filegroup(
715715
"@openjdk15_darwin_archive//:WORKSPACE",
716716
"@openjdk15_linux_archive//:WORKSPACE",
717717
"@openjdk15_windows_archive//:WORKSPACE",
718+
"@openjdk16_darwin_aarch64_archive//:WORKSPACE",
719+
"@openjdk16_darwin_archive//:WORKSPACE",
720+
"@openjdk16_linux_archive//:WORKSPACE",
721+
"@openjdk16_windows_archive//:WORKSPACE",
718722
"@openjdk_linux_aarch64_minimal//file",
719723
"@openjdk_linux_minimal//file",
720724
"@openjdk_macos_aarch64_minimal//file",
@@ -740,6 +744,10 @@ filegroup(
740744
"@remotejdk15_macos_aarch64_for_testing//:WORKSPACE",
741745
"@remotejdk15_macos_for_testing//:WORKSPACE",
742746
"@remotejdk15_win_for_testing//:WORKSPACE",
747+
"@remotejdk16_linux_for_testing//:WORKSPACE",
748+
"@remotejdk16_macos_aarch64_for_testing//:WORKSPACE",
749+
"@remotejdk16_macos_for_testing//:WORKSPACE",
750+
"@remotejdk16_win_for_testing//:WORKSPACE",
743751
"@rules_cc//:WORKSPACE",
744752
"@rules_java//:WORKSPACE",
745753
"@rules_pkg//:WORKSPACE",

src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.tmpl

+68
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,74 @@ maybe(
200200
version = "15",
201201
)
202202

203+
# This must be kept in sync with the top-level WORKSPACE file.
204+
maybe(
205+
remote_java_repository,
206+
name = "remotejdk16_linux",
207+
exec_compatible_with = [
208+
"@platforms//os:linux",
209+
"@platforms//cpu:x86_64",
210+
],
211+
sha256 = "236b5ea97aff3cb312e743848d7efa77faf305170e41371a732ca93c1b797665",
212+
strip_prefix = "zulu16.28.11-ca-jdk16.0.0-linux_x64",
213+
urls = [
214+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-linux_x64.tar.gz",
215+
"https://cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-linux_x64.tar.gz",
216+
],
217+
version = "16",
218+
)
219+
220+
# This must be kept in sync with the top-level WORKSPACE file.
221+
maybe(
222+
remote_java_repository,
223+
name = "remotejdk16_macos",
224+
exec_compatible_with = [
225+
"@platforms//os:macos",
226+
"@platforms//cpu:x86_64",
227+
],
228+
sha256 = "6d47ef22dc56ce1f5a102ed39e21d9a97320f0bb786818e2c686393109d79bc5",
229+
strip_prefix = "zulu16.28.11-ca-jdk16.0.0-macosx_x64",
230+
urls = [
231+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-macosx_x64.tar.gz",
232+
"https://cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-macosx_x64.tar.gz",
233+
],
234+
version = "16",
235+
)
236+
237+
# This must be kept in sync with the top-level WORKSPACE file.
238+
maybe(
239+
remote_java_repository,
240+
name = "remotejdk16_macos_aarch64",
241+
exec_compatible_with = [
242+
"@platforms//os:macos",
243+
"@platforms//cpu:aarch64",
244+
],
245+
sha256 = "c92131e83bc71474850e667bc4e05fca33662b8feb009a0547aa14e76b40e890",
246+
strip_prefix = "zulu16.28.11-ca-jdk16.0.0-macosx_aarch64",
247+
urls = [
248+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-macosx_aarch64.tar.gz",
249+
"https://cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-macosx_aarch64.tar.gz",
250+
],
251+
version = "16",
252+
)
253+
254+
# This must be kept in sync with the top-level WORKSPACE file.
255+
maybe(
256+
remote_java_repository,
257+
name = "remotejdk16_win",
258+
exec_compatible_with = [
259+
"@platforms//os:windows",
260+
"@platforms//cpu:x86_64",
261+
],
262+
sha256 = "6cbf98ada27476526a5f6dff79fd5f2c15e2f671818e503bdf741eb6c8fed3d4",
263+
strip_prefix = "zulu16.28.11-ca-jdk16.0.0-win_x64",
264+
urls = [
265+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-win_x64.zip",
266+
"https://cdn.azul.com/zulu/bin/zulu16.28.11-ca-jdk16.0.0-win_x64.zip",
267+
],
268+
version = "16",
269+
)
270+
203271
{remote_java_tools}
204272
{remote_java_tools_linux}
205273
{remote_java_tools_windows}

src/test/py/bazel/test_base.py

+4
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ class TestBase(unittest.TestCase):
6868
'remotejdk15_macos_for_testing',
6969
'remotejdk15_macos_aarch64_for_testing',
7070
'remotejdk15_win_for_testing',
71+
'remotejdk16_linux_for_testing',
72+
'remotejdk16_macos_for_testing',
73+
'remotejdk16_macos_aarch64_for_testing',
74+
'remotejdk16_win_for_testing',
7175
'remote_java_tools_for_testing',
7276
'remote_java_tools_darwin_for_testing',
7377
'remote_java_tools_linux_for_testing',

src/test/shell/bazel/BUILD

+25-3
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,24 @@ sh_test(
206206
tags = ["local"],
207207
)
208208

209+
sh_test(
210+
name = "bazel_java16_test",
211+
srcs = ["bazel_java16_test.sh"],
212+
args = [
213+
# java_tools zip to test
214+
"src/java_tools.zip",
215+
"src/java_tools_prebuilt.zip",
216+
],
217+
data = [
218+
":test-deps",
219+
"//src:java_tools_prebuilt_zip",
220+
"//src:java_tools_zip",
221+
"//src/test/shell/bazel/testdata:jdk_http_archives_filegroup",
222+
"@bazel_tools//tools/bash/runfiles",
223+
],
224+
tags = ["local"],
225+
)
226+
209227
sh_test(
210228
name = "bazel_java_test",
211229
# TODO(iirina): Investigate if the 'large' and 'eternal' values still apply.
@@ -224,7 +242,11 @@ sh_test(
224242
exec_compatible_with = ["//:highcpu_machine"],
225243
)
226244

227-
JAVA_VERSIONS = ("11", "15")
245+
JAVA_VERSIONS = ("11", "15", "16")
246+
247+
# TODO(davido): Enable test coverage for JDK 16 toolchain when this issue is fixed:
248+
# https://github.com/bazelbuild/bazel/issues/13358
249+
JAVA_VERSIONS_COVERAGE = ("11", "15")
228250

229251
[
230252
sh_test(
@@ -484,7 +506,7 @@ sh_test(
484506
"no_windows",
485507
],
486508
)
487-
for java_version in JAVA_VERSIONS
509+
for java_version in JAVA_VERSIONS_COVERAGE
488510
]
489511

490512
# Test java coverage with the java_toolchain in the java_tools zip built at head.
@@ -510,7 +532,7 @@ sh_test(
510532
],
511533
tags = ["no_windows"],
512534
)
513-
for java_version in JAVA_VERSIONS
535+
for java_version in JAVA_VERSIONS_COVERAGE
514536
]
515537

516538
sh_test(

src/test/shell/bazel/bazel_java15_test.sh

+1-5
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616
#
17-
# Tests that bazel runs projects with Java 14 features.
17+
# Tests that bazel runs projects with Java 15 features.
1818

1919
# --- begin runfiles.bash initialization ---
2020
if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
@@ -120,10 +120,6 @@ public class Javac15Example {
120120
}
121121
}
122122
EOF
123-
bazel run java/main:Javac15Example --java_language_version=14 --java_runtime_version=14 \
124-
--test_output=all --verbose_failures &>"${TEST_log}" \
125-
&& fail "Running with --java_language_version=14 unexpectedly succeeded."
126-
127123
bazel run java/main:Javac15Example --java_language_version=11 --java_runtime_version=11 \
128124
--test_output=all --verbose_failures &>"${TEST_log}" \
129125
&& fail "Running with --java_language_version=11 unexpectedly succeeded."

0 commit comments

Comments
 (0)