Merge branch 'master' into add_s390x_support_in_java_repos
diff --git a/MODULE.bazel b/MODULE.bazel
index 4770232..cd93b9b 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -1,6 +1,6 @@
 module(
     name = "rules_java",
-    version = "5.4.1",
+    version = "5.5.0",
     compatibility_level = 1,
 )
 
@@ -19,7 +19,8 @@
 use_repo(toolchains, "remote_java_tools")
 use_repo(toolchains, "remote_java_tools_linux")
 use_repo(toolchains, "remote_java_tools_windows")
-use_repo(toolchains, "remote_java_tools_darwin")
+use_repo(toolchains, "remote_java_tools_darwin_x86_64")
+use_repo(toolchains, "remote_java_tools_darwin_arm64")
 
 # Declare local jdk repo
 use_repo(toolchains, "local_jdk")
@@ -29,9 +30,8 @@
 # Declare all remote jdk toolchain config repos
 JDK_VERSIONS = [
     "11",
-    "15",
-    "16",
     "17",
+    "19",
 ]
 
 PLATFORMS = [
diff --git a/java/defs.bzl b/java/defs.bzl
index 2cfd520..33f8cec 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 = "5.4.1"
+version = "5.5.0"
 
 def _add_tags(attrs):
     if "tags" in attrs and attrs["tags"] != None:
diff --git a/java/extensions.bzl b/java/extensions.bzl
index ae51218..01dabd8 100644
--- a/java/extensions.bzl
+++ b/java/extensions.bzl
@@ -13,14 +13,13 @@
 # limitations under the License.
 """Module extensions for rules_java."""
 
-load("//java:repositories.bzl", "java_tools_repos", "local_jdk_repo", "remote_jdk11_repos", "remote_jdk15_repos", "remote_jdk16_repos", "remote_jdk17_repos")
+load("//java:repositories.bzl", "java_tools_repos", "local_jdk_repo", "remote_jdk11_repos", "remote_jdk17_repos", "remote_jdk19_repos")
 
 def _toolchains_impl(_ctx):
     java_tools_repos()
     local_jdk_repo()
     remote_jdk11_repos()
-    remote_jdk15_repos()
-    remote_jdk16_repos()
     remote_jdk17_repos()
+    remote_jdk19_repos()
 
 toolchains = module_extension(implementation = _toolchains_impl)
diff --git a/java/repositories.bzl b/java/repositories.bzl
index 5a12250..416e852 100644
--- a/java/repositories.bzl
+++ b/java/repositories.bzl
@@ -20,43 +20,64 @@
 load("//toolchains:remote_java_repository.bzl", "remote_java_repository")
 
 def java_tools_repos():
+    """ Declares the remote java_tools repositories """
     maybe(
         http_archive,
         name = "remote_java_tools",
-        sha256 = "b95903c3659d28c159c719449e201b83db475491031b620d021458b982400a22",
+        sha256 = "6efab6ca6e16e02c90e62bbd08ca65f61527984ab78564ea7ad7a2692b2ffdbb",
         urls = [
-            "https://mirror.bazel.build/bazel_java_tools/releases/java/v11.11/java_tools-v11.11.zip",
-            "https://github.com/bazelbuild/java_tools/releases/download/java_v11.11/java_tools-v11.11.zip",
+            "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.0/java_tools-v12.0.zip",
+            "https://github.com/bazelbuild/java_tools/releases/download/java_v12.0/java_tools-v12.0.zip",
         ],
     )
 
     maybe(
         http_archive,
         name = "remote_java_tools_linux",
-        sha256 = "644c887e6e64ca0dd5271d42709b93c07d7ef5dbf42047b823c214a79f9b05f3",
+        sha256 = "4b8366b780387fc5ce69527ed287f2b444ee429d3325305ad062c92ac43c7fb6",
         urls = [
-            "https://mirror.bazel.build/bazel_java_tools/releases/java/v11.11/java_tools_linux-v11.11.zip",
-            "https://github.com/bazelbuild/java_tools/releases/download/java_v11.11/java_tools_linux-v11.11.zip",
+            "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.0/java_tools_linux-v12.0.zip",
+            "https://github.com/bazelbuild/java_tools/releases/download/java_v12.0/java_tools_linux-v12.0.zip",
         ],
     )
 
     maybe(
         http_archive,
         name = "remote_java_tools_windows",
-        sha256 = "e08acc5c1b43a29335a2a5257e16741a4a4efcdaaf1fdf05c00cce81c4b0ced8",
+        sha256 = "7b938f0c67d9d390f10489b1b9a4dabb51e39ecc94532c3acdf8c4c16900457f",
         urls = [
-            "https://mirror.bazel.build/bazel_java_tools/releases/java/v11.11/java_tools_windows-v11.11.zip",
-            "https://github.com/bazelbuild/java_tools/releases/download/java_v11.11/java_tools_windows-v11.11.zip",
+            "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.0/java_tools_windows-v12.0.zip",
+            "https://github.com/bazelbuild/java_tools/releases/download/java_v12.0/java_tools_windows-v12.0.zip",
         ],
     )
 
     maybe(
         http_archive,
         name = "remote_java_tools_darwin",
-        sha256 = "af62d4070263d0f80186abd44c9ae4df83e1a64aa5133163dca11a05bb7f2d4f",
+        sha256 = "abc434be713ee9e1fd6525d7a7bd9d7cdff6e27ae3ca9d96420490e7ff6e28a3",
         urls = [
-            "https://mirror.bazel.build/bazel_java_tools/releases/java/v11.11/java_tools_darwin-v11.11.zip",
-            "https://github.com/bazelbuild/java_tools/releases/download/java_v11.11/java_tools_darwin-v11.11.zip",
+            "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.0/java_tools_darwin_x86_64-v12.0.zip",
+            "https://github.com/bazelbuild/java_tools/releases/download/java_v12.0/java_tools_darwin_x86_64-v12.0.zip",
+        ],
+    )
+
+    maybe(
+        http_archive,
+        name = "remote_java_tools_darwin_x86_64",
+        sha256 = "abc434be713ee9e1fd6525d7a7bd9d7cdff6e27ae3ca9d96420490e7ff6e28a3",
+        urls = [
+            "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.0/java_tools_darwin_x86_64-v12.0.zip",
+            "https://github.com/bazelbuild/java_tools/releases/download/java_v12.0/java_tools_darwin_x86_64-v12.0.zip",
+        ],
+    )
+
+    maybe(
+        http_archive,
+        name = "remote_java_tools_darwin_arm64",
+        sha256 = "24a47a5557ee2ccdacd10a54fe4c15d627c6aeaf7596a5dccf2e11a866a5a32a",
+        urls = [
+            "https://mirror.bazel.build/bazel_java_tools/releases/java/v12.0/java_tools_darwin_arm64-v12.0.zip",
+            "https://github.com/bazelbuild/java_tools/releases/download/java_v12.0/java_tools_darwin_arm64-v12.0.zip",
         ],
     )
 
diff --git a/toolchains/BUILD b/toolchains/BUILD
index d9f3362..563c667 100644
--- a/toolchains/BUILD
+++ b/toolchains/BUILD
@@ -126,7 +126,8 @@
     )
     for OS in [
         "linux",
-        "darwin",
+        "darwin_x86_64",
+        "darwin_arm64",
         "windows",
     ]
 ]
@@ -142,7 +143,8 @@
 alias(
     name = "ijar_prebuilt_binary_or_cc_binary",
     actual = select({
-        "@bazel_tools//src/conditions:darwin": ":ijar_prebuilt_binary_darwin",
+        "@bazel_tools//src/conditions:darwin_arm64": ":ijar_prebuilt_binary_darwin_arm64",
+        "@bazel_tools//src/conditions:darwin_x86_64": ":ijar_prebuilt_binary_darwin_x86_64",
         "@bazel_tools//src/conditions:linux_x86_64": ":ijar_prebuilt_binary_linux",
         "@bazel_tools//src/conditions:windows": ":ijar_prebuilt_binary_windows",
         "//conditions:default": "@remote_java_tools//:ijar_cc_binary",
@@ -152,7 +154,8 @@
 alias(
     name = "ijar_prebuilt_binary",
     actual = select({
-        "@bazel_tools//src/conditions:darwin": ":ijar_prebuilt_binary_darwin",
+        "@bazel_tools//src/conditions:darwin_arm64": ":ijar_prebuilt_binary_darwin_arm64",
+        "@bazel_tools//src/conditions:darwin_x86_64": ":ijar_prebuilt_binary_darwin_x86_64",
         "@bazel_tools//src/conditions:linux_x86_64": ":ijar_prebuilt_binary_linux",
         "@bazel_tools//src/conditions:windows": ":ijar_prebuilt_binary_windows",
     }),
@@ -172,7 +175,8 @@
 alias(
     name = "singlejar_prebuilt_or_cc_binary",
     actual = select({
-        "@bazel_tools//src/conditions:darwin": ":prebuilt_singlejar_darwin",
+        "@bazel_tools//src/conditions:darwin_arm64": ":prebuilt_singlejar_darwin_arm64",
+        "@bazel_tools//src/conditions:darwin_x86_64": ":prebuilt_singlejar_darwin_x86_64",
         "@bazel_tools//src/conditions:linux_x86_64": ":prebuilt_singlejar_linux",
         "@bazel_tools//src/conditions:windows": ":prebuilt_singlejar_windows",
         "//conditions:default": "@remote_java_tools//:singlejar_cc_bin",
@@ -182,7 +186,8 @@
 alias(
     name = "prebuilt_singlejar",
     actual = select({
-        "@bazel_tools//src/conditions:darwin": ":prebuilt_singlejar_darwin",
+        "@bazel_tools//src/conditions:darwin_arm64": ":prebuilt_singlejar_darwin_arm64",
+        "@bazel_tools//src/conditions:darwin_x86_64": ":prebuilt_singlejar_darwin_x86_64",
         "@bazel_tools//src/conditions:linux_x86_64": ":prebuilt_singlejar_linux",
         "@bazel_tools//src/conditions:windows": ":prebuilt_singlejar_windows",
     }),
diff --git a/toolchains/default_java_toolchain.bzl b/toolchains/default_java_toolchain.bzl
index 4e21aa4..0d3d3d0 100644
--- a/toolchains/default_java_toolchain.bzl
+++ b/toolchains/default_java_toolchain.bzl
@@ -64,29 +64,29 @@
 # Default java_toolchain parameters
 _BASE_TOOLCHAIN_CONFIGURATION = dict(
     forcibly_disable_header_compilation = False,
-    genclass = ["@remote_java_tools//:GenClass"],
-    header_compiler = ["@remote_java_tools//:TurbineDirect"],
-    header_compiler_direct = ["@remote_java_tools//:TurbineDirect"],
-    ijar = ["//toolchains:ijar"],
-    javabuilder = ["@remote_java_tools//:JavaBuilder"],
+    genclass = [Label("@remote_java_tools//:GenClass")],
+    header_compiler = [Label("@remote_java_tools//:TurbineDirect")],
+    header_compiler_direct = [Label("@remote_java_tools//:TurbineDirect")],
+    ijar = [Label("//toolchains:ijar")],
+    javabuilder = [Label("@remote_java_tools//:JavaBuilder")],
     javac_supports_workers = True,
-    jacocorunner = "@remote_java_tools//:jacoco_coverage_runner_filegroup",
+    jacocorunner = Label("@remote_java_tools//:jacoco_coverage_runner_filegroup"),
     jvm_opts = BASE_JDK9_JVM_OPTS,
     turbine_jvm_opts = [
         # Turbine is not a worker and parallel GC is faster for short-lived programs.
         "-XX:+UseParallelGC",
     ],
     misc = DEFAULT_JAVACOPTS,
-    singlejar = ["//toolchains:singlejar"],
+    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 = ["//toolchains:platformclasspath"],
+    bootclasspath = [Label("//toolchains:platformclasspath")],
     source_version = "8",
     target_version = "8",
     reduced_classpath_incompatible_processors = [
         "dagger.hilt.processor.internal.root.RootProcessor",  # see b/21307381
     ],
-    java_runtime = "//toolchains:remotejdk_17",
+    java_runtime = Label("//toolchains:remotejdk_17"),
 )
 
 DEFAULT_TOOLCHAIN_CONFIGURATION = _BASE_TOOLCHAIN_CONFIGURATION
@@ -105,7 +105,7 @@
 # However it does allow using a wider range of `--host_javabase`s, including
 # versions newer than the current JDK.
 VANILLA_TOOLCHAIN_CONFIGURATION = dict(
-    javabuilder = ["@remote_java_tools//:VanillaJavaBuilder"],
+    javabuilder = [Label("@remote_java_tools//:VanillaJavaBuilder")],
     jvm_opts = [],
     java_runtime = None,
 )
@@ -116,14 +116,14 @@
 # same, otherwise the binaries will not work on the execution
 # platform.
 PREBUILT_TOOLCHAIN_CONFIGURATION = dict(
-    ijar = ["//toolchains:ijar_prebuilt_binary"],
-    singlejar = ["//toolchains:prebuilt_singlejar"],
+    ijar = [Label("//toolchains:ijar_prebuilt_binary")],
+    singlejar = [Label("//toolchains:prebuilt_singlejar")],
 )
 
 # The new toolchain is using all the tools from sources.
 NONPREBUILT_TOOLCHAIN_CONFIGURATION = dict(
-    ijar = ["@remote_java_tools//:ijar_cc_binary"],
-    singlejar = ["@remote_java_tools//:singlejar_cc_bin"],
+    ijar = [Label("@remote_java_tools//:ijar_cc_binary")],
+    singlejar = [Label("@remote_java_tools//:singlejar_cc_bin")],
 )
 
 _DEFAULT_SOURCE_VERSION = "8"
@@ -159,7 +159,7 @@
             )
             native.toolchain(
                 name = name + "_default_definition",
-                toolchain_type = "@bazel_tools//tools/jdk:toolchain_type",
+                toolchain_type = Label("@bazel_tools//tools/jdk:toolchain_type"),
                 target_settings = [name + "_default_version_setting"],
                 toolchain = name,
             )
@@ -171,7 +171,7 @@
         )
         native.toolchain(
             name = name + "_definition",
-            toolchain_type = "@bazel_tools//tools/jdk:toolchain_type",
+            toolchain_type = Label("@bazel_tools//tools/jdk:toolchain_type"),
             target_settings = [name + "_version_setting"],
             toolchain = name,
             exec_compatible_with = exec_compatible_with,
@@ -189,8 +189,8 @@
     for src in srcs:
         native.genrule(
             name = "gen_%s" % src,
-            srcs = ["//toolchains:current_java_runtime"],
-            toolchains = ["//toolchains:current_java_runtime"],
+            srcs = [Label("//toolchains:current_java_runtime")],
+            toolchains = [Label("//toolchains:current_java_runtime")],
             cmd = "cp $(JAVABASE)/%s $@" % src,
             outs = [src],
             tags = ["manual"],
diff --git a/toolchains/local_java_repository.bzl b/toolchains/local_java_repository.bzl
index 45086f9..9439115 100644
--- a/toolchains/local_java_repository.bzl
+++ b/toolchains/local_java_repository.bzl
@@ -93,7 +93,7 @@
     native.toolchain(
         name = "runtime_toolchain_definition",
         target_settings = [":%s_settings_alias" % name],
-        toolchain_type = "@bazel_tools//tools/jdk:runtime_toolchain_type",
+        toolchain_type = Label("@bazel_tools//tools/jdk:runtime_toolchain_type"),
         toolchain = runtime_name,
     )