~mvo/update-manager/not-automatic

« back to all changes in this revision

Viewing changes to UpdateManager/Core/DistUpgradeFetcherCore.py

  • Committer: Michael Vogt
  • Date: 2009-02-16 12:09:28 UTC
  • Revision ID: michael.vogt@ubuntu.com-20090216120928-xrcylim4xrcvo8bq
make backports lower priority than distro updates, ensure that the autoamtic dependency is higher version than the regular one

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
 
41
41
 
42
42
    DEFAULT_MIRROR="http://archive.ubuntu.com/ubuntu"
43
43
    DEFAULT_COMPONENT="main"
44
 
    
 
44
    DEBUG = "DEBUG_UPDATE_MANAGER" in os.environ
 
45
 
45
46
    def __init__(self, new_dist, progress):
46
47
        self.new_dist = new_dist
47
 
        self.current_dist = get_dist()
 
48
        self.current_dist_name = get_dist()
48
49
        self._progress = progress
49
50
        # options to pass to the release upgrader when it is run
50
51
        self.run_options = []
51
52
 
52
 
    def _debug(self, s):
 
53
    def _debug(self, msg):
53
54
        " helper to show debug information "
54
 
        print >> sys.stderr, s
 
55
        if self.DEBUG:
 
56
            sys.stderr.write(msg+"\n")
55
57
 
56
58
    def showReleaseNotes(self):
57
59
        return True
142
144
      in sources.list and then doing a http HEAD/ftp size request
143
145
      to see if the uri is available on this server
144
146
      """
145
 
      from aptsources.sourceslist import SourcesList
 
147
      self._debug("mirror_from_sources_list: %s" % self.current_dist_name)
146
148
      sources = SourcesList(withMatcher=False)
147
149
      seen = set()
148
150
      for e in sources.list:
153
155
          continue
154
156
        # we are using the main mirror already, so we are fine
155
157
        if (e.uri.startswith(default_uri) and 
156
 
            e.dist == self.current_dist and
 
158
            e.dist == self.current_dist_name and
157
159
            self.DEFAULT_COMPONENT in e.comps):
158
160
          return uri
159
 
        elif (e.dist == self.current_dist and
 
161
        elif (e.dist == self.current_dist_name and
160
162
              "main" in e.comps):
161
163
          mirror_uri = e.uri+uri[len(default_uri):]
162
 
          if url_downloadable(mirror_uri):
 
164
          if url_downloadable(mirror_uri, self._debug):
163
165
            return mirror_uri
164
166
          seen.add(e.uri)
 
167
      self._debug("no mirror found")
165
168
      return ""
166
169
 
167
170
    def _expandUri(self, uri):
171
174
        """
172
175
        # try to guess the mirror from the sources.list
173
176
        if uri.startswith(self.DEFAULT_MIRROR):
 
177
          self._debug("trying to find suitable mirror")
174
178
          new_uri = self.mirror_from_sources_list(uri, self.DEFAULT_MIRROR)
175
179
          if new_uri:
176
180
            return new_uri
177
 
 
178
181
        # if that fails, use old method
179
182
        uri_template = Template(uri)
180
183
        m = country_mirror()
184
187
            if not url_downloadable(new_uri, self._debug):
185
188
              raise Exception("failed to download %s" % new_uri)
186
189
        except Exception,e:
187
 
            print >> sys.stderr, "url '%s' could not be downloaded" % e
 
190
            self._debug("url '%s' could not be downloaded" % e)
 
191
            # else fallback to main server
188
192
            new_uri = uri_template.safe_substitute(countrymirror='')
189
193
        return new_uri
190
194
 
206
210
            # check that both files are really there and non-null
207
211
            for f in [os.path.basename(self.new_dist.upgradeToolSig),
208
212
                      os.path.basename(self.new_dist.upgradeTool)]:
209
 
              if not (os.path.exists(f) and os.path.getsize(f) > 0):
210
 
                return False
 
213
                if not (os.path.exists(f) and os.path.getsize(f) > 0):
 
214
                    return False
211
215
            return True
212
216
        return False
213
217