···
from typing import Dict, List, Set, Tuple
8
-
packages: Dict[str, Dict[str, List[Dict[str, List[str]]]]] = collections.defaultdict(list)
8
+
packages: Dict[str, Dict[str, Dict[str, List[str]]]] = collections.defaultdict(dict)
found_paths: Set[Path] = set()
out_path: Path = Path(os.getenv("out"))
version: Tuple[int, int] = sys.version_info
···
# inserts an entry into 'packages'
def add_entry(name: str, version: str, store_path: str, parents: List[str]) -> None:
35
-
if name not in packages:
37
-
if store_path not in packages[name]:
38
-
packages[name][store_path] = []
39
-
packages[name][store_path].append(dict(
35
+
packages[name][store_path] = dict(
# transitively discover python dependencies and store them in 'packages'
···
with open(propagated_build_inputs, "r") as f:
build_inputs: List[str] = f.read().strip().split(" ")
for build_input in build_inputs:
67
-
if build_input not in parents:
68
-
find_packages(Path(build_input), site_packages_path, parents + [build_input])
63
+
find_packages(Path(build_input), site_packages_path, parents + [build_input])
find_packages(out_path, site_packages_path, [f"this derivation: {out_path}"])
···
print("Found duplicated packages in closure for dependency '{}': ".format(name))
78
-
for store_path, candidates in store_paths.items():
79
-
for candidate in candidates:
80
-
print(f" {name} {candidate['version']} ({store_path})")
81
-
print(describe_parents(candidate['parents']))
73
+
for store_path, candidate in store_paths.items():
74
+
print(f" {name} {candidate['version']} ({store_path})")
75
+
print(describe_parents(candidate['parents']))
# fail if duplicates were found