Only download JDK repositories that are needed
The problem were `select`s that pointed to remote repos, which causes all the remote repos to be downloaded. Inserting an alias in between prevents this download.
Fixes https://github.com/bazelbuild/bazel/issues/12778
Closes #12846.
PiperOrigin-RevId: 352758845
diff --git a/tools/jdk/BUILD.tools b/tools/jdk/BUILD.tools
index 7363fc2..5981866 100644
--- a/tools/jdk/BUILD.tools
+++ b/tools/jdk/BUILD.tools
@@ -140,6 +140,26 @@
actual = "@local_jdk//:javadoc",
)
+[
+ (
+ alias(
+ name = "ijar_prebuilt_binary_%s" % OS,
+ actual = "@remote_java_tools_%s//:ijar_prebuilt_binary" % OS,
+ visibility = ["//visibility:private"],
+ ),
+ alias(
+ name = "prebuilt_singlejar_%s" % OS,
+ actual = "@remote_java_tools_%s//:prebuilt_singlejar" % OS,
+ visibility = ["//visibility:private"],
+ ),
+ )
+ for OS in [
+ "linux",
+ "darwin",
+ "windows",
+ ]
+]
+
# On Windows, executables end in ".exe", but the label we reach it through
# must be platform-independent. Thus, we create a little filegroup that
# contains the appropriate platform-dependent file.
@@ -151,9 +171,9 @@
alias(
name = "ijar_prebuilt_binary_or_cc_binary",
actual = select({
- "//src/conditions:linux_x86_64": "@remote_java_tools_linux//:ijar_prebuilt_binary",
- "//src/conditions:darwin": "@remote_java_tools_darwin//:ijar_prebuilt_binary",
- "//src/conditions:windows": "@remote_java_tools_windows//:ijar_prebuilt_binary",
+ "//src/conditions:linux_x86_64": ":ijar_prebuilt_binary_linux",
+ "//src/conditions:darwin": ":ijar_prebuilt_binary_darwin",
+ "//src/conditions:windows": ":ijar_prebuilt_binary_windows",
"//conditions:default": "@remote_java_tools//:ijar_cc_binary",
}),
)
@@ -161,9 +181,9 @@
alias(
name = "ijar_prebuilt_binary",
actual = select({
- "//src/conditions:linux_x86_64": "@remote_java_tools_linux//:ijar_prebuilt_binary",
- "//src/conditions:darwin": "@remote_java_tools_darwin//:ijar_prebuilt_binary",
- "//src/conditions:windows": "@remote_java_tools_windows//:ijar_prebuilt_binary",
+ "//src/conditions:linux_x86_64": ":ijar_prebuilt_binary_linux",
+ "//src/conditions:darwin": ":ijar_prebuilt_binary_darwin",
+ "//src/conditions:windows": ":ijar_prebuilt_binary_windows",
}),
)
@@ -181,9 +201,9 @@
alias(
name = "singlejar_prebuilt_or_cc_binary",
actual = select({
- "//src/conditions:linux_x86_64": "@remote_java_tools_linux//:prebuilt_singlejar",
- "//src/conditions:darwin": "@remote_java_tools_darwin//:prebuilt_singlejar",
- "//src/conditions:windows": "@remote_java_tools_windows//:prebuilt_singlejar",
+ "//src/conditions:linux_x86_64": ":prebuilt_singlejar_linux",
+ "//src/conditions:darwin": ":prebuilt_singlejar_darwin",
+ "//src/conditions:windows": ":prebuilt_singlejar_windows",
"//conditions:default": "@remote_java_tools//:singlejar_cc_bin",
}),
)
@@ -191,9 +211,9 @@
alias(
name = "prebuilt_singlejar",
actual = select({
- "//src/conditions:linux_x86_64": "@remote_java_tools_linux//:prebuilt_singlejar",
- "//src/conditions:darwin": "@remote_java_tools_darwin//:prebuilt_singlejar",
- "//src/conditions:windows": "@remote_java_tools_windows//:prebuilt_singlejar",
+ "//src/conditions:linux_x86_64": ":prebuilt_singlejar_linux",
+ "//src/conditions:darwin": ":prebuilt_singlejar_darwin",
+ "//src/conditions:windows": ":prebuilt_singlejar_windows",
}),
)
@@ -408,18 +428,40 @@
],
)
+# Aliases for JDKs, so that they are only downloaded when needed.
+_JDKS = [
+ "remotejdk11_macos",
+ "remotejdk11_win",
+ "remotejdk11_linux_aarch64",
+ "remotejdk11_linux",
+ "remotejdk11_linux_ppc64le",
+ "remotejdk11_linux_s390x",
+ "remotejdk15_macos",
+ "remotejdk15_win",
+ "remotejdk15_linux",
+]
+
+[
+ alias(
+ name = JDK,
+ actual = "@%s//:jdk" % JDK,
+ visibility = ["//visibility:private"],
+ )
+ for JDK in _JDKS
+]
+
# A JDK 11 for use as a --host_javabase.
java_runtime_version_alias(
name = "remote_jdk11",
runtime_version = "remotejdk_11",
selected_java_runtime = select(
{
- "//src/conditions:darwin": "@remotejdk11_macos//:jdk",
- "//src/conditions:windows": "@remotejdk11_win//:jdk",
- "//src/conditions:linux_aarch64": "@remotejdk11_linux_aarch64//:jdk",
- "//src/conditions:linux_x86_64": "@remotejdk11_linux//:jdk",
- "//src/conditions:linux_ppc64le": "@remotejdk11_linux_ppc64le//:jdk",
- "//src/conditions:linux_s390x": "@remotejdk11_linux_s390x//:jdk",
+ "//src/conditions:darwin": ":remotejdk11_macos",
+ "//src/conditions:windows": ":remotejdk11_win",
+ "//src/conditions:linux_aarch64": ":remotejdk11_linux_aarch64",
+ "//src/conditions:linux_x86_64": ":remotejdk11_linux",
+ "//src/conditions:linux_ppc64le": ":remotejdk11_linux_ppc64le",
+ "//src/conditions:linux_s390x": ":remotejdk11_linux_s390x",
},
no_match_error = "Could not find a JDK for host execution environment, please explicitly" +
" provide one using `--host_javabase.`",
@@ -432,9 +474,9 @@
runtime_version = "remotejdk_15",
selected_java_runtime = select(
{
- "//src/conditions:darwin": "@remotejdk15_macos//:jdk",
- "//src/conditions:windows": "@remotejdk15_win//:jdk",
- "//src/conditions:linux_x86_64": "@remotejdk15_linux//:jdk",
+ "//src/conditions:darwin": ":remotejdk15_macos",
+ "//src/conditions:windows": ":remotejdk15_win",
+ "//src/conditions:linux_x86_64": ":remotejdk15_linux",
},
no_match_error = "Could not find a JDK for host execution environment, please explicitly" +
" provide one using `--host_javabase.`",