fix: make bazel 9 workspace recognize rules_python as the main module#2501
Merged
rickeylev merged 2 commits intobazel-contrib:mainfrom Dec 13, 2024
Merged
fix: make bazel 9 workspace recognize rules_python as the main module#2501rickeylev merged 2 commits intobazel-contrib:mainfrom
rickeylev merged 2 commits intobazel-contrib:mainfrom
Conversation
aignas
reviewed
Dec 13, 2024
aignas
approved these changes
Dec 13, 2024
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
PyInfoisn't defined. Oddly, the error refers to
rules_python/python/private/reexports.bzlfor 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_toolsloads in rules_python helps, the particularcase I can't find a clean solution to is when
@@rules_java//toolchains:toolchain_java11_definitioncauses 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_repositorycan be used to define therules_pythonrepo before autoloading happens. This appears to take precedence over whatever logic
autoloading has.
Work towards #2469