rules_python icon indicating copy to clipboard operation
rules_python copied to clipboard

Failed to load Starlark extension '@rules_python_internal//:rules_python_config.bzl' in bzlmod

Open geaden opened this issue 2 years ago • 3 comments

🐞 bug report

Affected Rule

rules_python: 0.26.0

Is this a regression?

Yes, the previous version in which this bug was not present was: 0.25.0

Description

Using `rules_python` in `bzlmod` causes the issue

🔬 Minimal Reproduction

Run bazel test on any py_test target

🔥 Exception or Error




ERROR: Failed to load Starlark extension '@rules_python_internal//:rules_python_config.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_python_internal
This could either mean you have to add the '@rules_python_internal' 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: Error computing the main repository mapping: cycles detected during computation of main repo mapping

🌍 Your Environment

Operating System:

  
macOS 12.5.1
  

Output of bazel version:

  
Bazelisk version: development
Build label: 6.4.0
Build target: bazel-out/darwin_arm64-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Thu Oct 19 17:08:20 2023 (1697735300)
Build timestamp: 1697735300
Build timestamp as int: 1697735300
  

Rules_python version:

  
0.26.0
  

Anything else relevant?

geaden avatar Nov 07 '23 15:11 geaden

Can you provide repro instructions? Another user reported this on slack, but we weren't able to reproduce it and our tests are OK. The only theory we have is a WORKSPACE file interfering with MODULE.bazel.

rickeylev avatar Nov 07 '23 18:11 rickeylev

@rickeylev

It turned out I had these lines in WORKSPACE.bazel that caused this error

load(
    "@io_bazel_rules_docker//python3:image.bzl",
    _py_image_repos = "repositories",
)

_py_image_repos()

Wheh I removed it, everything is fine

geaden avatar Nov 24 '23 18:11 geaden

I am having the same problem. As I need images, removing as @geaden suggested is not an option.

With the help of #1560, I re-arranged my imports to call python_register_toolchains() and py_repositories() in deps_1.bzl and then _py_image_repositories() in deps_2.bzl.

mering avatar Jan 16 '24 09:01 mering