diff --git a/CHANGELOG.md b/CHANGELOG.md index 431f77040b..683235b7f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -83,6 +83,14 @@ END_UNRELEASED_TEMPLATE that are associated with the target's `srcs` are present. ([#3354](https://github.com/bazel-contrib/rules_python/issues/3354)). +{#v1-8-2} +## [1.8.2] - 2026-01-24 + +{#v1-8-2-fixed} +### Fixed +* (venvs) relax the C library filename check to make tensorflow work + Fixes [#3524](https://github.com/bazel-contrib/rules_python/issues/3529). + {#v1-8-1} ## [1.8.1] - 2026-01-20 diff --git a/python/private/venv_runfiles.bzl b/python/private/venv_runfiles.bzl index 7f6af0c957..d522470942 100644 --- a/python/private/venv_runfiles.bzl +++ b/python/private/venv_runfiles.bzl @@ -452,18 +452,11 @@ def get_venv_symlinks( def _is_linker_loaded_library(filename): """Tells if a filename is one that `dlopen()` or the runtime linker handles. - This should return true for regular C libraries, but false for Python - C extension modules. - - Python extensions: .so (linux, mac), .pyd (windows) - - C libraries: lib*.so (linux), lib*.so.* (linux), lib*.dylib (mac), .dll (windows) + C libraries: *.so (linux), *.so.* (linux), *.dylib (mac), .dll (windows) """ if filename.endswith(".dll"): return True - if filename.startswith("lib") and ( - filename.endswith((".so", ".dylib")) or ".so." in filename - ): + if filename.endswith((".so", ".dylib")) or ".so." in filename: return True return False 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 f85508dd3d..d808eae7e9 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 @@ -136,7 +136,7 @@ def _test_optimized_grouping_complex(name): name = name + "_files", paths = [ "site-packages/pkg1/a.txt", - "site-packages/pkg1/b/b_mod.so", + "site-packages/pkg1/b/b_mod_so", "site-packages/pkg1/c/c1.txt", "site-packages/pkg1/c/c2.txt", "site-packages/pkg1/d/d1.txt", @@ -147,6 +147,10 @@ def _test_optimized_grouping_complex(name): "site-packages/pkg1/q1/q2a/q3/q3a.txt", "site-packages/pkg1/q1/q2a/q3/q3b.txt", "site-packages/pkg1/q1/q2b/q2b.txt", + "site-packages/pkg1/q1/q2c/c_mod.so", + "site-packages/pkg1/q1/q2c/q2.txt", + "site-packages/pkg1/q1/q2c/q3/q3a.txt", + "site-packages/pkg1/q1/q2c/q3/q3b.txt", ], ) analysis_test( @@ -181,7 +185,7 @@ def _test_optimized_grouping_complex_impl(env, target): "pkg1/b", link_to_path = rr + "pkg1/b", files = [ - "tests/venv_site_packages_libs/app_files_building/site-packages/pkg1/b/b_mod.so", + "tests/venv_site_packages_libs/app_files_building/site-packages/pkg1/b/b_mod_so", ], ), _venv_symlink("pkg1/c", link_to_path = rr + "pkg1/c", files = [ @@ -210,6 +214,16 @@ def _test_optimized_grouping_complex_impl(env, target): _venv_symlink("pkg1/q1/q2b", link_to_path = rr + "pkg1/q1/q2b", files = [ "tests/venv_site_packages_libs/app_files_building/site-packages/pkg1/q1/q2b/q2b.txt", ]), + _venv_symlink("pkg1/q1/q2c/c_mod.so", link_to_path = rr + "pkg1/q1/q2c/c_mod.so", files = [ + "tests/venv_site_packages_libs/app_files_building/site-packages/pkg1/q1/q2c/c_mod.so", + ]), + _venv_symlink("pkg1/q1/q2c/q2.txt", link_to_path = rr + "pkg1/q1/q2c/q2.txt", files = [ + "tests/venv_site_packages_libs/app_files_building/site-packages/pkg1/q1/q2c/q2.txt", + ]), + _venv_symlink("pkg1/q1/q2c/q3", link_to_path = rr + "pkg1/q1/q2c/q3", files = [ + "tests/venv_site_packages_libs/app_files_building/site-packages/pkg1/q1/q2c/q3/q3a.txt", + "tests/venv_site_packages_libs/app_files_building/site-packages/pkg1/q1/q2c/q3/q3b.txt", + ]), ] expected = sorted(expected, key = lambda e: (e.link_to_path, e.venv_path)) env.expect.that_collection( @@ -226,7 +240,7 @@ def _test_optimized_grouping_single_toplevel(name): paths = [ "site-packages/pkg2/__init__.py", "site-packages/pkg2/a.txt", - "site-packages/pkg2/b_mod.so", + "site-packages/pkg2/b_mod_so", ], ) analysis_test( @@ -256,7 +270,7 @@ def _test_optimized_grouping_single_toplevel_impl(env, target): files = [ "tests/venv_site_packages_libs/app_files_building/site-packages/pkg2/__init__.py", "tests/venv_site_packages_libs/app_files_building/site-packages/pkg2/a.txt", - "tests/venv_site_packages_libs/app_files_building/site-packages/pkg2/b_mod.so", + "tests/venv_site_packages_libs/app_files_building/site-packages/pkg2/b_mod_so", ], ), ]