diff --git a/pisi/packagedb.py b/pisi/packagedb.py index f8fbb0c4..a24c933d 100644 --- a/pisi/packagedb.py +++ b/pisi/packagedb.py @@ -127,9 +127,16 @@ class PackageDB(object): if self.dr.has_key(dep_name, repo, txn): revdep = self.dr.get_item(dep_name, repo, txn) revdep = filter(lambda (n,d):n!=name, revdep) - self.dr.add_item(dep_name, revdep, repo, txn) - if self.dr.has_key(name, repo, txn=txn): - self.dr.remove_item(name, repo, txn=txn) + if revdep: + self.dr.add_item(dep_name, revdep, repo, txn) + else: + # Bug 3558: removal of revdep list of a package from revdepdb + # should only be done by the list members (dep. packages), not + # the package itself. So if a package is removed, it is removed + # from packagedb but its revdepdb part may still exist, until + # all the list members are removed. + self.dr.remove_item(dep_name, repo, txn=txn) + ctx.componentdb.remove_package(package_info.partOf, package_info.name, repo, txn) for (lang, doc) in package_info.summary.iteritems(): if lang in ['en', 'tr']: