summaryrefslogtreecommitdiff
path: root/DistUpgrade
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2006-09-26 21:50:03 +0200
committerMichael Vogt <michael.vogt@ubuntu.com>2006-09-26 21:50:03 +0200
commitb7c39558155861ae5807e35cc3b6ba932a207c36 (patch)
treef352a20d5fa29d137de1599686e386a80bc0af34 /DistUpgrade
parent33d4eca6244d22aa02b8ce95e6c600f6747476d7 (diff)
downloadpython-apt-b7c39558155861ae5807e35cc3b6ba932a207c36.tar.gz
* DistUpgrade/DistUpgrade.cfg:
- new KeepInstalledPkgs keyword * DistUpgrade/DistUpgradeCache.py: - implemented keepInstaledRule()
Diffstat (limited to 'DistUpgrade')
-rw-r--r--DistUpgrade/Changelog1
-rw-r--r--DistUpgrade/DistUpgrade.cfg5
-rw-r--r--DistUpgrade/DistUpgradeCache.py25
-rw-r--r--DistUpgrade/README6
4 files changed, 36 insertions, 1 deletions
diff --git a/DistUpgrade/Changelog b/DistUpgrade/Changelog
index 757fd3f6..a7e39c88 100644
--- a/DistUpgrade/Changelog
+++ b/DistUpgrade/Changelog
@@ -3,6 +3,7 @@
not use Breaks for the dapper->edgy upgrade yet
(see #54234 for the rationale)
- updated demotions.cfg for dapper->edgy
+ - special case the packages affected by the Breaks changes
- bugfixes
2006-09-23:
- support fetching backports of selected packages first and
diff --git a/DistUpgrade/DistUpgrade.cfg b/DistUpgrade/DistUpgrade.cfg
index 60c3ca9f..b25def9a 100644
--- a/DistUpgrade/DistUpgrade.cfg
+++ b/DistUpgrade/DistUpgrade.cfg
@@ -11,6 +11,10 @@ PostUpgradePurge=xorg-common, libgl1-mesa
Demotions=demoted.cfg
RemoveEssentialOk=sysvinit
RemovalBlacklistFile=removal_blacklist.cfg
+# if those packages were installed, make sure to keep them installed
+# we use this right now to emulate Breaks
+KeepInstalledPkgs=gnumeric, gnumeric-gtk, hpijs
+KeepInstalledSection=translations
# information about the individual meta-pkgs
[ubuntu-desktop]
@@ -29,7 +33,6 @@ KeyDependencies=edubuntu-artwork, tuxpaint
[xubuntu-desktop]
KeyDependencies=xubuntu-artwork-usplash, xubuntu-default-settings, xfce4
-
[Files]
BackupExt=distUpgrade
diff --git a/DistUpgrade/DistUpgradeCache.py b/DistUpgrade/DistUpgradeCache.py
index 8427bb3d..190a17b9 100644
--- a/DistUpgrade/DistUpgradeCache.py
+++ b/DistUpgrade/DistUpgradeCache.py
@@ -111,6 +111,28 @@ class MyCache(apt.Cache):
if self.has_key(pkg):
self._depcache.MarkDelete(self[pkg]._pkg,True)
+ def keepInstalledRule(self):
+ """ run after the dist-upgrade to ensure that certain
+ packages are kept installed """
+ def keepInstalled(self, pkgname):
+ if (self.has_key(pkgname)
+ and self[pkgname].isInstalled
+ and self[pkgname].markedDelete):
+ self[pkgname].markInstall()
+ # first the global list
+ for pkgname in self.config.getlist("Distro","KeepInstalledPkgs"):
+ keepInstalled(self, pkgname)
+ # the the per-metapkg rules
+ for key in self.metapkgs:
+ if self.has_key(key) and (self[key].isInstalled or
+ self[key].markedInstall):
+ for pkgname in self.config.getlist(key,"KeepInstalledPkgs"):
+ keepInstalled(self, pkgname)
+
+
+
+
+
def postUpgradeRule(self):
" run after the upgrade was done in the cache "
for (rule, action) in [("Install", self.markInstall),
@@ -149,6 +171,9 @@ class MyCache(apt.Cache):
if not self._installMetaPkgs(view):
raise SystemError, _("Can't upgrade required meta-packages")
+ # see if our KeepInstalled rules are honored
+ self.keepInstalledRule()
+
# and if we have some special rules
self.postUpgradeRule()
diff --git a/DistUpgrade/README b/DistUpgrade/README
index c38a422f..b9d6c5d2 100644
--- a/DistUpgrade/README
+++ b/DistUpgrade/README
@@ -32,6 +32,12 @@ ForcedObsoletes:
happens *after* the cache.commit())
RemoveEssentialOk:
Those packages are ok to remove even though they are essential
+KeepInstalledPkgs:
+ If the package was installed before, it should still be installed
+ after the upgrade
+KeepInstalledSection:
+ Packages from this section that were installed should always be
+ installed afterwards as well (useful for eg translations)
[$meta-pkg]
KeyDependencies: