fix: make bazel 9 workspace recognize rules_python as the main module #2501
+8
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Building with Bazel 9 using WORKSPACE results in an odd error that
PyInfo
isn't defined. Oddly, the error refers to
rules_python/python/private/reexports.bzl
for rules_python 0.28.0. This seems to only happen when the main module is rules_python.
While Bazel 9 is supposed to drop workspace support, I've been advised it's better to
keep testing WORKSPACE support until closer to when Bazel 9 fully removes it.
My best guess about what's happening is Bazel's autoloading is triggering and somehow
defining rules_python before it's recognized that the main module is rules_python.
The autoloading appears to be triggered, eventually, by things in bazel_tools loading
rules_python.
While removing unnecessary
@bazel_tools
loads in rules_python helps, the particularcase I can't find a clean solution to is when
@@rules_java//toolchains:toolchain_java11_definition
causes rules_python to beloaded. This appears to end up loading rules_python via
@bazel_tools//tools/jdk:BUILD
, which has has some py rules defined in it.To fix/work around this issue,
local_repository
can be used to define therules_python
repo before autoloading happens. This appears to take precedence over whatever logic
autoloading has.
Work towards #2469