Skip to content

Commit 01259ff

Browse files
committed
Bump Bazel to 7.2.1, rules_java to 7.9.0
Also removed the seemingly unused `rules_java_extra` stanza from `WORKSPACE`. `test_all.sh` and `test_lint.sh` continue to pass, after changing the `@@repo_name` prefixes set when upgrading to Bazel 7.0.0 back to `@repo_name`. The `@rules_java` update fixes errors of the following type under Bazel 7.2.1: ```txt ERROR: test/BUILD:640:10: While resolving toolchains for target //test:jar_lister (096dcc8): invalid registered toolchain '@remote_jdk8_linux_aarch64_toolchain_config_repo//:bootstrap_runtime_toolchain': no such target '@@remote_jdk8_linux_aarch64_toolchain_config_repo//:bootstrap_runtime_toolchain': target 'bootstrap_runtime_toolchain' not declared in package '' defined by .../external/remote_jdk8_linux_aarch64_toolchain_config_repo/BUILD.bazel ERROR: Analysis of target '//test:jar_lister' failed; build aborted ``` --- Though `rules_java` version 7.12.1 is available, and largely works with this repo when using Bazel 7.3.2, it requires a few temporary workarounds. (As I write this, 8.0.0 came out just a few hours ago and I haven't tried it.) Rather than commit the workarounds, upgrading only to 7.9.0 now seems less crufty. Though this commit only updates Bazel to 7.2.1, I suspect it's probably the same basic problem at play. What follows is a very detailed explanation of what happens with 7.12.1 with Bazel 7.3.2, just to have it on the record. --- The workaround is to change a few toolchain and macro file targets from `@bazel_tools//tools/jdk:` to `@rules_java//toolchains:`. This isn't a terribly bad or invasive workaround, but `@bazel_tools//tools/jdk:` is clearly the canonical path. Best to keep it that way, lest we build up technical debt. Without the workaround, these targets would fail: - //test/src/main/resources/java_sources:CompiledWithJava11 - //test/src/main/resources/java_sources:CompiledWithJava8 - //test/toolchains:java21_toolchain - //test:JunitRuntimePlatform - //test:JunitRuntimePlatform_test_runner - //test:scala_binary_jdk_11 with this error: ```txt ERROR: .../external/rules_java_builtin/toolchains/BUILD:254:14: While resolving toolchains for target @@rules_java_builtin//toolchains:platformclasspath (096dcc8): No matching toolchains found for types @@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type. ``` This appears to be a consequence of both upgrading the Bazel version to 7.3.2 and updating `rules_java` to 7.12.1. The `rules_java_builtin` repo is part of the `WORKSPACE` prefix that adds implicit dependencies: - https://bazel.build/external/migration#builtin-default-deps This repo was added to 7.0.0-pre.20231011.2 in the following change, mapped to `@rules_java` within the scope of the `@bazel_tools` repo: - bazelbuild/bazel: Add rules_java_builtin to the users of Java modules bazelbuild/bazel@ff1abb2 This change tried to ensure `rules_java` remained compatible with earlier Bazel versions. However, it changed all instances of `@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type` to `//toolchains:bootstrap_runtime_toolchain_type`: - bazelbuild/rules_java: Make rules_java backwards compatible with Bazel 6.3.0 bazelbuild/rules_java@30ecf3f Bazel has bumped `rules_java` in its `workspace_deps.bzl` from 7.9.0 to 7.11.0, but it's only available as of 8.0.0-pre.20240911.1. - bazelbuild/bazel: Update rules_java 7.11.1 / java_tools 13.8 bazelbuild/bazel#23571 bazelbuild/bazel@f92124a --- What I believe is happening is, under Bazel 7.3.2 and `rules_java` 7.12.1: - Bazel creates `rules_java` 7.9.0 as `@rules_java_builtin` in the `WORKSPACE` prefix. - `@bazel_tools` has `@rules_java` mapped to `@rules_java_builtin` when initialized during the `WORKSPACE` prefix, during which `@bazel_tools//tools/jdk` registers `alias()` targets to `@rules_java` toolchain targets. These aliased toolchains specify `@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type` in their `toolchains` attribute. - `WORKSPACE` loads `@rules_java` 7.12.1 and registers all its toolchains with type `@rules_java//toolchains:bootstrap_runtime_toolchain_type`. - Some `@rules_java` rules explicitly specifying toolchains from `@bazel_tools//tools/jdk` can't find them, because the `@bazel_tools//tools/jdk` toolchain aliases expect toolchains of type `@bazel_tools//tools/jdk:bootstrap_runtime_toolchain_type`. This has broken other projects in the same way: - bazelbuild/bazel: [Bazel CI] Downstream project broken by rules_java upgrade #23619 bazelbuild/bazel#23619 These problems don't appear under Bzlmod, whereby `@rules_java_builtin` was never required. This is because `WORKSPACE` executes its statements sequentially, while Bzlmod builds the module dependency graph _before_ instantiating repositories (within module extensions). It seems a fix is on the way that removes `@rules_java_builtin` from the `WORKSPACE` prefix, and adds `@rules_java` to the suffix. At this moment, though, it's not even in a prerelease: - bazelbuild/bazel: Remove rules_java_builtin in WORKSPACE prefix bazelbuild/bazel@7506690 --- Note that the error message matches that from the following resolved issue, but that issue was for non-Bzlmod child repos when `WORKSPACE` was disabled. - bazelbuild/bazel: Undefined @@rules_java_builtin repository with --noenable_workspace option bazelbuild/bazel#22754
1 parent d4b2364 commit 01259ff

File tree

7 files changed

+14
-27
lines changed

7 files changed

+14
-27
lines changed

.bazelci/presubmit.yml

+6-6
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,16 @@ tasks:
4848
platform: windows
4949
shell_commands:
5050
- "bash test_rules_scala.sh"
51-
test_coverage_linux_7_1_2:
51+
test_coverage_linux_7_2_1:
5252
name: "./test_coverage"
5353
platform: ubuntu2004
54-
bazel: 7.1.2
54+
bazel: 7.2.1
5555
shell_commands:
5656
- "./test_coverage.sh"
57-
test_coverage_macos_7.1.2:
57+
test_coverage_macos_7.2.1:
5858
name: "./test_coverage"
5959
platform: macos
60-
bazel: 7.1.2
60+
bazel: 7.2.1
6161
shell_commands:
6262
- "./test_coverage.sh"
6363
test_reproducibility_linux:
@@ -83,13 +83,13 @@ tasks:
8383
examples_linux:
8484
name: "./test_examples"
8585
platform: ubuntu2004
86-
bazel: 7.1.2
86+
bazel: 7.2.1
8787
shell_commands:
8888
- "./test_examples.sh"
8989
cross_build_linux:
9090
name: "./test_cross_build"
9191
platform: ubuntu2004
92-
bazel: 7.1.2
92+
bazel: 7.2.1
9393
shell_commands:
9494
- "./test_cross_build.sh"
9595
lint_linux:

.bazelversion

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
7.1.2
1+
7.2.1

WORKSPACE

-13
Original file line numberDiff line numberDiff line change
@@ -155,19 +155,6 @@ go_rules_dependencies()
155155

156156
go_register_toolchains(version = "1.19.5")
157157

158-
# Explicitly pull in a different (newer) version of rules_java for remote jdks
159-
rules_java_extra_version = "5.1.0"
160-
161-
rules_java_extra_sha = "d974a2d6e1a534856d1b60ad6a15e57f3970d8596fbb0bb17b9ee26ca209332a"
162-
163-
rules_java_extra_url = "https://github.com/bazelbuild/rules_java/releases/download/{}/rules_java-{}.tar.gz".format(rules_java_extra_version, rules_java_extra_version)
164-
165-
http_archive(
166-
name = "rules_java_extra",
167-
sha256 = rules_java_extra_sha,
168-
url = rules_java_extra_url,
169-
)
170-
171158
load("@rules_java//java:repositories.bzl", "remote_jdk8_repos")
172159

173160
# We need to select based on platform when we use these

scala/private/macros/scala_repositories.bzl

+2-2
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,9 @@ def rules_scala_setup(scala_compiler_srcjar = None):
104104
http_archive(
105105
name = "rules_java",
106106
urls = [
107-
"https://github.com/bazelbuild/rules_java/releases/download/5.4.1/rules_java-5.4.1.tar.gz",
107+
"https://github.com/bazelbuild/rules_java/releases/download/7.9.0/rules_java-7.9.0.tar.gz",
108108
],
109-
sha256 = "a1f82b730b9c6395d3653032bd7e3a660f9d5ddb1099f427c1e1fe768f92e395",
109+
sha256 = "41131de4417de70b9597e6ebd515168ed0ba843a325dc54a81b92d7af9a7b3ea",
110110
)
111111

112112
if not native.existing_rule("rules_proto"):

test/shell/test_scala_library.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,14 @@ test_scala_library_expect_failure_on_missing_direct_internal_deps() {
5959
}
6060

6161
test_scala_library_expect_failure_on_missing_direct_external_deps_jar() {
62-
dependenecy_target='@@com_google_guava_guava_21_0//:com_google_guava_guava_21_0'
62+
dependenecy_target='@com_google_guava_guava_21_0//:com_google_guava_guava_21_0'
6363
test_target='test_expect_failure/missing_direct_deps/external_deps:transitive_external_dependency_user'
6464

6565
test_scala_library_expect_failure_on_missing_direct_deps $dependenecy_target $test_target
6666
}
6767

6868
test_scala_library_expect_failure_on_missing_direct_external_deps_file_group() {
69-
dependenecy_target='@@com_google_guava_guava_21_0_with_file//:com_google_guava_guava_21_0_with_file'
69+
dependenecy_target='@com_google_guava_guava_21_0_with_file//:com_google_guava_guava_21_0_with_file'
7070
test_target='test_expect_failure/missing_direct_deps/external_deps:transitive_external_dependency_user_file_group'
7171

7272
test_scala_library_expect_failure_on_missing_direct_deps $dependenecy_target $test_target

test/shell/test_strict_dependency.sh

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ test_plus_one_ast_analyzer_strict_deps() {
4444

4545
test_stamped_target_label_loading() {
4646
local test_target="//test_expect_failure/missing_direct_deps/external_deps:java_lib_with_a_transitive_external_dep"
47-
local expected_message="buildozer 'add deps @@io_bazel_rules_scala_guava//:io_bazel_rules_scala_guava' ${test_target}"
47+
local expected_message="buildozer 'add deps @io_bazel_rules_scala_guava//:io_bazel_rules_scala_guava' ${test_target}"
4848

4949
test_expect_failure_or_warning_on_missing_direct_deps_with_expected_message \
5050
"${expected_message}" ${test_target} \
@@ -59,7 +59,7 @@ test_strict_deps_filter_excluded_target() {
5959

6060
test_strict_deps_filter_included_target() {
6161
local test_target="//test_expect_failure/missing_direct_deps/filtering:b"
62-
local expected_message="buildozer 'add deps @@com_google_guava_guava_21_0//:com_google_guava_guava_21_0' ${test_target}"
62+
local expected_message="buildozer 'add deps @com_google_guava_guava_21_0//:com_google_guava_guava_21_0' ${test_target}"
6363

6464
test_expect_failure_or_warning_on_missing_direct_deps_with_expected_message \
6565
"${expected_message}" ${test_target} \

test/shell/test_unused_dependency.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ test_unused_deps_filter_excluded_target() {
7979

8080
test_unused_deps_filter_included_target() {
8181
local test_target="//test_expect_failure/unused_dependency_checker/filtering:b"
82-
local expected_message="buildozer 'remove deps @@com_google_guava_guava_21_0//:com_google_guava_guava_21_0' ${test_target}"
82+
local expected_message="buildozer 'remove deps @com_google_guava_guava_21_0//:com_google_guava_guava_21_0' ${test_target}"
8383

8484
test_expect_failure_or_warning_on_missing_direct_deps_with_expected_message \
8585
"${expected_message}" ${test_target} \

0 commit comments

Comments
 (0)