diff options
Diffstat (limited to 'DistUpgrade/DistUpgradeCache.py')
| -rw-r--r-- | DistUpgrade/DistUpgradeCache.py | 25 |
1 files changed, 25 insertions, 0 deletions
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() |
