Kaydet (Commit) d471fd89 authored tarafından Faik Uygur's avatar Faik Uygur

- Remove Obsoletes

üst 14426cd7
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment