Skip to content

Intermediate modules that register the same python version as rules_python's default prevent identifying default toolchain #1638

@rickeylev

Description

@rickeylev

🐞 bug report

Affected Rule

python.toolchain

Is this a regression?

Exists as far back as 0.25.0, not sure before that.

Description

If an intermediate module registers the same python version as rules_python's default, then it prevents a default toolchain from being identified.

🔬 Minimal Reproduction

The basic repro is to have an earlier module register the same version as what rules_python sets as the default.

# root MODULE
bazel_dep(name="rules_python")

python = use_extension("@rules_python//python/extensions:python.bzl", "python")
# Two must be registered; one is always treated as is_default=True
python.toolchain(python_version="3.11", is_default=False)
python.toolchain(python_version="3.10", is_default=False)

# rules_python MODULE
python = use_extension("@rules_python//python/extensions:python.bzl", "python")
python.toolchain(python_version="3.11", is_default=True)

The error/output is:


... python/extensions/python.bzl:44:10: WARNING: Ignoring toolchain 'python_3_11' from module 'rules_python': Toolchain 'python_3_11' from module 'middle' already registered Python version 3.11 and has precedence
ERROR: Traceback (most recent call last):
	File ".../python/extensions/python.bzl", line 140, column 13, in _python_impl
		fail("No default Python toolchain configured. Is rules_python missing `is_default=True`?")

Anything else relevant?

Blocking rules_proto_grpc getting onto bcr, but also would affect other intermediate modules

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions