~mvo/update-manager/not-automatic

« back to all changes in this revision

Viewing changes to UpdateManager/Core/DistUpgradeFetcherCore.py

  • Committer: Michael Vogt
  • Date: 2009-01-27 13:48:14 UTC
  • Revision ID: michael.vogt@ubuntu.com-20090127134814-irzg2ixiaduozksz
tests/test_dist_upgrade_fetcher_core.py,
tests/data-sources-list-test/sources.list.hardy:
- add tests for the MetaReleaseCore and DistUpgradeCore code
UpdateManager/Core/utils.py:
- make the url_downloadable() function more robust
UpdateManager/Core/MetaRelease.py:
- more debug output (if DEBUG_UPDATE_MANAGER is given)
UpdateManager/Core/DistUpgradeFetcherCore.py:
- more debug output (if DEBUG_UPDATE_MANAGER is given)
- import aptsources right from the beginning to avoid side effect
  of the import (apt_pkg.init() is called on module init)

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
20
20
#  USA
21
21
 
22
 
 
23
22
from string import Template
24
23
import os
25
24
import apt_pkg
33
32
import sys
34
33
import GnuPGInterface
35
34
from gettext import gettext as _
 
35
from aptsources.sourceslist import SourcesList
36
36
 
37
37
from utils import *
38
38
 
45
45
 
46
46
    def __init__(self, new_dist, progress):
47
47
        self.new_dist = new_dist
48
 
        self.current_dist = get_dist()
 
48
        self.current_dist_name = get_dist()
49
49
        self._progress = progress
50
50
        # options to pass to the release upgrader when it is run
51
51
        self.run_options = []
144
144
      in sources.list and then doing a http HEAD/ftp size request
145
145
      to see if the uri is available on this server
146
146
      """
147
 
      from aptsources.sourceslist import SourcesList
 
147
      self._debug("mirror_from_sources_list: %s" % self.current_dist_name)
148
148
      sources = SourcesList(withMatcher=False)
149
149
      seen = set()
150
150
      for e in sources.list:
155
155
          continue
156
156
        # we are using the main mirror already, so we are fine
157
157
        if (e.uri.startswith(default_uri) and 
158
 
            e.dist == self.current_dist and
 
158
            e.dist == self.current_dist_name and
159
159
            self.DEFAULT_COMPONENT in e.comps):
160
160
          return uri
161
 
        elif (e.dist == self.current_dist and
 
161
        elif (e.dist == self.current_dist_name and
162
162
              "main" in e.comps):
163
163
          mirror_uri = e.uri+uri[len(default_uri):]
164
164
          if url_downloadable(mirror_uri, self._debug):
165
165
            return mirror_uri
166
166
          seen.add(e.uri)
 
167
      self._debug("no mirror found")
167
168
      return ""
168
169
 
169
170
    def _expandUri(self, uri):
173
174
        """
174
175
        # try to guess the mirror from the sources.list
175
176
        if uri.startswith(self.DEFAULT_MIRROR):
 
177
          self._debug("trying to find suitable mirror")
176
178
          new_uri = self.mirror_from_sources_list(uri, self.DEFAULT_MIRROR)
177
179
          if new_uri:
178
180
            return new_uri
185
187
            if not url_downloadable(new_uri, self._debug):
186
188
              raise Exception("failed to download %s" % new_uri)
187
189
        except Exception,e:
188
 
            print >> sys.stderr, "url '%s' could not be downloaded" % e
 
190
            self._debug("url '%s' could not be downloaded" % e)
189
191
            # else fallback to main server
190
192
            new_uri = uri_template.safe_substitute(countrymirror='')
191
193
        return new_uri
208
210
            # check that both files are really there and non-null
209
211
            for f in [os.path.basename(self.new_dist.upgradeToolSig),
210
212
                      os.path.basename(self.new_dist.upgradeTool)]:
211
 
              if not (os.path.exists(f) and os.path.getsize(f) > 0):
212
 
                return False
 
213
                if not (os.path.exists(f) and os.path.getsize(f) > 0):
 
214
                    return False
213
215
            return True
214
216
        return False
215
217