- get_replaces
This commit is contained in:
@@ -244,9 +244,6 @@ def is_upgradable(name, ignore_build = False):
|
|||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
raise
|
raise
|
||||||
except Exception, e: #FIXME: what exception could we catch here, replace with that.
|
except Exception, e: #FIXME: what exception could we catch here, replace with that.
|
||||||
# it may be a replaced package
|
|
||||||
if ctx.packagedb.has_replacement(name):
|
|
||||||
return True
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if ignore_build or (not build) or (not pkg.build):
|
if ignore_build or (not build) or (not pkg.build):
|
||||||
@@ -398,10 +395,6 @@ def upgrade_pkg_names(A = []):
|
|||||||
(version, release, build) = ctx.installdb.get_version(x)
|
(version, release, build) = ctx.installdb.get_version(x)
|
||||||
if ctx.packagedb.has_package(x):
|
if ctx.packagedb.has_package(x):
|
||||||
pkg = ctx.packagedb.get_package(x)
|
pkg = ctx.packagedb.get_package(x)
|
||||||
elif ctx.packagedb.has_replacement(x):
|
|
||||||
Ap.append(ctx.packagedb.get_replacement(x))
|
|
||||||
replaced.append(x)
|
|
||||||
continue
|
|
||||||
else:
|
else:
|
||||||
ctx.ui.info(_('Package %s is not available in repositories.') % x, True)
|
ctx.ui.info(_('Package %s is not available in repositories.') % x, True)
|
||||||
continue
|
continue
|
||||||
|
|||||||
+13
-25
@@ -40,7 +40,7 @@ class PackageDB(object):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.d = pisi.itembyrepodb.ItemByRepoDB('package')
|
self.d = pisi.itembyrepodb.ItemByRepoDB('package')
|
||||||
self.dr = pisi.itembyrepodb.ItemByRepoDB('revdep')
|
self.dr = pisi.itembyrepodb.ItemByRepoDB('revdep')
|
||||||
self.drp = pisi.itembyrepodb.ItemByRepoDB('replacement')
|
self.drp = pisi.itembyrepodb.ItemByRepoDB('replaces')
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
self.d.close()
|
self.d.close()
|
||||||
@@ -67,6 +67,16 @@ class PackageDB(object):
|
|||||||
def which_repo(self, name, txn = None):
|
def which_repo(self, name, txn = None):
|
||||||
return self.d.which_repo(name, txn=txn)
|
return self.d.which_repo(name, txn=txn)
|
||||||
|
|
||||||
|
def get_replaces(self, repo = None):
|
||||||
|
pairs = {}
|
||||||
|
for pkg_name in self.drp.list(repo):
|
||||||
|
replaces = self.drp.get_item(pkg_name, repo)
|
||||||
|
for r in replaces:
|
||||||
|
if pisi.replace.installed_package_replaced(r):
|
||||||
|
pairs[r.package] = pkg_name
|
||||||
|
|
||||||
|
return pairs
|
||||||
|
|
||||||
def get_rev_deps(self, name, repo = None, txn = None):
|
def get_rev_deps(self, name, repo = None, txn = None):
|
||||||
if self.dr.has_key(name, repo, txn=txn):
|
if self.dr.has_key(name, repo, txn=txn):
|
||||||
return self.dr.get_item(name, repo, txn=txn)
|
return self.dr.get_item(name, repo, txn=txn)
|
||||||
@@ -80,25 +90,6 @@ class PackageDB(object):
|
|||||||
else:
|
else:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
# If an installed package is replaced by any package in repository, mark this
|
|
||||||
# package for replacement in a later upgrade operation.
|
|
||||||
# @pkg: The package that replaces other packages
|
|
||||||
def mark_replaced_packages(self, pkg, repo, txn=None):
|
|
||||||
for repinfo in pkg.replaces:
|
|
||||||
# test if the package from this repo replaces an installed package
|
|
||||||
if pisi.replace.installed_package_replaced(repinfo):
|
|
||||||
replacedBy = pkg.name
|
|
||||||
self.drp.add_item(repinfo.package, replacedBy, repo, txn)
|
|
||||||
|
|
||||||
def has_replacement(self, name, repo=None, txn=None):
|
|
||||||
return self.drp.has_key(name, repo, txn=txn)
|
|
||||||
|
|
||||||
def get_replacement(self, name, repo=None, txn=None):
|
|
||||||
try:
|
|
||||||
return self.drp.get_item(name, repo, txn=txn)
|
|
||||||
except pisi.itembyrepodb.NotfoundError:
|
|
||||||
raise Error(_('Package %s has no replacement found in repository') % name)
|
|
||||||
|
|
||||||
def list_packages(self, repo=None):
|
def list_packages(self, repo=None):
|
||||||
return self.d.list(repo)
|
return self.d.list(repo)
|
||||||
|
|
||||||
@@ -118,7 +109,7 @@ class PackageDB(object):
|
|||||||
self.dr.add_item(dep_name, [ (name, dep) ], repo, txn)
|
self.dr.add_item(dep_name, [ (name, dep) ], repo, txn)
|
||||||
|
|
||||||
if package_info.replaces:
|
if package_info.replaces:
|
||||||
self.mark_replaced_packages(package_info, repo, txn=txn)
|
self.drp.add_item(name, package_info.replaces, repo, txn)
|
||||||
|
|
||||||
# add component
|
# add component
|
||||||
ctx.componentdb.add_package(package_info.partOf, package_info.name, repo, txn)
|
ctx.componentdb.add_package(package_info.partOf, package_info.name, repo, txn)
|
||||||
@@ -128,6 +119,7 @@ class PackageDB(object):
|
|||||||
def clear(self, txn = None):
|
def clear(self, txn = None):
|
||||||
self.d.clear()
|
self.d.clear()
|
||||||
self.dr.clear()
|
self.dr.clear()
|
||||||
|
self.drp.clear()
|
||||||
|
|
||||||
def remove_package(self, name, repo = None, txn = None):
|
def remove_package(self, name, repo = None, txn = None):
|
||||||
name = str(name)
|
name = str(name)
|
||||||
@@ -149,10 +141,6 @@ class PackageDB(object):
|
|||||||
# all the list members are removed.
|
# all the list members are removed.
|
||||||
self.dr.remove_item(dep_name, repo, txn=txn)
|
self.dr.remove_item(dep_name, repo, txn=txn)
|
||||||
|
|
||||||
# remove replace marker info for this package
|
|
||||||
if self.drp.has_key(name, repo, txn):
|
|
||||||
self.drp.remove_item(name, repo, txn=txn)
|
|
||||||
|
|
||||||
# remove from component
|
# remove from component
|
||||||
ctx.componentdb.remove_package(package_info.partOf, package_info.name, repo, txn)
|
ctx.componentdb.remove_package(package_info.partOf, package_info.name, repo, txn)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user