From 80a5b1dee2aa4285973d14aa1193f1d84e89d0fb Mon Sep 17 00:00:00 2001 From: Faik Uygur Date: Wed, 13 Jan 2010 09:05:47 +0000 Subject: [PATCH] Do not force replaced package upgrades for system.base upgrade planning --- pisi/operations/upgrade.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pisi/operations/upgrade.py b/pisi/operations/upgrade.py index 11a71450..c3ef124b 100644 --- a/pisi/operations/upgrade.py +++ b/pisi/operations/upgrade.py @@ -162,7 +162,7 @@ def upgrade(A=[], repo=None): install_op = atomicoperations.Install(path, ignore_file_conflicts = True) install_op.install(True) -def plan_upgrade(A): +def plan_upgrade(A, force_replaced=True): # try to construct a pisi graph of packages to # install / reinstall @@ -170,10 +170,16 @@ def plan_upgrade(A): G_f = pgraph.PGraph(packagedb) # construct G_f - replaces = packagedb.get_replaces() + A = set(A) + # Force upgrading of installed but replaced packages or else they will be removed (they are obsoleted also). # This is not wanted for a replaced driver package (eg. nvidia-X). - A = set(A) | set(sum(replaces.values(), [])) + # + # FIXME: this is also not nice. this would not be needed if replaced packages are not written as obsoleted also. + # But if they are not written obsoleted "pisi index" indexes them + if force_replaced: + replaces = packagedb.get_replaces() + A |= set(sum(replaces.values(), [])) # find the "install closure" graph of G_f by package # set A using packagedb @@ -260,7 +266,7 @@ def upgrade_base(A = set()): if extra_upgrades: ctx.ui.warning(_('Safety switch: Following packages in system.base will be upgraded: ') + util.strlist(extra_upgrades)) - G_f, upgrade_order = plan_upgrade(extra_upgrades) + G_f, upgrade_order = plan_upgrade(extra_upgrades, force_replaced=False) # return packages that must be added to any installation return set(install_order + upgrade_order) else: