bazel-contrib / bazel-contrib/rules_python
py_runtime does not consume root_symlinks from the interpreter attr (hermetic toolchain)
- Langage dominant
- Starlark
- Étoiles
- 688
- Forks
- 721
- Merge moyen
- 15 h 7 min
- PR mergées (30 j)
- 76
Description
# 🐞 bug report
### Affected Rule
`py_runtime` is affected.
For example
```starlark
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:
https://github.com/bazel-contrib/rules_python/blob/393dcfd194615ab4d3393d29145842c186597e0e/python/private/py_runtime_rule.bzl#L54-L58
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")
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez dans python/private/py_runtime_rule.bzl aux lignes 54-58, où l’issue indique comment les runfiles de l’interpréteur sont gérés. Suivez la manière dont l’interpréteur et les fichiers contribuent aux runfiles, y compris root_symlinks, et vérifiez qu’un py_runtime hermétique expose ces liens lors de l’exécution des actions Python ; l’issue ne nomme ni test ni reproducer.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- build-system
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100