From 2f399158d60587308c8df01b3a23d3d8cb90bfa5 Mon Sep 17 00:00:00 2001 From: Faik Uygur Date: Tue, 23 Dec 2008 11:52:37 +0000 Subject: [PATCH] Fix upgrading replaced packages regression --- pisi/operations/remove.py | 4 ++++ pisi/operations/upgrade.py | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/pisi/operations/remove.py b/pisi/operations/remove.py index 021e4fe4..fc8b1d3d 100644 --- a/pisi/operations/remove.py +++ b/pisi/operations/remove.py @@ -125,3 +125,7 @@ def remove_obsoleted_packages(): if obsoletes: if remove(obsoletes, ignore_dep=True, ignore_safety=True): raise Exception(_("Obsoleted packages remaining")) + +def remove_replaced_packages(replaced): + if remove(replaced, ignore_dep=True, ignore_safety=True): + raise Exception(_("Replaced package remains")) diff --git a/pisi/operations/upgrade.py b/pisi/operations/upgrade.py index 0099c553..a69efcb9 100644 --- a/pisi/operations/upgrade.py +++ b/pisi/operations/upgrade.py @@ -50,7 +50,7 @@ def find_upgrades(packages, replaces): # pisi up has "not installed but replacement package" as argument if i_pkg in replaces.values(): - for i, u in replaces: + for i, u in replaces.items(): if i_pkg == u: i_pkg = i u_pkg = u @@ -59,8 +59,8 @@ def find_upgrades(packages, replaces): ctx.ui.info(_('Package %s is not installed.') % i_pkg, True) continue - if not packagedb.has_package(i_pkg): - ctx.ui.info(_('Package %s is not available in repositories.') % i_pkg, True) + if not packagedb.has_package(u_pkg): + ctx.ui.info(_('Package %s is not available in repositories.') % u_pkg, True) continue pkg = packagedb.get_package(u_pkg) @@ -81,7 +81,7 @@ def find_upgrades(packages, replaces): ctx.ui.info(_('Package %s is already at the latest release %s.') % (pkg.name, pkg.release), True) else: - if build < pkg.build: + if build < pkg.build or u_pkg != i_pkg: Ap.append(u_pkg) else: ctx.ui.info(_('Package %s is already at the latest build %s.') @@ -160,6 +160,7 @@ def upgrade_pkg_names(A = []): if conflicts: operations.remove.remove_conflicting_packages(conflicts) + operations.remove.remove_replaced_packages(replaces.keys()) operations.remove.remove_obsoleted_packages() for path in paths: