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()