From 2054f481332327aeaade97aff5ade4edd404a284 Mon Sep 17 00:00:00 2001 From: jld3103 Date: Wed, 18 Aug 2021 13:11:19 +0200 Subject: [PATCH] Fix another infinite loop in dependency resolution --- packages.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages.py b/packages.py index d476217..aeb43b2 100644 --- a/packages.py +++ b/packages.py @@ -212,7 +212,15 @@ def discover_packages(package_paths: list[str]) -> dict[str, Package]: while len(deps) > 0: for dep in deps.copy(): found = False + for p in selection: + for name in p.names: + if name == dep: + deps.remove(dep) + found = True + break for p in packages.values(): + if found: + break for name in p.names: if name == dep: selection.append(packages[p.name]) @@ -221,8 +229,6 @@ def discover_packages(package_paths: list[str]) -> dict[str, Package]: deps += p.local_depends found = True break - if found: - break if not found: logging.fatal(f'Failed to find dependency {dep}') exit(1)