From 7762204df5eec33558396dd78ff0b2601942a6c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20A=C5=9F=C4=B1c=C4=B1?= Date: Tue, 9 Mar 2010 12:33:31 +0000 Subject: [PATCH] packagedb: Accelerate get_replaces --- pisi/db/packagedb.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pisi/db/packagedb.py b/pisi/db/packagedb.py index 118d5423..bf1c1357 100644 --- a/pisi/db/packagedb.py +++ b/pisi/db/packagedb.py @@ -200,10 +200,16 @@ class PackageDB(lazydb.LazyDB): pairs = {} for pkg_name in self.rpdb.get_list_item(): - replaces = self.get_package(pkg_name).replaces - for r in replaces: - if pisi.replace.installed_package_replaced(r): - pairs.setdefault(r.package, []).append(pkg_name) + xml = self.pdb.get_item(pkg_name, repo) + package = piksemel.parseString(xml) + replaces_tag = package.getTag("Replaces") + if replaces_tag: + for node in replaces_tag.tags("Package"): + r = pisi.relation.Relation() + # XXX Is there a better way to do this? + r.decode(node, []) + if pisi.replace.installed_package_replaced(r): + pairs.setdefault(r.package, []).append(pkg_name) return pairs