pkg = pkg_queue.pop(0)
if pkg.name in visited:
continue
- visited.add(pkg.name)
# print("Processing {}:".format(pkg.name), pkg.needed_by)
-
+ visited.add(pkg.name)
build_order.append(pkg)
for other_pkg in sorted(pkg.needed_by, key=lambda p: p.name):
- # Mark this package as done
+ # Remove this pkg from deps
remaining_deps[other_pkg.name].discard(pkg.name)
-
# ... and all its subpackages
remaining_deps[other_pkg.name].difference_update(
[subpkg.name for subpkg in pkg.subpkgs]
)
- if not remaining_deps[other_pkg.name]: # all deps were pruned?
- pkg_queue.append(other_pkg)
+ if not remaining_deps[other_pkg.name]: # all deps were already appended?
+ pkg_queue.append(other_pkg) # should be processed
return build_order