bazel-contrib / bazel-contrib/rules_python
`local_runtime_repo` writes absolute path of Xcode on macOS
- Langage dominant
- Starlark
- Étoiles
- 688
- Forks
- 721
- Merge moyen
- 15 h 7 min
- PR mergées (30 j)
- 76
Description
# 🐞 bug report
(Sorry for all the annoying macOS specific bugs!)
### Affected Rule
The issue is caused by the rule: `local_runtime_repo`
### Is this a regression?
Yes(?)
### Description
Starting with this change: https://github.com/bazel-contrib/rules_python/pull/2760/files#diff-33a51eb016b4b2a4b53d940f07c5388bd572ef61689051bc6f266ea7e5533c72R99
If running on macOS, `/usr/bin/python3` is a system shim that will run a Python runtime located within Xcode. The path of Xcode will then show up in `base_executable`:
```
❯ /usr/bin/python3 python/private/get_local_runtime_info.py
{"major": 3, "minor": 9, "micro": 6, "include": "/Library/Python/3.9/include", "implementation_name": "cpython", "base_executable": "/Applications/Xcode-26.0.0-Beta.app/Contents/Developer/usr/bin/python3", "LDLIBRARY": "Python3.framework/Versions/3.9/Python3", "LIBDIR": "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.9/lib", "INSTSONAME": "Python3.framework/Versions/3.9/Python3", "PY3LIBRARY": "", "SHLIB_SUFFIX": ".so"}
```
This path then ends up in the run script for i.e. `py_binary`:
```
76: PYTHON_BINARY = '/Applications/Xcode-26.0.0-Beta.app/Contents/Developer/usr/bin/python3'
```
## 🔬 Minimal Reproduction
1. macOS
2. `local_runtime_repo` setup with `interpreter_path = "/usr/bin/python3"`
3. build a `py_binary` target and observe the resulting run script
4. Change/move your Xcode version or path and rebuild. The `py_binary` path will be unchanged.
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par python/private/get_local_runtime_info.py et la règle local_runtime_repo, puis reproduisez le cas macOS avec interpreter_path="/usr/bin/python3" et une cible py_binary. Suivez le chemin de base_executable jusqu’au script d’exécution généré ; le travail est terminé lorsqu’une reconstruction après modification ou déplacement de Xcode ne laisse plus l’ancien chemin de Xcode intégré dans ce script.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- macos, python
- Domaine
- build-system, operating-systems
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 42/100