Skip to content

Commit 50d512c

Browse files
committed
Support jdk15
1 parent 7598bc6 commit 50d512c

File tree

9 files changed

+355
-1
lines changed

9 files changed

+355
-1
lines changed

WORKSPACE

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -836,6 +836,45 @@ http_archive(
836836
urls = ["https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-win_x64.zip"],
837837
)
838838

839+
# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
840+
http_archive(
841+
name = "remotejdk15_linux_for_testing",
842+
build_file = "@local_jdk//:BUILD.bazel",
843+
patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
844+
patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
845+
strip_prefix = "zulu15.27.17-ca-jdk15.0.0-linux_x64",
846+
urls = [
847+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
848+
"https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
849+
],
850+
)
851+
852+
# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
853+
http_archive(
854+
name = "remotejdk15_macos_for_testing",
855+
build_file = "@local_jdk//:BUILD.bazel",
856+
patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
857+
patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
858+
strip_prefix = "zulu15.27.17-ca-jdk15.0.0-macosx_x64",
859+
urls = [
860+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
861+
"https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
862+
],
863+
)
864+
865+
# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
866+
http_archive(
867+
name = "remotejdk15_win_for_testing",
868+
build_file = "@local_jdk//:BUILD.bazel",
869+
patch_cmds = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE,
870+
patch_cmds_win = EXPORT_WORKSPACE_IN_BUILD_BAZEL_FILE_WIN,
871+
strip_prefix = "zulu15.27.17-ca-jdk15.0.0-win_x64",
872+
urls = [
873+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-win_x64.zip",
874+
"https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-win_x64.zip",
875+
],
876+
)
877+
839878
# This must be kept in sync with src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE.
840879
http_archive(
841880
name = "remote_java_tools_linux_for_testing",
@@ -977,6 +1016,48 @@ exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
9771016
urls = ["https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-win_x64.zip"],
9781017
)
9791018

1019+
# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
1020+
http_archive(
1021+
name = "openjdk15_linux_archive",
1022+
build_file_content = """
1023+
java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
1024+
exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
1025+
""",
1026+
strip_prefix = "zulu15.27.17-ca-jdk15.0.0-linux_x64",
1027+
urls = [
1028+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
1029+
"https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
1030+
],
1031+
)
1032+
1033+
# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
1034+
http_archive(
1035+
name = "openjdk15_darwin_archive",
1036+
build_file_content = """
1037+
java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
1038+
exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
1039+
""",
1040+
strip_prefix = "zulu15.27.17-ca-jdk15.0.0-macosx_x64",
1041+
urls = [
1042+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
1043+
"https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
1044+
],
1045+
)
1046+
1047+
# This must be kept in sync with src/test/shell/bazel/testdata/jdk_http_archives.
1048+
http_archive(
1049+
name = "openjdk15_windows_archive",
1050+
build_file_content = """
1051+
java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
1052+
exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
1053+
""",
1054+
strip_prefix = "zulu15.27.17-ca-jdk15.0.0-win_x64",
1055+
urls = [
1056+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-win_x64.zip",
1057+
"https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-win_x64.zip",
1058+
],
1059+
)
1060+
9801061
load("@io_bazel_skydoc//:setup.bzl", "stardoc_repositories")
9811062

9821063
stardoc_repositories()

src/BUILD

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -752,6 +752,9 @@ filegroup(
752752
"@openjdk14_darwin_archive//:WORKSPACE",
753753
"@openjdk14_linux_archive//:WORKSPACE",
754754
"@openjdk14_windows_archive//:WORKSPACE",
755+
"@openjdk15_darwin_archive//:WORKSPACE",
756+
"@openjdk15_linux_archive//:WORKSPACE",
757+
"@openjdk15_windows_archive//:WORKSPACE",
755758
"@openjdk_linux_aarch64_minimal//file",
756759
"@openjdk_linux_minimal//file",
757760
"@openjdk_macos_minimal//file",
@@ -772,6 +775,9 @@ filegroup(
772775
"@remotejdk14_linux_for_testing//:WORKSPACE",
773776
"@remotejdk14_macos_for_testing//:WORKSPACE",
774777
"@remotejdk14_win_for_testing//:WORKSPACE",
778+
"@remotejdk15_linux_for_testing//:WORKSPACE",
779+
"@remotejdk15_macos_for_testing//:WORKSPACE",
780+
"@remotejdk15_win_for_testing//:WORKSPACE",
775781
"@rules_cc//:WORKSPACE",
776782
"@rules_java//:WORKSPACE",
777783
"@rules_pkg//:WORKSPACE",

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,42 @@ maybe(
199199
urls = ["https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-win_x64.zip"],
200200
)
201201

202+
# This must be kept in sync with the top-level WORKSPACE file.
203+
maybe(
204+
http_archive,
205+
name = "remotejdk15_linux",
206+
build_file = "@bazel_tools//tools/jdk:jdk.BUILD",
207+
strip_prefix = "zulu15.27.17-ca-jdk15.0.0-linux_x64",
208+
urls = [
209+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
210+
"https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz"
211+
],
212+
)
213+
214+
# This must be kept in sync with the top-level WORKSPACE file.
215+
maybe(
216+
http_archive,
217+
name = "remotejdk15_macos",
218+
build_file = "@bazel_tools//tools/jdk:jdk.BUILD",
219+
strip_prefix = "zulu15.27.17-ca-jdk15.0.0-macosx_x64",
220+
urls = [
221+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
222+
"https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
223+
],
224+
)
225+
226+
# This must be kept in sync with the top-level WORKSPACE file.
227+
maybe(
228+
http_archive,
229+
name = "remotejdk15_win",
230+
build_file = "@bazel_tools//tools/jdk:jdk.BUILD",
231+
strip_prefix = "zulu15.27.17-ca-jdk15.0.0-win_x64",
232+
urls = [
233+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-win_x64.zip",
234+
"https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-win_x64.zip"
235+
],
236+
)
237+
202238
# This must be kept in sync with the top-level WORKSPACE file.
203239
maybe(
204240
http_archive,

src/test/py/bazel/test_base.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ class TestBase(unittest.TestCase):
6666
'remotejdk14_linux_for_testing',
6767
'remotejdk14_macos_for_testing',
6868
'remotejdk14_win_for_testing',
69+
'remotejdk15_linux_for_testing',
70+
'remotejdk15_macos_for_testing',
71+
'remotejdk15_win_for_testing',
6972
'remote_java_tools_darwin_for_testing',
7073
'remote_java_tools_linux_for_testing',
7174
'remote_java_tools_windows_for_testing',

src/test/shell/bazel/BUILD

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,30 @@ sh_test(
202202
tags = ["local"],
203203
)
204204

205+
sh_test(
206+
name = "bazel_java15_test",
207+
srcs = ["bazel_java15_test.sh"],
208+
args = [
209+
# --java_toolchain and --host_java_toolchain values
210+
"@local_java_tools//:toolchain_jdk_15",
211+
# java_tools zip to test
212+
"src/java_tools_java11.zip",
213+
] + select({
214+
# --javabase and --host_javabase values
215+
"//src/conditions:darwin": ["@openjdk15_darwin_archive//:runtime"],
216+
"//src/conditions:darwin_x86_64": ["@openjdk15_darwin_archive//:runtime"],
217+
"//src/conditions:windows": ["@openjdk15_windows_archive//:runtime"],
218+
"//src/conditions:linux_x86_64": ["@openjdk15_linux_archive//:runtime"],
219+
}),
220+
data = [
221+
":test-deps",
222+
"//src:java_tools_java11_zip",
223+
"//src/test/shell/bazel/testdata:jdk_http_archives_filegroup",
224+
"@bazel_tools//tools/bash/runfiles",
225+
],
226+
tags = ["local"],
227+
)
228+
205229
sh_test(
206230
name = "bazel_java_test",
207231
# TODO(iirina): Investigate if the 'large' and 'eternal' values still apply.
@@ -220,7 +244,7 @@ sh_test(
220244
exec_compatible_with = ["//:highcpu_machine"],
221245
)
222246

223-
JAVA_VERSIONS = ("11", "14")
247+
JAVA_VERSIONS = ("11", "14", "15")
224248

225249
[
226250
sh_test(
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
#!/bin/bash
2+
#
3+
# Copyright 2020 The Bazel Authors. All rights reserved.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
#
17+
# Tests that bazel runs projects with Java 14 features.
18+
19+
# --- begin runfiles.bash initialization ---
20+
if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
21+
if [[ -f "$0.runfiles_manifest" ]]; then
22+
export RUNFILES_MANIFEST_FILE="$0.runfiles_manifest"
23+
elif [[ -f "$0.runfiles/MANIFEST" ]]; then
24+
export RUNFILES_MANIFEST_FILE="$0.runfiles/MANIFEST"
25+
elif [[ -f "$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
26+
export RUNFILES_DIR="$0.runfiles"
27+
fi
28+
fi
29+
if [[ -f "${RUNFILES_DIR:-/dev/null}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
30+
source "${RUNFILES_DIR}/bazel_tools/tools/bash/runfiles/runfiles.bash"
31+
elif [[ -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
32+
source "$(grep -m1 "^bazel_tools/tools/bash/runfiles/runfiles.bash " \
33+
"$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)"
34+
else
35+
echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash"
36+
exit 1
37+
fi
38+
# --- end runfiles.bash initialization ---
39+
40+
source "$(rlocation "io_bazel/src/test/shell/integration_test_setup.sh")" \
41+
|| { echo "integration_test_setup.sh not found!" >&2; exit 1; }
42+
43+
case "$(uname -s | tr [:upper:] [:lower:])" in
44+
msys*|mingw*|cygwin*)
45+
declare -r is_windows=true
46+
;;
47+
*)
48+
declare -r is_windows=false
49+
;;
50+
esac
51+
52+
if "$is_windows"; then
53+
export MSYS_NO_PATHCONV=1
54+
export MSYS2_ARG_CONV_EXCL="*"
55+
fi
56+
57+
JAVA_TOOLCHAIN="$1"; shift
58+
JAVA_TOOLS_ZIP="$1"; shift
59+
JAVA_RUNTIME="$1"; shift
60+
61+
echo "JAVA_TOOLS_ZIP=$JAVA_TOOLS_ZIP"
62+
63+
64+
JAVA_TOOLS_RLOCATION=$(rlocation io_bazel/$JAVA_TOOLS_ZIP)
65+
66+
if "$is_windows"; then
67+
JAVA_TOOLS_ZIP_FILE_URL="file:///${JAVA_TOOLS_RLOCATION}"
68+
else
69+
JAVA_TOOLS_ZIP_FILE_URL="file://${JAVA_TOOLS_RLOCATION}"
70+
fi
71+
JAVA_TOOLS_ZIP_FILE_URL=${JAVA_TOOLS_ZIP_FILE_URL:-}
72+
73+
add_to_bazelrc "build --java_toolchain=${JAVA_TOOLCHAIN}"
74+
add_to_bazelrc "build --host_java_toolchain=${JAVA_TOOLCHAIN}"
75+
add_to_bazelrc "build --javabase=${JAVA_RUNTIME}"
76+
add_to_bazelrc "build --host_javabase=${JAVA_RUNTIME}"
77+
78+
function set_up() {
79+
cat >>WORKSPACE <<EOF
80+
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
81+
# java_tools versions only used to test Bazel with various JDK toolchains.
82+
83+
http_archive(
84+
name = "local_java_tools",
85+
urls = ["${JAVA_TOOLS_ZIP_FILE_URL}"]
86+
)
87+
EOF
88+
cat $(rlocation io_bazel/src/test/shell/bazel/testdata/jdk_http_archives) >> WORKSPACE
89+
}
90+
91+
function test_java15_text_block() {
92+
mkdir -p java/main
93+
cat >java/main/BUILD <<EOF
94+
java_binary(
95+
name = 'Javac15Example',
96+
srcs = ['Javac15Example.java'],
97+
main_class = 'Javac15Example',
98+
)
99+
EOF
100+
101+
cat >java/main/Javac15Example.java <<EOF
102+
public class Javac15Example {
103+
static String textBlock = """
104+
Hello,
105+
World
106+
""";
107+
public static void main(String[] args) {
108+
System.out.println(textBlock);
109+
}
110+
}
111+
EOF
112+
bazel run java/main:Javac15Example --test_output=all --verbose_failures &>"${TEST_log}"
113+
expect_log "^Hello,\$"
114+
expect_log "^World\$"
115+
}
116+
117+
run_suite "Tests new Java 15 language features"

src/test/shell/bazel/testdata/jdk_http_archives

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,45 @@ http_archive(
7575
strip_prefix = "zulu14.28.21-ca-jdk14.0.1-win_x64",
7676
urls = ["https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu14.28.21-ca-jdk14.0.1-win_x64.zip"],
7777
)
78+
79+
#################################### JDK 15 ####################################
80+
# This must be kept in sync with the top-level WORKSPACE file.
81+
http_archive(
82+
name = "openjdk15_linux_archive",
83+
build_file_content = """
84+
java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
85+
exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
86+
""",
87+
strip_prefix = "zulu15.27.17-ca-jdk15.0.0-linux_x64",
88+
urls = [
89+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
90+
"https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-linux_x64.tar.gz",
91+
],
92+
)
93+
# This must be kept in sync with the top-level WORKSPACE file.
94+
http_archive(
95+
name = "openjdk15_darwin_archive",
96+
build_file_content = """
97+
java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
98+
exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
99+
""",
100+
strip_prefix = "zulu15.27.17-ca-jdk15.0.0-macosx_x64",
101+
urls = [
102+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
103+
"https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-macosx_x64.tar.gz",
104+
],
105+
)
106+
# This must be kept in sync with the top-level WORKSPACE file.
107+
http_archive(
108+
name = "openjdk15_windows_archive",
109+
build_file_content = """
110+
java_runtime(name = 'runtime', srcs = glob(['**']), visibility = ['//visibility:public'])
111+
exports_files(["WORKSPACE"], visibility = ["//visibility:public"])
112+
""",
113+
strip_prefix = "zulu15.27.17-ca-jdk15.0.0-win_x64",
114+
urls = [
115+
"https://mirror.bazel.build/cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-win_x64.zip",
116+
"https://cdn.azul.com/zulu/bin/zulu15.27.17-ca-jdk15.0.0-win_x64.zip",
117+
],
118+
)
119+

src/test/shell/testenv.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,9 @@ EOF
283283
"openjdk14_darwin_archive"
284284
"openjdk14_linux_archive"
285285
"openjdk14_windows_archive"
286+
"openjdk15_darwin_archive"
287+
"openjdk15_linux_archive"
288+
"openjdk15_windows_archive"
286289
"openjdk_linux_aarch64_minimal"
287290
"openjdk_linux_minimal"
288291
"openjdk_macos_minimal"
@@ -303,6 +306,9 @@ EOF
303306
"remotejdk14_linux_for_testing"
304307
"remotejdk14_macos_for_testing"
305308
"remotejdk14_win_for_testing"
309+
"remotejdk15_linux_for_testing"
310+
"remotejdk15_macos_for_testing"
311+
"remotejdk15_win_for_testing"
306312
"rules_cc"
307313
"rules_java"
308314
"rules_pkg"

0 commit comments

Comments
 (0)