Merge pull request #140 from benjaminp:new-jdk

PiperOrigin-RevId: 575747795
Change-Id: I2810f09e2ab4c5fd12c7d5233c6bade1351f53d2
diff --git a/.bcr/presubmit.yml b/.bcr/presubmit.yml
index 52f713e..aad4915 100644
--- a/.bcr/presubmit.yml
+++ b/.bcr/presubmit.yml
@@ -4,5 +4,6 @@
   verify_build_targets:
     name: "Verify build targets"
     platform: ${{ platform }}
+    bazel: 6.4.0rc5
     build_targets:
       - "@rules_java//java/..."
diff --git a/.github/ISSUE_TEMPLATE/release.md b/.github/ISSUE_TEMPLATE/release.md
new file mode 100644
index 0000000..088ed07
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/release.md
@@ -0,0 +1,18 @@
+---
+name: 'Release tracker'
+about: Use this template to request for a new rules_java release
+title: 'Release: rules_java X.Y.Z'
+labels: ['release','P1']
+assignees:
+  - iancha1992
+  - sgowroji
+---
+
+**Link to relevant issue and/or commit:**
+
+**Other details:**
+<!-- Does this need to be updated in Bazel? -->
+<!-- Does this need to be cherry-picked into a Bazel release? -->
+<!-- Any constraints to note? -->
+
+cc @bazelbuild/triage
diff --git a/MODULE.bazel b/MODULE.bazel
index fdd86cd..2e4dafa 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -1,6 +1,8 @@
 module(
     name = "rules_java",
-    version = "6.5.1",
+    version = "7.0.6",
+    # Requires @bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type.
+    bazel_compatibility = [">=6.4.0"],
     compatibility_level = 1,
 )
 
diff --git a/java/defs.bzl b/java/defs.bzl
index 878be4b..c124871 100644
--- a/java/defs.bzl
+++ b/java/defs.bzl
@@ -18,7 +18,7 @@
 # Do not touch: This line marks the end of loads; needed for PR importing.
 
 _MIGRATION_TAG = "__JAVA_RULES_MIGRATION_DO_NOT_USE_WILL_BREAK__"
-version = "6.5.1"
+version = "7.0.6"
 
 def _add_tags(attrs):
     if "tags" in attrs and attrs["tags"] != None:
diff --git a/java/repositories.bzl b/java/repositories.bzl
index 07af225..e7bfc64 100644
--- a/java/repositories.bzl
+++ b/java/repositories.bzl
@@ -25,50 +25,50 @@
     maybe(
         http_archive,
         name = "remote_java_tools",
-        sha256 = "f58a358ca694a41416a9b6a92b852935ad301d8882e5d22f4f11134f035317d5",
+        sha256 = "610e40b1a89c9941638e33c56cf1be58f2d9d24cf9ac5a34b63270e08bb7000a",
         urls = [
-            "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.6/java_tools-v12.6.zip",
-            "https://github.com/bazelbuild/java_tools/releases/download/java_v12.6/java_tools-v12.6.zip",
+            "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.0/java_tools-v13.0.zip",
+            "https://github.com/bazelbuild/java_tools/releases/download/java_v13.0/java_tools-v13.0.zip",
         ],
     )
 
     maybe(
         http_archive,
         name = "remote_java_tools_linux",
-        sha256 = "64294e91fe940c77e6d35818b4c3a1f07d78e33add01e330188d907032687066",
+        sha256 = "f950ecc09cbc2ca110016095fe2a46e661925115975c84039f4370db1e70fe27",
         urls = [
-            "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.6/java_tools_linux-v12.6.zip",
-            "https://github.com/bazelbuild/java_tools/releases/download/java_v12.6/java_tools_linux-v12.6.zip",
+            "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.0/java_tools_linux-v13.0.zip",
+            "https://github.com/bazelbuild/java_tools/releases/download/java_v13.0/java_tools_linux-v13.0.zip",
         ],
     )
 
     maybe(
         http_archive,
         name = "remote_java_tools_windows",
-        sha256 = "63f727d44011b8c504bb4e6d89c2cd982278efb34dae8629687e9483d8f7d62d",
+        sha256 = "0224bb368b98f14d97afb749f3f956a177b60f753213b6c57db16deb2706c5dc",
         urls = [
-            "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.6/java_tools_windows-v12.6.zip",
-            "https://github.com/bazelbuild/java_tools/releases/download/java_v12.6/java_tools_windows-v12.6.zip",
+            "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.0/java_tools_windows-v13.0.zip",
+            "https://github.com/bazelbuild/java_tools/releases/download/java_v13.0/java_tools_windows-v13.0.zip",
         ],
     )
 
     maybe(
         http_archive,
         name = "remote_java_tools_darwin_x86_64",
-        sha256 = "c6545e82e543cb5775d3b8909d6270b5f481864b5ff083d20bfa5dcf77ac3ef7",
+        sha256 = "3edf102f683bfece8651f206aee864628825b4f6e614d183154e6bdf98b8c494",
         urls = [
-            "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.6/java_tools_darwin_x86_64-v12.6.zip",
-            "https://github.com/bazelbuild/java_tools/releases/download/java_v12.6/java_tools_darwin_x86_64-v12.6.zip",
+            "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.0/java_tools_darwin_x86_64-v13.0.zip",
+            "https://github.com/bazelbuild/java_tools/releases/download/java_v13.0/java_tools_darwin_x86_64-v13.0.zip",
         ],
     )
 
     maybe(
         http_archive,
         name = "remote_java_tools_darwin_arm64",
-        sha256 = "c6ffcaf87965c436cc86fc0e9673dafc97c0761efae8225ad2691cf6cfe3d87a",
+        sha256 = "1ecd91bf870b4f246960c11445218798113b766762e26a3de09cfcf3e9b4c646",
         urls = [
-            "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.6/java_tools_darwin_arm64-v12.6.zip",
-            "https://github.com/bazelbuild/java_tools/releases/download/java_v12.6/java_tools_darwin_arm64-v12.6.zip",
+            "https://mirror.bazel.build/bazel_java_tools/releases/java/v13.0/java_tools_darwin_arm64-v13.0.zip",
+            "https://github.com/bazelbuild/java_tools/releases/download/java_v13.0/java_tools_darwin_arm64-v13.0.zip",
         ],
     )
 
diff --git a/toolchains/BUILD b/toolchains/BUILD
index c504589..6d22bc5 100644
--- a/toolchains/BUILD
+++ b/toolchains/BUILD
@@ -257,11 +257,11 @@
     actual = ":toolchain",
 )
 
-RELEASES = (8, 9, 10, 11)
+RELEASES = (8, 9, 10, 11, 17, 21)
 
 [
     default_java_toolchain(
-        name = "toolchain_java%d" % release,
+        name = ("toolchain_java%d" if release <= 11 else "toolchain_jdk_%d") % release,
         configuration = DEFAULT_TOOLCHAIN_CONFIGURATION,
         source_version = "%s" % release,
         target_version = "%s" % release,
@@ -269,51 +269,6 @@
     for release in RELEASES
 ]
 
-# A toolchain that targets java 14.
-default_java_toolchain(
-    name = "toolchain_jdk_14",
-    configuration = dict(),
-    java_runtime = "//toolchains:remotejdk_14",
-    source_version = "14",
-    target_version = "14",
-)
-
-# A toolchain that targets java 15.
-default_java_toolchain(
-    name = "toolchain_jdk_15",
-    configuration = dict(),
-    java_runtime = "//toolchains:remotejdk_15",
-    source_version = "15",
-    target_version = "15",
-)
-
-# A toolchain that targets java 16.
-default_java_toolchain(
-    name = "toolchain_jdk_16",
-    configuration = dict(),
-    java_runtime = "//toolchains:remotejdk_16",
-    source_version = "16",
-    target_version = "16",
-)
-
-# A toolchain that targets java 17.
-default_java_toolchain(
-    name = "toolchain_jdk_17",
-    configuration = dict(),
-    java_runtime = "//toolchains:remotejdk_17",
-    source_version = "17",
-    target_version = "17",
-)
-
-# A toolchain that targets java 21.
-default_java_toolchain(
-    name = "toolchain_jdk_21",
-    configuration = dict(),
-    java_runtime = "//toolchains:remotejdk_21",
-    source_version = "21",
-    target_version = "21",
-)
-
 default_java_toolchain(
     name = "prebuilt_toolchain",
     configuration = PREBUILT_TOOLCHAIN_CONFIGURATION,
diff --git a/toolchains/default_java_toolchain.bzl b/toolchains/default_java_toolchain.bzl
index 8e28187..47cb877 100644
--- a/toolchains/default_java_toolchain.bzl
+++ b/toolchains/default_java_toolchain.bzl
@@ -86,7 +86,7 @@
     singlejar = [Label("//toolchains:singlejar")],
     # Code to enumerate target JVM boot classpath uses host JVM. Because
     # java_runtime-s are involved, its implementation is in @bazel_tools.
-    bootclasspath = [Label("@bazel_tools//tools/jdk:platformclasspath")],
+    bootclasspath = [Label("//toolchains:platformclasspath")],
     source_version = "8",
     target_version = "8",
     reduced_classpath_incompatible_processors = [
@@ -206,6 +206,10 @@
 
 _JAVA_BOOTSTRAP_RUNTIME_TOOLCHAIN_TYPE = Label("@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type")
 
+# Opt the Java bootstrap actions into path mapping:
+# https://github.com/bazelbuild/bazel/commit/a239ea84832f18ee8706682145e9595e71b39680
+_SUPPORTS_PATH_MAPPING = {"supports-path-mapping": "1"}
+
 def _bootclasspath_impl(ctx):
     exec_javabase = ctx.attr.java_runtime_alias[java_common.JavaRuntimeInfo]
 
@@ -227,6 +231,7 @@
         inputs = [ctx.file.src] + ctx.files.java_runtime_alias,
         outputs = [class_dir],
         arguments = [args],
+        execution_requirements = _SUPPORTS_PATH_MAPPING,
     )
 
     bootclasspath = ctx.outputs.output_jar
@@ -255,6 +260,7 @@
         inputs = inputs,
         outputs = [bootclasspath],
         arguments = [args],
+        execution_requirements = _SUPPORTS_PATH_MAPPING,
     )
     return [
         DefaultInfo(files = depset([bootclasspath])),