From 0e8acdb1268f5990d74e129909d3f44dfad4a589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20A=C5=9F=C4=B1c=C4=B1?= Date: Thu, 4 Mar 2010 13:56:31 +0000 Subject: [PATCH] Refactor reverseDependencyUpdate search --- pisi/operations/upgrade.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/pisi/operations/upgrade.py b/pisi/operations/upgrade.py index bfaa0492..62412bd8 100644 --- a/pisi/operations/upgrade.py +++ b/pisi/operations/upgrade.py @@ -242,18 +242,22 @@ def plan_upgrade(A, force_replaced=True): # now, search for reverse dependency update needs of to be upgraded packages # check only the installed ones. B = filter(lambda x:installdb.has_package(x), G_f.vertices()) - while len(B) > 0: + while B: Bp = set() for x in B: pkg = packagedb.get_package(x) (version, release, build) = installdb.get_version(x) - updates = [i for i in pkg.history if pisi.version.Version(i.release) > pisi.version.Version(release)] + for update in pkg.history: + if update.release == release: + break - if pisi.util.any(lambda u:"reverseDependencyUpdate" in u.required_actions() , updates): - rev_deps = map(lambda d:d[0], packagedb.get_rev_deps(x)) - for rev_dep in filter(lambda name:name not in G_f.vertices() and is_upgradable(name), rev_deps): - Bp.add(rev_dep) - G_f.add_plain_dep(rev_dep, x) + if "reverseDependencyUpdate" in update.required_actions(): + for name, dep in packagedb.get_rev_deps(x): + if name in G_f.vertices() or not is_upgradable(name): + continue + + Bp.add(name) + G_f.add_plain_dep(name, x) B = Bp if ctx.config.get_option('debug'):