- Remove Obsoletes
This commit is contained in:
@@ -126,6 +126,7 @@ class Index(xmlfile.XmlFile):
|
||||
for comp in self.components:
|
||||
ctx.componentdb.update_component(comp, repo, txn)
|
||||
ctx.packagedb.remove_repo(repo, txn=txn)
|
||||
ctx.packagedb.add_obsoletes(self.distribution.obsoletes, repo, txn=txn)
|
||||
for pkg in self.packages:
|
||||
ctx.packagedb.add_package(pkg, repo, txn=txn)
|
||||
update_progress()
|
||||
|
||||
@@ -226,6 +226,12 @@ def remove_conflicting_packages(conflicts):
|
||||
if remove(conflicts, ignore_dep=True, ignore_safety=True):
|
||||
raise Error(_("Conflicts remain"))
|
||||
|
||||
def remove_obsoleted_packages():
|
||||
obsoletes = filter(ctx.installdb.is_installed, ctx.packagedb.get_obsoletes())
|
||||
if obsoletes:
|
||||
if remove(obsoletes, ignore_dep=True, ignore_safety=True):
|
||||
raise Error(_("Obsoleted packages remaining"))
|
||||
|
||||
def check_conflicts(order, packagedb):
|
||||
"""check if upgrading to the latest versions will cause havoc
|
||||
done in a simple minded way without regard for dependencies of
|
||||
@@ -498,6 +504,8 @@ def upgrade_pkg_names(A = []):
|
||||
|
||||
if replaces:
|
||||
remove_replaced_packages(order, replaces)
|
||||
|
||||
remove_obsoleted_packages()
|
||||
|
||||
for path in paths:
|
||||
ctx.ui.info(util.colorize(_("Installing %d / %d") % (paths.index(path)+1, len(paths)), "yellow"))
|
||||
|
||||
@@ -40,16 +40,19 @@ class PackageDB(object):
|
||||
def __init__(self):
|
||||
self.d = pisi.itembyrepodb.ItemByRepoDB('package')
|
||||
self.dr = pisi.itembyrepodb.ItemByRepoDB('revdep')
|
||||
self.do = pisi.itembyrepodb.ItemByRepoDB('obsoleted')
|
||||
self.drp = pisi.itembyrepodb.ItemByRepoDB('replaces')
|
||||
|
||||
def close(self):
|
||||
self.d.close()
|
||||
self.dr.close()
|
||||
self.do.close()
|
||||
self.drp.close()
|
||||
|
||||
def destroy(self):
|
||||
self.d.destroy()
|
||||
self.dr.destroy()
|
||||
self.do.destroy()
|
||||
self.drp.destroy()
|
||||
|
||||
def has_package(self, name, repo=None, txn = None):
|
||||
@@ -67,6 +70,14 @@ class PackageDB(object):
|
||||
def which_repo(self, name, txn = None):
|
||||
return self.d.which_repo(name, txn=txn)
|
||||
|
||||
def get_obsoletes(self, repo=None):
|
||||
obsoletes = []
|
||||
for r in self.do.list(repo):
|
||||
obsoletes.extend(self.do.get_item(r, repo))
|
||||
|
||||
replaces = self.get_replaces(repo)
|
||||
return set(str(o) for o in obsoletes) - set(replaces.keys())
|
||||
|
||||
# replacesdb holds the info about the replaced packages (ex. gaim -> pidgin)
|
||||
def get_replaces(self, repo = None):
|
||||
pairs = {}
|
||||
@@ -94,6 +105,11 @@ class PackageDB(object):
|
||||
def list_packages(self, repo=None):
|
||||
return self.d.list(repo)
|
||||
|
||||
def add_obsoletes(self, obsoletes, repo, txn = None):
|
||||
def proc(txn):
|
||||
self.do.add_item(repo, obsoletes, repo, txn)
|
||||
ctx.txn_proc(proc, txn)
|
||||
|
||||
def add_package(self, package_info, repo, txn = None):
|
||||
name = str(package_info.name)
|
||||
|
||||
@@ -120,6 +136,7 @@ class PackageDB(object):
|
||||
def clear(self, txn = None):
|
||||
self.d.clear()
|
||||
self.dr.clear()
|
||||
self.do.clear()
|
||||
self.drp.clear()
|
||||
|
||||
def remove_package(self, name, repo = None, txn = None):
|
||||
@@ -151,6 +168,7 @@ class PackageDB(object):
|
||||
def proc(txn):
|
||||
self.d.remove_repo(repo, txn=txn)
|
||||
self.dr.remove_repo(repo, txn=txn)
|
||||
self.do.remove_repo(repo, txn=txn)
|
||||
self.drp.remove_repo(repo, txn=txn)
|
||||
self.d.txn_proc(proc, txn)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user