Commits

Anonymous committed f26ff6c

EasyInstall no longer aborts the installation process if a URL it wants to
retrieve can't be downloaded, unless the URL is an actual package download.
Instead, it issues a warning and tries to keep going.
(backport from trunk)

Comments (0)

Files changed (2)

 Release Notes/Change History
 ============================
 
+0.6c6
+ * EasyInstall no longer aborts the installation process if a URL it wants to
+   retrieve can't be downloaded, unless the URL is an actual package download.
+   Instead, it issues a warning and tries to keep going.
+ 
 0.6c5
  * Fixed ``.dll`` files on Cygwin not having executable permisions when an egg
    is installed unzipped.

setuptools/package_index.py

         """Evaluate a URL as a possible download, and maybe retrieve it"""
         if url in self.scanned_urls and not retrieve:
             return
-
         self.scanned_urls[url] = True
         if not URL_SCHEME(url):
             self.process_filename(url)
             return
 
         self.info("Reading %s", url)
-        f = self.open_url(url)
+        f = self.open_url(url, "Download error: %s -- Some packages may not be found!")
+        if f is None: return
         self.fetched_urls[url] = self.fetched_urls[f.url] = True
 
         if 'html' not in f.headers.get('content-type', '').lower():
         pass    # no-op
 
 
-    def open_url(self, url):
+    def open_url(self, url, warning=None):
         if url.startswith('file:'):
             return local_open(url)
         try:
         except urllib2.HTTPError, v:
             return v
         except urllib2.URLError, v:
-            raise DistutilsError("Download error: %s" % v.reason)
+            if warning: self.warn(warning, v.reason)
+            else: raise DistutilsError("Download error: %s" % v.reason)
 
     def _download_url(self, scheme, url, tmpdir):
         # Determine download filename
         self.process_url(url, True)
 
 
-
     def _attempt_download(self, url, filename):
         headers = self._download_to(url, filename)
         if 'html' in headers['content-type'].lower():