diff options
| author | Michael Vogt <michael.vogt@ubuntu.com> | 2006-01-18 16:20:30 +0100 |
|---|---|---|
| committer | Michael Vogt <michael.vogt@ubuntu.com> | 2006-01-18 16:20:30 +0100 |
| commit | b3cf95cf422246b74df0b3176cabb9a11f824a98 (patch) | |
| tree | dd5aed69f447c76dc117d185343df082baded30b /DistUpgrade | |
| parent | a55e93f2736d4370472c3bfbfd683feb87793539 (diff) | |
| download | python-apt-b3cf95cf422246b74df0b3176cabb9a11f824a98.tar.gz | |
* refactored more stuff into the cache (out of the controler)
Diffstat (limited to 'DistUpgrade')
| -rw-r--r-- | DistUpgrade/DistUpgradeCache.py | 34 | ||||
| -rw-r--r-- | DistUpgrade/DistUpgradeControler.py | 45 |
2 files changed, 39 insertions, 40 deletions
diff --git a/DistUpgrade/DistUpgradeCache.py b/DistUpgrade/DistUpgradeCache.py index 3687ac80..dd552b73 100644 --- a/DistUpgrade/DistUpgradeCache.py +++ b/DistUpgrade/DistUpgradeCache.py @@ -191,7 +191,7 @@ class MyCache(apt.Cache): return True return False - def _tryMarkObsoleteForRemoval(self, pkgname, remove_candidates): + def _tryMarkObsoleteForRemoval(self, pkgname, remove_candidates, foreign_pkgs): # this is a delete candidate, only actually delete, # if it dosn't remove other packages depending on it # that are not obsolete as well @@ -199,8 +199,38 @@ class MyCache(apt.Cache): self[pkgname].markDelete() for pkg in self.getChanges(): if pkg.name not in remove_candidates or \ - pkg.name in self.foreign_pkgs or \ + pkg.name in foreign_pkgs or \ self._inRemovalBlacklist(pkg.name): self.restore_snapshot() return False return True + + def _getObsoletesPkgs(self): + " get all package names that are not downloadable " + obsolete_pkgs =set() + for pkg in self: + if pkg.isInstalled: + if not self.downloadable(pkg): + obsolete_pkgs.add(pkg.name) + return obsolete_pkgs + + def _getForeignPkgs(self, allowed_origin, fromDist, toDist): + """ get all packages that are installed from a foreign repo + (and are actually downloadable) + """ + foreign_pkgs =set() + for pkg in self: + if pkg.isInstalled and self.downloadable(pkg): + # assume it is foreign and see if it is from the + # official archive + foreign=True + for origin in pkg.candidateOrigin: + if fromDist in origin.archive and \ + origin.origin == allowed_origin: + foreign = False + if toDist in origin.archive and \ + origin.origin == allowed_origin: + foreign = False + if foreign: + foreign_pkgs.add(pkg.name) + return foreign_pkgs diff --git a/DistUpgrade/DistUpgradeControler.py b/DistUpgrade/DistUpgradeControler.py index 2b9fde3b..f9859167 100644 --- a/DistUpgrade/DistUpgradeControler.py +++ b/DistUpgrade/DistUpgradeControler.py @@ -123,36 +123,6 @@ class DistUpgradeControler(object): return False return True - def _getObsoletesPkgs(self): - " get all package names that are not downloadable " - obsolete_pkgs =set() - for pkg in self.cache: - if pkg.isInstalled: - if not self.cache.downloadable(pkg): - obsolete_pkgs.add(pkg.name) - return obsolete_pkgs - - def _getForeignPkgs(self): - """ get all packages that are installed from a foreign repo - (and are actually downloadable) - """ - foreign_pkgs =set() - for pkg in self.cache: - if pkg.isInstalled and self.cache.downloadable(pkg): - # assume it is foreign and see if it is from the - # official archive - foreign=True - for origin in pkg.candidateOrigin: - if self.fromDist in origin.archive and \ - origin.origin == self.origin: - foreign = False - if self.toDist in origin.archive and \ - origin.origin == self.origin: - foreign = False - if foreign: - foreign_pkgs.add(pkg.name) - return foreign_pkgs - def _logChanges(self): # debuging output logging.debug("About to apply the following changes") @@ -170,8 +140,8 @@ class DistUpgradeControler(object): def doPreUpdate(self): # FIXME: check out what packages are downloadable etc to # compare the list after the update again - self.obsolete_pkgs = self._getObsoletesPkgs() - self.foreign_pkgs = self._getForeignPkgs() + self.obsolete_pkgs = self.cache._getObsoletesPkgs() + self.foreign_pkgs = self.cache._getForeignPkgs(self.origin, self.fromDist, self.toDist) logging.debug("Foreign: %s" % " ".join(self.foreign_pkgs)) logging.debug("Obsolete: %s" % " ".join(self.obsolete_pkgs)) @@ -220,8 +190,8 @@ class DistUpgradeControler(object): self.openCache() # check out what packages are cruft now # use self.{foreign,obsolete}_pkgs here and see what changed - now_obsolete = self._getObsoletesPkgs() - now_foreign = self._getForeignPkgs() + now_obsolete = self.cache._getObsoletesPkgs() + now_foreign = self.cache._getForeignPkgs(self.origin, self.fromDist, self.toDist) logging.debug("Obsolete: %s" % " ".join(now_obsolete)) logging.debug("Foreign: %s" % " ".join(now_foreign)) @@ -232,8 +202,7 @@ class DistUpgradeControler(object): logging.debug("Start checking for obsolete pkgs") for pkgname in remove_candidates: if pkgname not in self.foreign_pkgs: - if not self.cache._tryMarkObsoleteForRemoval(pkgname, - remove_candidates): + if not self.cache._tryMarkObsoleteForRemoval(pkgname, remove_candidates, self.foreign_pkgs): logging.debug("'%s' scheduled for remove but not in remove_candiates, skipping", pkgname) logging.debug("Finish checking for obsolete pkgs") changes = self.cache.getChanges() @@ -289,8 +258,8 @@ class DistUpgradeControler(object): if not self.askDistUpgrade(): self.abort() - if not self.doDistUpgrade(): - self.abort() +# if not self.doDistUpgrade(): +# self.abort() # do post-upgrade stuff self._view.setStep(4) |
