diff --git a/python/private/venv_runfiles.bzl b/python/private/venv_runfiles.bzl index 291920b848..9fbe97a52e 100644 --- a/python/private/venv_runfiles.bzl +++ b/python/private/venv_runfiles.bzl @@ -138,7 +138,9 @@ def _group_venv_path_entries(entries): """ # Sort so order is top-down, ensuring grouping by short common prefix - entries = sorted(entries, key = lambda e: e.venv_path) + # Split it into path components so `foo foo-bar foo/bar` sorts as + # `foo foo/bar foo-bar` + entries = sorted(entries, key = lambda e: tuple(e.venv_path.split("/"))) groups = [] current_group = None 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 0a0265eb8c..68e17160e7 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 @@ -61,6 +61,7 @@ _tests.append(_test_conflict_merging) def _test_conflict_merging_impl(env, _): entries = [ _entry("a", "+pypi_a/site-packages/a", ["a.txt"]), + _entry("a-1.0.dist-info", "+pypi_a/site-packages/a-1.0.dist-info", ["METADATA"]), _entry("a/b", "+pypi_a_b/site-packages/a/b", ["b.txt"]), _entry("x", "_main/src/x", ["x.txt"]), _entry("x/p", "_main/src-dev/x/p", ["p.txt"]), @@ -72,6 +73,7 @@ def _test_conflict_merging_impl(env, _): actual = build_link_map(_ctx(), entries) expected_libs = { + "a-1.0.dist-info": "+pypi_a/site-packages/a-1.0.dist-info", "a/a.txt": _file("../+pypi_a/site-packages/a/a.txt"), "a/b/b.txt": _file("../+pypi_a_b/site-packages/a/b/b.txt"), "duplicate/d.py": _file("../+dupe_a/site-packages/duplicate/d.py"),