Refactor reverseDependencyUpdate search

This commit is contained in:
Fatih Aşıcı
2010-03-04 13:56:31 +00:00
parent 1ebc5c91fa
commit 0e8acdb126
+11 -7
View File
@@ -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'):