bazelbuild / rules_scala

Scala rules for Bazel
Apache License 2.0
363 stars 276 forks source link

Bazel green build CI job now fails persistently due to rules_java versioning #1625

Open mbland opened 2 weeks ago

mbland commented 2 weeks ago

All CI jobs except "Bazel green head" pass for my PRs working towards #1482 with the following error:

bazel --nosystem_rc --nohome_rc info
ERROR: Failed to load Starlark extension '@@rules_java//toolchains:toolchain_utils.bzl'.
Cycle in the workspace file detected. This indicates that a repository is used prior to being defined.
The following chain of repository dependencies lead to the missing definition.
 - @@rules_java
This could either mean you have to add the '@@rules_java' repository with a statement like `http_archive` in your WORKSPACE file (note that transitive dependencies are not added automatically), or move an existing definition earlier in your WORKSPACE file.
ERROR: cannot load build configuration key because of this cycle
Traceback (most recent call last):
  File "bazelci.py", line 4588, in <module>
    sys.exit(main())
  File "bazelci.py", line 4556, in main
    execute_commands(
  File "bazelci.py", line 1321, in execute_commands
    bazel_version = print_bazel_version_info(bazel_binary, platform)
  File "bazelci.py", line 1623, in print_bazel_version_info
    execute_command(
  File "bazelci.py", line 2750, in execute_command
    return subprocess.run(
  File "/usr/lib/python3.8/subprocess.py", line 516, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['bazel', '--nosystem_rc', '--nohome_rc', 'info']' returned non-zero exit status 2.

After reviewing my notes from https://github.com/bazelbuild/rules_scala/commit/cd22d8896f209c37be8622f1dcc9770c2dc18f48, under Bump to rules_java 7.9.0 for Bazel 7 compatibility, it seems like our WORKSPACE builds can't be compatible with Bazel 6/7 and Bazel 8 at the same time. The basic issue is that for rules_java > 7.9.0, the WORKSPACE prefix in Bazel 6/7 causes Java toolchains to register under a different type than what the rules are expecting later. This issue doesn't affect Bzlmod builds.

Would it be possible to disable the "Bazel green head" builds until the Bzlmod compatibility lands, and then reenable that build with Bzlmod enabled?

simuons commented 2 weeks ago

Hi, @mbland, I've changed last_green to latest in https://github.com/bazelbuild/rules_scala/pull/1627 I understand it's not a robust solution, but I hope it will hold until bzlmod lands into rules_scala. I'll ask you to rebase your PRs so I could merge them after review.

mbland commented 2 weeks ago

Sounds good, thanks! Did you want to keep this issue open until that point, or close it now, and/or open a new one to switch it back at that point?

simuons commented 1 week ago

Let's keep it open as actual issue is not fixed.

mbland commented 1 week ago

BTW, I pinpointed in a Bazel Slack thread with @shs96c the builds before and after the rules_java 7.9.0 bump from #1619:

And just to mention it explicitly here: bazelbuild/bazel: Remove rules_java_builtin in WORKSPACE prefix "fixes" the problem in Bazel 8, enabling WORKSPACE builds to use rules_java > 7.9.0. But as mentioned already, doing so would break WORKSPACE for Bazel 6 and 7, which still have rules_java_builtin in their WORKSPACE prefix.