Skip to content

py_runtime does not consume root_symlinks from the interpreter attr (hermetic toolchain) #3564

@wade-arista

Description

@wade-arista

🐞 bug report

Affected Rule

py_runtime is affected.

For example

py_runtime(
    name = "hermetic_runtime",
    files = ["extracted_toolchain"],
    interpreter = "extracted_toolchain",
    interpreter_version_info = {
        "major": "3",
        "minor": "9",
        "micro": "21",
    },
    python_version = "PY3",
    visibility = ["//BazArTest/py_toolchain:__pkg__"],
)

Is this a regression?

No. It was discovered when upgrading to bazel 9.0.0, however, because @bazel_tools//tools/bash/runfiles is now an alias that uses root_symlinks.

Description

The py_runtime interpreter from the example makes use of runfiles.bash, but if it is only present in the Runfiles.root_symlinks of interpreter / files, then it does not exist in the runfiles directory when executing python actions.

You can see here:

runtime_files = depset(transitive = [
interpreter_di.files,
interpreter_di.default_runfiles.files,
runtime_files,
])

that it does not consider the root_symlinks in the interpreter runfiles.

🔬 Minimal Reproduction

It is pretty involved, so I'm hoping the description makes the issue readily apparent. I can work on a reproducer if that is not the case.

🌍 Your Environment

Operating System:

  
AlmaLinux 9.7 (Moss Jungle Cat)
  

Output of bazel version:

  
Bazelisk version: v1.26.0
INFO: Invocation ID: decd4a2d-e400-43ca-8558-5e818e7da8d1
Build label: 9.0.0
Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
Build time: Tue Jan 20 18:16:47 2026 (1768933007)
Build timestamp: 1768933007
Build timestamp as int: 1768933007
  

Rules_python version:

  
bazel_dep(name = "rules_python", version = "1.7.0")
  

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions