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.`",