summaryrefslogtreecommitdiff
path: root/DistUpgrade
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2006-01-18 16:20:30 +0100
committerMichael Vogt <michael.vogt@ubuntu.com>2006-01-18 16:20:30 +0100
commitb3cf95cf422246b74df0b3176cabb9a11f824a98 (patch)
treedd5aed69f447c76dc117d185343df082baded30b /DistUpgrade
parenta55e93f2736d4370472c3bfbfd683feb87793539 (diff)
downloadpython-apt-b3cf95cf422246b74df0b3176cabb9a11f824a98.tar.gz
* refactored more stuff into the cache (out of the controler)
Diffstat (limited to 'DistUpgrade')
-rw-r--r--DistUpgrade/DistUpgradeCache.py34
-rw-r--r--DistUpgrade/DistUpgradeControler.py45
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)