aboutsummaryrefslogtreecommitdiffstats
path: root/debian/lib/python
diff options
context:
space:
mode:
authorBastian Blank <waldi@debian.org>2006-03-02 16:47:30 +0000
committerBastian Blank <waldi@debian.org>2006-03-02 16:47:30 +0000
commit333210a7a73a9bcf2520b50a3d16c4332587b120 (patch)
tree90b81b137cc325d8ca13238751ebaa374e93af62 /debian/lib/python
parentaf4c47d96baa1d1fa5ff5a0de0cf22297117989d (diff)
downloadkernel_replicant_linux-333210a7a73a9bcf2520b50a3d16c4332587b120.tar.gz
kernel_replicant_linux-333210a7a73a9bcf2520b50a3d16c4332587b120.tar.bz2
kernel_replicant_linux-333210a7a73a9bcf2520b50a3d16c4332587b120.zip
r6005: waldi | 2006-03-02 11:06:40 +0100
* debian/lib/python/debian_linux/gencontrol.py: Populate UPSTREAMVERSION, ABINAME and LOCALVERSION in an stable fashion. * debian/rules.real: Use UPSTREAMVERSION, ABINAME and LOCALVERSION. * debian/templates/control.headers.arch.in, debian/templates/control.headers.in, debian/templates/control.headers.latest.in, debian/templates/control.headers.subarch.in, debian/templates/control.image.in, debian/templates/control.image.latest.in: Use upstreamversion and localversion substitutions. r6006: waldi | 2006-03-02 11:16:14 +0100 * debian/lib/python/debian_linux/gencontrol.py: Add SOURCEVERSION. * debian/rules.real - Use SOURCEVERSION. - Fix another brocken ABINAME usage. r6007: waldi | 2006-03-02 11:41:01 +0100 * debian/arch/defines, debian/arch/alpha/defines, debian/arch/amd64/defines, debian/arch/arm/defines, debian/arch/armeb/defines, debian/arch/hppa/defines, debian/arch/i386/defines, debian/arch/ia64/defines, debian/arch/m68k/defines, debian/arch/mips/defines, debian/arch/mipsel/defines, debian/arch/powerpc/defines, debian/arch/s390/defines, debian/arch/sparc/defines: Move image specific specs into image section. * debian/bin/gencontrol.py: Use image section if neccesary. * debian/lib/python/debian_linux/gencontrol.py: Support image section. r6008: waldi | 2006-03-02 11:41:37 +0100 debian/lib/python/debian_linux/config.py: Remove old workaround. r6009: waldi | 2006-03-02 12:15:21 +0100 * bin/gencontrol.py: Fix image description addition. * lib/python/debian_linux/debian.py: Parse Description also. * lib/python/debian_linux/gencontrol.py: Fix Description setup. * lib/python/debian_linux/utils.py: Always provide the complete text. r6010: waldi | 2006-03-02 12:42:47 +0100 * debian/arch/defines: Add initramfs-generator relations. * debian/arch/alpha/defines, debian/arch/amd64/defines, debian/arch/arm/defines, debian/arch/armeb/defines, debian/arch/hppa/defines, debian/arch/i386/defines, debian/arch/ia64/defines, debian/arch/m68k/defines, debian/arch/mips/defines, debian/arch/mipsel/defines, debian/arch/powerpc/defines, debian/arch/powerpc/vserver/defines, debian/arch/s390/defines, debian/arch/sparc/defines: Specify initramfs settings. * debian/bin/gencontrol.py: Generate dependencies for initramfs generators. * debian/lib/python/debian_linux/config.py: Add more fields. * debian/lib/python/debian_linux/gencontrol.py: Fix. * debian/rules.real: Use INITRAMFS. r6011: waldi | 2006-03-02 13:05:45 +0100 debian/bin/gencontrol.py, debian/lib/python/debian_linux/gencontrol.py - Don't export the usage of the image section into the generic code. - Fix localversion spec. r6012: waldi | 2006-03-02 13:20:58 +0100 debian/lib/python/debian_linux/config.py: Fix section parsing. r6013: waldi | 2006-03-02 13:27:44 +0100 * debian/lib/python/debian_linux/config.py: Use a list of directories. * debian/lib/python/debian_linux/gencontrol.py: Update. r6014: waldi | 2006-03-02 13:30:30 +0100 * debian/bin/gencontrol.py: Add base image config entry. * debian/lib/python/debian_linux/gencontrol.py: Remove another usage of the image config sections. r6030: waldi | 2006-03-02 17:44:17 +0100 debian/bin/gencontrol.py: Provide correct localversion for the headers build. svn path=/dists/trunk/linux-2.6/; revision=6031
Diffstat (limited to 'debian/lib/python')
-rw-r--r--debian/lib/python/debian_linux/config.py24
-rw-r--r--debian/lib/python/debian_linux/debian.py25
-rw-r--r--debian/lib/python/debian_linux/gencontrol.py72
-rw-r--r--debian/lib/python/debian_linux/utils.py10
4 files changed, 81 insertions, 50 deletions
diff --git a/debian/lib/python/debian_linux/config.py b/debian/lib/python/debian_linux/config.py
index 8a0d79267c8a..031a699fdc5b 100644
--- a/debian/lib/python/debian_linux/config.py
+++ b/debian/lib/python/debian_linux/config.py
@@ -29,24 +29,22 @@ class config_reader(dict):
'arches': schema_item_list(),
'available': schema_item_boolean(),
'flavours': schema_item_list(),
+ 'initramfs': schema_item_boolean(),
+ 'initramfs-generators': schema_item_list(),
'subarches': schema_item_list(),
}
config_name = "defines"
- def __init__(self, underlay = None):
- self._underlay = underlay
+ def __init__(self, dirs = []):
+ self._dirs = dirs
self._read_base()
def __getitem__(self, key):
return self.get(key)
def _get_files(self, name):
- ret = []
- if self._underlay is not None:
- ret.append(os.path.join(self._underlay, name))
- ret.append(os.path.join('debian/arch', name))
- return ret
+ return [os.path.join(i, name) for i in self._dirs if i]
def _read_arch(self, arch):
files = self._get_files("%s/%s" % (arch, self.config_name))
@@ -57,12 +55,17 @@ class config_reader(dict):
for section in iter(config):
real = list(section)
+ # TODO
if real[-1] in subarches:
real[0:0] = ['base', arch]
elif real[-1] in flavours:
real[0:0] = ['base', arch, 'none']
else:
- real[0:] = [real.pop(), arch]
+ real[0:0] = [real.pop()]
+ if real[-1] in flavours:
+ real[1:1] = [arch, 'none']
+ else:
+ real[1:1] = [arch]
real = tuple(real)
s = self.get(real, {})
s.update(config[section])
@@ -151,11 +154,6 @@ class config_reader(dict):
ret = {}
for i in xrange(0, len(args) + 1):
ret.update(self.get(tuple([section] + list(args[:i])), {}))
- if section == 'base':
- for i in ('abiname', 'arches', 'flavours', 'subarches'):
- try:
- del ret[i]
- except KeyError: pass
return ret
def sections(self):
diff --git a/debian/lib/python/debian_linux/debian.py b/debian/lib/python/debian_linux/debian.py
index 0bb8aa2fed32..9e41e0c83d3d 100644
--- a/debian/lib/python/debian_linux/debian.py
+++ b/debian/lib/python/debian_linux/debian.py
@@ -81,6 +81,25 @@ $
ret['source_upstream'] = ret['upstream']
return ret
+class package_description(object):
+ __slots__ = "short", "long"
+
+ def __init__(self, value = None):
+ if value is not None:
+ self.short, long = value.split ("\n", 1)
+ self.long = long.split ("\n.\n")
+ else:
+ self.short = None
+ self.long = []
+
+ def __str__(self):
+ ret = self.short + '\n'
+ w = utils.wrap(width = 74, fix_sentence_endings = True)
+ pars = []
+ for i in self.long:
+ pars.append('\n '.join(w.wrap(i)))
+ return self.short + '\n ' + '\n .\n '.join(pars)
+
class package_relation(object):
__slots__ = "name", "version", "arches"
@@ -183,12 +202,14 @@ class package(dict):
('Suggests', package_relation_list),
('Replaces', package_relation_list),
('Conflicts', package_relation_list),
- ('Description', utils.field_string),
+ ('Description', package_description),
))
def __setitem__(self, key, value):
try:
- value = self._fields[key](value)
+ cls = self._fields[key]
+ if not isinstance(value, cls):
+ value = cls(value)
except KeyError: pass
super(package, self).__setitem__(key, value)
diff --git a/debian/lib/python/debian_linux/gencontrol.py b/debian/lib/python/debian_linux/gencontrol.py
index e4a1f31c499e..5b5c475854b1 100644
--- a/debian/lib/python/debian_linux/gencontrol.py
+++ b/debian/lib/python/debian_linux/gencontrol.py
@@ -14,9 +14,9 @@ class packages_list(sorted_dict):
class gencontrol(object):
def __init__(self, underlay = None):
self.changelog = read_changelog()
- self.config = config_reader(underlay)
+ self.config = config_reader(["debian/arch", underlay])
self.templates = templates()
- self.version, self.abiname, self.kpkg_abiname, self.changelog_vars = self.process_changelog({})
+ self.version, self.abiname, self.changelog_vars = self.process_changelog({})
def __call__(self):
packages = packages_list()
@@ -37,18 +37,23 @@ class gencontrol(object):
makeflags = {
'VERSION': self.version['version'],
'SOURCE_UPSTREAM': self.version['source_upstream'],
- 'SOURCE_VERSION': self.version['source'],
- 'UPSTREAM_VERSION': self.version['upstream'],
+ 'SOURCEVERSION': self.version['source'],
+ 'UPSTREAMVERSION': self.version['upstream'],
'ABINAME': self.abiname,
- 'KPKG_ABINAME': self.kpkg_abiname,
'REVISIONS': ' '.join([i['Version']['debian'] for i in self.changelog[::-1]]),
}
+ vars = self.changelog_vars.copy()
+
+ self.do_main_setup(vars, makeflags)
self.do_main_packages(packages)
self.do_main_makefile(makefile, makeflags)
for arch in iter(self.config['base',]['arches']):
- self.do_arch(packages, makefile, arch, self.changelog_vars.copy(), makeflags.copy())
+ self.do_arch(packages, makefile, arch, vars.copy(), makeflags.copy())
+
+ def do_main_setup(self, vars, makeflags):
+ pass
def do_main_makefile(self, makefile, makeflags):
makeflags_string = ' '.join(["%s='%s'" % i for i in makeflags.iteritems()])
@@ -89,6 +94,7 @@ class gencontrol(object):
def do_arch(self, packages, makefile, arch, vars, makeflags):
config_entry = self.config['base', arch]
vars.update(config_entry)
+ vars.update(self.config['image', arch])
if not config_entry.get('available', True):
for i in ('binary-arch', 'build', 'setup'):
@@ -97,7 +103,10 @@ class gencontrol(object):
extra = {}
makeflags['ARCH'] = arch
- self.do_arch_makeflags(makeflags, arch)
+
+ vars['localversion'] = vars['abiname']
+
+ self.do_arch_setup(vars, makeflags, arch)
self.do_arch_makefile(makefile, arch, makeflags)
self.do_arch_packages(packages, makefile, arch, vars, makeflags, extra)
@@ -106,7 +115,7 @@ class gencontrol(object):
self.do_arch_packages_post(packages, makefile, arch, vars, makeflags, extra)
- def do_arch_makeflags(self, makeflags, arch):
+ def do_arch_setup(self, vars, makeflags, arch):
pass
def do_arch_makefile(self, makefile, arch, makeflags):
@@ -121,22 +130,22 @@ class gencontrol(object):
pass
def do_subarch(self, packages, makefile, arch, subarch, vars, makeflags, extra):
- if subarch == 'none':
- vars['subarch'] = ''
- else:
- vars['subarch'] = '-%s' % subarch
config_entry = self.config['base', arch, subarch]
vars.update(config_entry)
+ vars.update(self.config.get(('image', arch, subarch), {}))
makeflags['SUBARCH'] = subarch
- self.do_subarch_makeflags(makeflags, arch, subarch)
+ if subarch != 'none':
+ vars['localversion'] += '-' + subarch
+
+ self.do_subarch_setup(vars, makeflags, arch, subarch)
self.do_subarch_makefile(makefile, arch, subarch, makeflags)
self.do_subarch_packages(packages, makefile, arch, subarch, vars, makeflags, extra)
for flavour in config_entry['flavours']:
self.do_flavour(packages, makefile, arch, subarch, flavour, vars.copy(), makeflags.copy(), extra)
- def do_subarch_makeflags(self, makeflags, arch, subarch):
+ def do_subarch_setup(self, vars, makeflags, arch, subarch):
pass
def do_subarch_makefile(self, makefile, arch, subarch, makeflags):
@@ -151,8 +160,8 @@ class gencontrol(object):
def do_flavour(self, packages, makefile, arch, subarch, flavour, vars, makeflags, extra):
config_entry = self.config['base', arch, subarch, flavour]
vars.update(config_entry)
+ vars.update(self.config.get(('image', arch, subarch, flavour), {}))
- vars['flavour'] = flavour
if not vars.has_key('class'):
warnings.warn('No class entry in config for flavour %s, subarch %s, arch %s' % (flavour, subarch, arch), DeprecationWarning)
vars['class'] = '%s-class' % flavour
@@ -169,16 +178,17 @@ class gencontrol(object):
packages['source']['Build-Depends'].extend(relations_compiler)
makeflags['FLAVOUR'] = flavour
- self.do_flavour_makeflags(makeflags, arch, subarch, flavour)
+ vars['localversion'] += '-' + flavour
+
+ self.do_flavour_setup(vars, makeflags, arch, subarch, flavour)
self.do_flavour_makefile(makefile, arch, subarch, flavour, makeflags)
self.do_flavour_packages(packages, makefile, arch, subarch, flavour, vars, makeflags, extra)
- def do_flavour_makeflags(self, makeflags, arch, subarch, flavour):
+ def do_flavour_setup(self, vars, makeflags, arch, subarch, flavour):
config_entry = self.config.merge('base', arch, subarch, flavour)
for i in (
('compiler', 'COMPILER'),
('kernel-arch', 'KERNEL_ARCH')
- ('initrd', 'INITRD')
):
if config_entry.has_key(i[0]):
makeflags[i[1]] = config_entry[i[0]]
@@ -192,19 +202,17 @@ class gencontrol(object):
pass
def process_changelog(self, in_vars):
- ret = [None, None, None, None]
+ ret = [None, None, None]
ret[0] = version = self.changelog[0]['Version']
vars = in_vars.copy()
if version['modifier'] is not None:
- ret[1] = vars['abiname'] = version['modifier']
- ret[2] = ""
+ ret[1] = vars['abiname'] = ''
else:
- ret[1] = vars['abiname'] = self.config['base',]['abiname']
- ret[2] = "-%s" % vars['abiname']
- vars['version'] = version['source']
+ ret[1] = vars['abiname'] = '-%s' % self.config['abiname',]['abiname']
+ vars['upstreamversion'] = version['upstream']
vars['version'] = version['version']
vars['major'] = version['major']
- ret[3] = vars
+ ret[2] = vars
return ret
def process_relation(self, key, e, in_e, vars):
@@ -223,14 +231,12 @@ class gencontrol(object):
e[key] = dep
def process_description(self, e, in_e, vars):
- desc = in_e['Description']
- desc_short, desc_long = desc.split ("\n", 1)
- desc_pars = [self.substitute(i, vars) for i in desc_long.split ("\n.\n")]
- desc_pars_wrapped = []
- w = wrap(width = 74, fix_sentence_endings = True)
- for i in desc_pars:
- desc_pars_wrapped.append(w.fill(i))
- e['Description'] = "%s\n%s" % (self.substitute(desc_short, vars), '\n.\n'.join(desc_pars_wrapped))
+ in_desc = in_e['Description']
+ desc = in_desc.__class__()
+ desc.short = self.substitute(in_desc.short, vars)
+ for i in in_desc.long:
+ desc.long.append(self.substitute(i, vars))
+ e['Description'] = desc
def process_package(self, in_entry, vars):
e = package()
diff --git a/debian/lib/python/debian_linux/utils.py b/debian/lib/python/debian_linux/utils.py
index 5f73837f0bf7..1519e4ebb882 100644
--- a/debian/lib/python/debian_linux/utils.py
+++ b/debian/lib/python/debian_linux/utils.py
@@ -99,6 +99,8 @@ class templates(dict):
while True:
e = debian.package()
+ last = None
+ lines = []
while True:
line = f.readline()
if not line:
@@ -109,13 +111,17 @@ class templates(dict):
if line[0] in ' \t':
if not last:
raise ValueError('Continuation line seen before first header')
- e[last] += '\n' + line.lstrip()
+ lines.append(line.lstrip())
continue
+ if last:
+ e[last] = '\n'.join(lines)
i = line.find(':')
if i < 0:
raise ValueError("Not a header, not a continuation: ``%s''" % line)
last = line[:i]
- e[last] = line[i+1:].lstrip()
+ lines = [line[i+1:].lstrip()]
+ if last:
+ e[last] = '\n'.join(lines)
if not e:
break