bazel-contrib/rules_python

`local_runtime_repo` writes absolute path of Xcode on macOS

Open

#3,123 opened on 2025幎7月28日

GitHub で芋る
 (6 comments) (0 reactions) (0 assignees)Starlark (705 forks)auto 404
help wanted

Repository metrics

Stars
 (679 stars)
PR merge metrics
 (PR metrics pending)

説明

🐞 bug report

(Sorry for all the annoying macOS specific bugs!)

Affected Rule

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.

コントリビュヌタヌガむド