Compelete rules_java_dependencies and rules_java_toolchains java_tools_javac11_repos is not yet loaded because it breaks compatibility with Bazel 4.2.1`
diff --git a/java/repositories.bzl b/java/repositories.bzl index dd77ac6..80ec481 100644 --- a/java/repositories.bzl +++ b/java/repositories.bzl
@@ -25,6 +25,7 @@ load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") +load("//toolchains:local_java_repository.bzl", "local_java_repository") load("//toolchains:remote_java_repository.bzl", "remote_java_repository") def java_tools_javac11_repos(): @@ -46,7 +47,6 @@ ], ) - http_archive( name = "remote_java_tools_windows", sha256 = "36766802f7ec684cecb1a14c122428de6be9784e88419e2ab5912ad4b59a8c7d", @@ -65,6 +65,12 @@ ], ) +def local_jdk_repo(): + local_java_repository( + name = "local_jdk", + build_file = Label("//toolchains:jdk.BUILD"), + ) + def remote_jdk11_repos(): """Imports OpenJDK 11 repositories.""" remote_java_repository( @@ -363,19 +369,51 @@ sha256 = "1dde365491125a3db70731e25658dfdd3bc5dbdfd11b840b3e987ecf043c7ca0", ) +def rules_python(): + maybe( + http_archive, + name = "rules_python", + type = "tar.gz", + url = "https://github.com/bazelbuild/rules_python/releases/download/0.4.0/rules_python-0.4.0.tar.gz", + sha256 = "954aa89b491be4a083304a2cb838019c8b8c3720a7abb9c4cb81ac7a24230cea", + ) + def rules_java_dependencies(): """An utility method to load all dependencies of rules_java. Loads the remote repositories used by default in Bazel. """ + local_jdk_repo() remote_jdk11_repos() - java_tools_javac11_repos() - bazel_skylib() + remote_jdk15_repos() + remote_jdk16_repos() + remote_jdk17_repos() -def rules_java_toolchains(): + # TODO: load this will break compatibility with Bazel 4.2.1 + # java_tools_javac11_repos() + bazel_skylib() + rules_python() + +def rules_java_toolchains(name = "toolchains"): """An utility method to load all Java toolchains. - It doesn't do anything at the moment. + Args: + name: The name of this macro (not used) """ - pass + JDK_VERSIONS = ["11", "15", "16", "17"] + PLATFORMS = ["linux", "macos", "macos_aarch64", "win"] + + # Remote JDK repos for those Linux platforms are only defined for JDK 11. + EXTRA_REMOTE_JDK11_REPOS = [ + "remotejdk11_linux_aarch64", + "remotejdk11_linux_ppc64le", + "remotejdk11_linux_s390x", + ] + + REMOTE_JDK_REPOS = [("remotejdk" + version + "_" + platform) for version in JDK_VERSIONS for platform in PLATFORMS] + EXTRA_REMOTE_JDK11_REPOS + native.register_toolchains("//toolchains:all") + + native.register_toolchains("@local_jdk//:runtime_toolchain_definition") + for name in REMOTE_JDK_REPOS: + native.register_toolchains("@" + name + "_toolchain_config_repo//:toolchain")