diff --git a/CHANGELOG.md b/CHANGELOG.md index ea76c5a6d3..46bd8bd16f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,6 +72,9 @@ END_UNRELEASED_TEMPLATE * (runfiles) The pypi runfiles package now includes `py.typed` to indicate it supports type checking ([#2503](https://github.com/bazel-contrib/rules_python/issues/2503)). +* (toolchains) `local_runtime_repo` now checks if the include directory exists + before attempting to watch it, fixing issues on macOS with system Python + ({gh-issue}`3043`). {#v0-0-0-added} ### Added diff --git a/python/private/local_runtime_repo.bzl b/python/private/local_runtime_repo.bzl index ec0643e497..3b4b4c020d 100644 --- a/python/private/local_runtime_repo.bzl +++ b/python/private/local_runtime_repo.bzl @@ -99,7 +99,15 @@ def _local_runtime_repo_impl(rctx): interpreter_path = info["base_executable"] # NOTE: Keep in sync with recursive glob in define_local_runtime_toolchain_impl - repo_utils.watch_tree(rctx, rctx.path(info["include"])) + include_path = rctx.path(info["include"]) + + # The reported include path may not exist, and watching a non-existant + # path is an error. Silently skip, since includes are only necessary + # if C extensions are built. + if include_path.exists and include_path.is_dir: + repo_utils.watch_tree(rctx, include_path) + else: + pass # The cc_library.includes values have to be non-absolute paths, otherwise # the toolchain will give an error. Work around this error by making them