Add support for getting ABI information from debian-ports

svn path=/dists/trunk/linux-2.6/; revision=18637
This commit is contained in:
Ben Hutchings 2012-01-26 05:27:39 +00:00
parent 140862fc78
commit 6e00b45f9b
1 changed files with 19 additions and 6 deletions

View File

@ -15,13 +15,14 @@ from debian_linux.debian import *
default_url_base = "http://ftp.de.debian.org/debian/"
default_url_base_incoming = "http://incoming.debian.org/"
default_url_base_ports = "http://ftp.debian-ports.org/debian/"
class url_debian_flat(object):
def __init__(self, base):
self.base = base
def __call__(self, source, filename):
def __call__(self, source, filename, arch):
return self.base + filename
@ -29,10 +30,17 @@ class url_debian_pool(object):
def __init__(self, base):
self.base = base
def __call__(self, source, filename):
def __call__(self, source, filename, arch):
return self.base + "pool/main/" + source[0] + "/" + source + "/" + filename
class url_debian_ports_pool(url_debian_pool):
def __call__(self, source, filename, arch):
if arch == 'all':
return url_debian_ports_pool(self, source, filename, arch)
return self.base + "pool-" + arch + "/main/" + source[0] + "/" + source + "/" + filename
class Main(object):
dir = None
@ -81,7 +89,7 @@ class Main(object):
def get_abi(self, arch, prefix):
filename = "linux-headers-%s-%s_%s_%s.deb" % (self.version_abi, prefix, self.version_source, arch)
f = self.retrieve_package(self.url, filename)
f = self.retrieve_package(self.url, filename, arch)
d = self.extract_package(f, "linux-headers-%s_%s" % (prefix, arch))
f1 = d + "/usr/src/linux-headers-%s-%s/Module.symvers" % (self.version_abi, prefix)
s = Symbols(open(f1))
@ -90,15 +98,15 @@ class Main(object):
def get_config(self):
filename = "linux-support-%s_%s_all.deb" % (self.version_abi, self.version_source)
f = self.retrieve_package(self.url_config, filename)
f = self.retrieve_package(self.url_config, filename, 'all')
d = self.extract_package(f, "linux-support")
c = d + "/usr/src/linux-support-" + self.version_abi + "/config.defines.dump"
config = ConfigCoreDump(fp=file(c))
shutil.rmtree(d)
return config
def retrieve_package(self, url, filename):
u = url(self.source, filename)
def retrieve_package(self, url, filename, arch):
u = url(self.source, filename, arch)
filename_out = self.dir + "/" + filename
f_in = urllib2.urlopen(u)
@ -165,8 +173,10 @@ if __name__ == '__main__':
options = optparse.OptionParser()
options.add_option("-i", "--incoming", action="store_true", dest="incoming")
options.add_option("--incoming-config", action="store_true", dest="incoming_config")
options.add_option("--ports", action="store_true", dest="ports")
options.add_option("-u", "--url-base", dest="url_base", default=default_url_base)
options.add_option("--url-base-incoming", dest="url_base_incoming", default=default_url_base_incoming)
options.add_option("--url-base-ports", dest="url_base_ports", default=default_url_base_ports)
opts, args = options.parse_args()
@ -180,12 +190,15 @@ if __name__ == '__main__':
url_base = url_debian_pool(opts.url_base)
url_base_incoming = url_debian_flat(opts.url_base_incoming)
url_base_ports = url_debian_ports_pool(opts.url_base_ports)
if opts.incoming_config:
url = url_config = url_base_incoming
else:
url_config = url_base
if opts.incoming:
url = url_base_incoming
elif opts.ports:
url = url_base_ports
else:
url = url_base