diff --git a/CHANGELOG.md b/CHANGELOG.md index 7782454fbd..aebcfccc15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -105,6 +105,9 @@ END_UNRELEASED_TEMPLATE * (venvs) {obj}`--venvs_site_packages=yes` works for packages that dynamically link to shared libraries ([#3228](https://github.com/bazel-contrib/rules_python/issues/3228)). +* (venvs) {obj}`--venvs_site_packages=yes` includes `pth` files at the root of the + site-packages folder + ([#3339](https://github.com/bazel-contrib/rules_python/issues/3339)). * (uv) {obj}`//python/uv:lock.bzl%lock` now works with a local platform runtime. * (toolchains) WORKSPACE builds now correctly register musl and freethreaded diff --git a/python/private/common.bzl b/python/private/common.bzl index 33b175c247..ddeea6ed2d 100644 --- a/python/private/common.bzl +++ b/python/private/common.bzl @@ -36,6 +36,7 @@ PYTHON_FILE_EXTENSIONS = [ "dylib", # Python C modules, Mac specific "py", "pyc", + "pth", # import 'pth' files "pyi", "so", # Python C modules, usually Linux ] diff --git a/python/private/venv_runfiles.bzl b/python/private/venv_runfiles.bzl index 9bdacf833e..05dc296e15 100644 --- a/python/private/venv_runfiles.bzl +++ b/python/private/venv_runfiles.bzl @@ -290,9 +290,10 @@ def get_venv_symlinks(ctx, files, package, version_str, site_packages_root): entry = VenvSymlinkEntry( kind = VenvSymlinkKind.LIB, link_to_path = paths.join(runfiles_dir_name, site_packages_root, filename), + link_to_file = src, package = package, version = version_str, - venv_path = filename, + venv_path = path, files = depset([src]), ) venv_symlinks.append(entry) diff --git a/tests/venv_site_packages_libs/app_files_building/app_files_building_tests.bzl b/tests/venv_site_packages_libs/app_files_building/app_files_building_tests.bzl index 31c720a986..05661cbccb 100644 --- a/tests/venv_site_packages_libs/app_files_building/app_files_building_tests.bzl +++ b/tests/venv_site_packages_libs/app_files_building/app_files_building_tests.bzl @@ -271,6 +271,10 @@ def _test_shared_library_symlinking(name): "site-packages/foo.libs/libx.so", "site-packages/foo/a.py", "site-packages/foo/b.so", + "site-packages/foo/foo.pth", + "site-packages/root.pth", + "site-packages/root.py", + "site-packages/root.so", ], ) analysis_test( @@ -314,6 +318,9 @@ def _test_shared_library_symlinking_impl(env, target): "bar/y.so": srcs[2], "foo": "_main/tests/venv_site_packages_libs/app_files_building/site-packages/foo", "foo.libs/libx.so": srcs[3], + "root.pth": srcs[-3], + "root.py": srcs[-2], + "root.so": srcs[-1], } env.expect.that_dict(actual[VenvSymlinkKind.LIB]).contains_exactly(expected_libs)