diff options
author | Bastian Blank <waldi@debian.org> | 2006-03-02 16:47:30 +0000 |
---|---|---|
committer | Bastian Blank <waldi@debian.org> | 2006-03-02 16:47:30 +0000 |
commit | 333210a7a73a9bcf2520b50a3d16c4332587b120 (patch) | |
tree | 90b81b137cc325d8ca13238751ebaa374e93af62 /debian/lib/python | |
parent | af4c47d96baa1d1fa5ff5a0de0cf22297117989d (diff) | |
download | kernel_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.py | 24 | ||||
-rw-r--r-- | debian/lib/python/debian_linux/debian.py | 25 | ||||
-rw-r--r-- | debian/lib/python/debian_linux/gencontrol.py | 72 | ||||
-rw-r--r-- | debian/lib/python/debian_linux/utils.py | 10 |
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 |