From be732c16ab1834162ed1c215a695c8b1486add9a Mon Sep 17 00:00:00 2001 From: David Ostrovsky Date: Fri, 24 Dec 2021 07:43:48 +0100 Subject: [PATCH] Bazel: Switch to using toolchain resolution for java rules Bump Bazel version to release 5.0.0. In this new Bazel release, --incompatible_use_toolchain_resolution_for_java_rules is flipped, that means that the build must be adapted to toolchain resolution. Specification toolchain resolution for java rules is here: [1]. Main tracking Bazel issue is here: [2]. Given that new Bazel release also added support for remote JDK 17, add experimental support for building with remote JDK 17 to produce major byte code version 61. Test Plan: To build with remote JDK 11 run: $ bazel build :all To build with remote JDK 17 run: $ bazel build --config java17 :all [1] https://docs.google.com/document/d/1MVbBxbKVKRJJY7DnkptHpvz7ROhyAYy4a-TZ-n7Q0r4/edit?usp=sharing [2] https://github.com/bazelbuild/bazel/issues/7849 Change-Id: I8d26dff722c6677ea7642913b61e416b23ea9041 --- .bazelrc | 13 ++++++++++++- .bazelversion | 2 +- WORKSPACE | 5 ++++- tools/BUILD | 14 +++++++++++++- 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/.bazelrc b/.bazelrc index e24be8863..7626e5b47 100644 --- a/.bazelrc +++ b/.bazelrc @@ -3,7 +3,18 @@ build --repository_cache=~/.gerritcodereview/bazel-cache/repository build --experimental_strict_action_env build --action_env=PATH build --disk_cache=~/.gerritcodereview/bazel-cache/cas -build --java_toolchain //tools:error_prone_warnings_toolchain + +# Builds using remote_jdk11, executes using remote_jdk11 or local_jdk +build --java_language_version=11 +build --java_runtime_version=remotejdk_11 +build --tool_java_language_version=11 +build --tool_java_runtime_version=remotejdk_11 + +# Builds using remote_jdk17, executes using remote_jdk11 or local_jdk +build:java17 --java_language_version=17 +build:java17 --java_runtime_version=remotejdk_17 +build:java17 --tool_java_language_version=17 +build:java17 --tool_java_runtime_version=remotejdk_17 test --build_tests_only test --test_output=errors diff --git a/.bazelversion b/.bazelversion index fcdb2e109..0062ac971 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -4.0.0 +5.0.0 diff --git a/WORKSPACE b/WORKSPACE index 83838b701..1d0aaceeb 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1,7 +1,6 @@ workspace(name = "jgit") load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") - load("//tools:bazlets.bzl", "load_bazlets") load_bazlets(commit = "f30a992da9fc855dce819875afb59f9dd6f860cd") @@ -11,6 +10,10 @@ load( "maven_jar", ) +register_toolchains("//tools:error_prone_warnings_toolchain_java11_definition") + +register_toolchains("//tools:error_prone_warnings_toolchain_java17_definition") + JMH_VERS = "1.32" maven_jar( diff --git a/tools/BUILD b/tools/BUILD index b80b2bb3a..a10901982 100644 --- a/tools/BUILD +++ b/tools/BUILD @@ -5,7 +5,7 @@ load( load("@rules_java//java:defs.bzl", "java_package_configuration") default_java_toolchain( - name = "error_prone_warnings_toolchain", + name = "error_prone_warnings_toolchain_java11", package_configuration = [ ":error_prone", ], @@ -14,6 +14,18 @@ default_java_toolchain( visibility = ["//visibility:public"], ) +default_java_toolchain( + name = "error_prone_warnings_toolchain_java17", + configuration = dict(), + java_runtime = "@bazel_tools//tools/jdk:remotejdk_17", + package_configuration = [ + ":error_prone", + ], + source_version = "17", + target_version = "17", + visibility = ["//visibility:public"], +) + # Error Prone errors enabled by default; see ../.bazelrc for how this is # enabled. This warnings list is originally based on: # https://github.com/bazelbuild/BUILD_file_generator/blob/master/tools/bazel_defs/java.bzl