Package: piuparts
Severity: normal

find_default_debian_mirrors() returns first mirror from sources.list, by
default on Ubuntu this line contains only "main" and "restricted" components
but both piuparts and debfoster are in "universe" one. Because of that
piuparts can't install debfoster and bails out.

The attached patch simply moves find_default_debian_mirrors() (renamed
to find_default_mirrors()) to classes that inherit after Defaults() so
it can be implemented on distribution level.


-- System Information:
Debian Release: squeeze/sid
  APT prefers karmic-updates
  APT policy: (500, 'karmic-updates'), (500, 'karmic-security'), (500, 'karmic')
Architecture: i386 (i686)

Kernel: Linux 2.6.31-14-generic (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Index: piuparts.py
===================================================================
--- piuparts.py	(revision 531)
+++ piuparts.py	(working copy)
@@ -72,6 +72,9 @@
     
     def get_distribution(self):
         """Return default distribution."""
+
+    def find_default_mirrors(self):
+        """Return list of default mirrors."""
         
 
 class DebianDefaults(Defaults):
@@ -85,6 +88,20 @@
     def get_distribution(self):
         return ["sid"]
 
+    def find_default_mirrors(self):
+        """Find the default Debian mirrors."""
+        mirrors = []
+        try:
+            f = file("/etc/apt/sources.list", "r")
+            for line in f:
+                parts = line.split()
+                if len(parts) > 2 and parts[0] == "deb":
+                    mirrors.append((parts[1], parts[3:]))
+                    break # Only use the first one, at least for now.
+            f.close()
+        except IOError:
+            return None
+        return mirrors
 
 class UbuntuDefaults(Defaults):
 
@@ -97,7 +114,21 @@
     def get_distribution(self):
         return ["gutsy"]
 
+    def find_default_mirrors(self):
+        mirrors = []
+        try:
+            f = open("/etc/apt/sources.list", "r")
+            for line in f:
+                parts = line.split()
+                if len(parts) > 2 and parts[0] == "deb":
+                    mirrors.append((parts[1], self.get_components()))
+                    break # Only use the first one, at least for now.
+            f.close()
+        except IOError:
+            return None
+        return mirrors
 
+
 class DefaultsFactory:
 
     """Instantiate the right defaults class."""
@@ -1685,22 +1716,6 @@
     return parts[0], parts[1:] or defaultcomponents[:]
 
 
-def find_default_debian_mirrors():
-    """Find the default Debian mirrors."""
-    mirrors = []
-    try:
-        f = file("/etc/apt/sources.list", "r")
-        for line in f:
-            parts = line.split()
-            if len(parts) > 2 and parts[0] == "deb":
-                mirrors.append((parts[1], parts[3:]))
-                break # Only use the first one, at least for now.
-        f.close()
-    except IOError:
-        return None
-    return mirrors
-
-
 def forget_ignores(option, opt, value, parser, *args, **kwargs):
     settings.bindmounts = []
     parser.values.ignore = []
@@ -1909,7 +1924,7 @@
         settings.debian_distros = defaults.get_distribution()
 
     if not settings.debian_mirrors:
-        settings.debian_mirrors = find_default_debian_mirrors()
+        settings.debian_mirrors = defaults.find_default_mirrors()
         if not settings.debian_mirrors:
             settings.debian_mirrors = defaults.get_mirror()
 

Reply via email to