* Set compiler build dependencies from config informations.

* Install debian/lib into headers-all package.
* Unlink version file before writing to them.
* debian/README: Remove outdated information.

r5275:  waldi | 2006-01-05 14:00:15 +0100
* debian/lib/python/debian_linux/debian.py: Move package class from utils.
* debian/lib/python/debian_linux/utils.py: Use package class from debian.

r5277:  waldi | 2006-01-05 14:41:45 +0100
* debian/lib/python/debian_linux/debian.py
  - Add package_relation, package_relation_list and package_relation_group
    classes.
  - Use them in the package class.
* debian/lib/python/debian_linux/gencontrol.py
  - Support new relation classes.

r5278:  waldi | 2006-01-05 14:46:55 +0100
debian/bin/gencontrol.py: Use relation objects for tree entry.

r5279:  waldi | 2006-01-05 15:20:00 +0100
* debian/bin/gencontrol.py: Don't fail if some relation fields are empty.
* debian/lib/python/debian_linux/debian.py: Merge relation entries.

r5280:  waldi | 2006-01-05 15:24:08 +0100
* debian/arch/defines, debian/arch/hppa/defines: Set relations for compiler.
* debian/lib/python/debian_linux/gencontrol.py: Set compiler build dependencies
  from config informations.
* debian/templates/control.source.in: Remove compiler from Build-Depends.

r5281:  waldi | 2006-01-05 15:39:45 +0100
* debian/rules.real
  - Install debian/lib into headers-all package.
  - Call dh_python with python version 2.4.
* debian/templates/control.source.in:
  Add python to build-depends, needed by dh_python.

r5282:  waldi | 2006-01-05 16:36:33 +0100
debian/rules.real
- Remove outdated comment about include_common_config.
- Remove support for headers_dirs.

r5283:  waldi | 2006-01-05 16:38:05 +0100
debian/arch/amd64/Makefile.inc, debian/arch/arm/Makefile.inc,
debian/arch/hppa/Makefile.inc, debian/arch/powerpc/Makefile.inc,
debian/arch/sparc/Makefile.inc: Remove not longer supported variables.

r5284:  waldi | 2006-01-05 16:42:33 +0100
debian/lib/python/debian_linux/gencontrol.py:
Warn if the class setting is not available.

r5287:  waldi | 2006-01-05 19:07:05 +0100
debian/arch/powerpc/defines: Set kernel-arch for all except powerpc64 to ppc.

r5288:  waldi | 2006-01-05 19:08:35 +0100
debian/lib/python/debian_linux/config.py:
Only bail out if a section is not found in any config file.

r5294:  waldi | 2006-01-05 19:26:57 +0100
debian/lib/python/debian_linux/gencontrol.py
- Support config underlay.
- Add some small default implementations.

r5295:  waldi | 2006-01-05 19:39:55 +0100
debian/README: Remove outdated information.

r5325:  waldi | 2006-01-06 22:40:17 +0100
debian/bin/apply.py
- Don't reference the debian_linux module, it is not available.
- Unlink version file before writing to them.

svn path=/dists/trunk/linux-2.6/; revision=5327
This commit is contained in:
Bastian Blank 2006-01-06 22:32:16 +00:00
parent 5008990d6c
commit b37871ac10
17 changed files with 222 additions and 199 deletions

103
debian/README vendored
View File

@ -8,26 +8,13 @@ the machine descriptions for various flavours. For arches with
subarches the subdirectory arch/<arch>/<subarch> with the same file subarches the subdirectory arch/<arch>/<subarch> with the same file
structure must be created for each subarch. structure must be created for each subarch.
Support for arch/subarch-specific patches Kernel config files
----------------------------------------- -------------------
Patches specific to a particular architecture or subarchitecture and
not included into the debian patch set should be placed in the
debian/patches-arch subdirectory. Patch must be named <arch>.diff or
<subarch>.diff. If such patch is present, it will be automatically
applied during the unpacking of the build tree for a particular
(sub)architecture. Patches present in the debian/patches-arch will also
be included in the kernel-patch-debian package, suitable for building
kernels with make-kpkg.
Config files
------------
Configuration files are constructed dynamically by concatenating a number Configuration files are constructed dynamically by concatenating a number
of config files as described below. of config files as described below.
For architecture without subarches: For architecture without subarches:
Configuration file for kernel-image:
arch/config arch/config
arch/<arch>/config arch/<arch>/config
arch/<arch>/config.<flavour> arch/<arch>/config.<flavour>
@ -65,14 +52,7 @@ into the templates:
this is unset, it will default to @class@. this is unset, it will default to @class@.
@desc@ (Potentially) multi-line verbiage that's appended to @desc@ (Potentially) multi-line verbiage that's appended to
-image descriptions. -image descriptions.
@ltver@ linux-tree version, a single digit.
@srcver@ Source version, extracted from the changelog.
This is normally @version@-@ltver@.
@lt_depends@ The Depends field for the linux-tree package.
@lt_provides@ The Provides field for the linux-tree package.
@abiname@ Current abiname, a single digit. @abiname@ Current abiname, a single digit.
@allheaders@ Given the arch, a list of all the linux-headers packages for the
arch - used for kernel-headers-x.y.z-n-arch.
Normally, the arch-specific contents should be controlled by Normally, the arch-specific contents should be controlled by
adjusting the corresponding defines file. adjusting the corresponding defines file.
@ -85,88 +65,9 @@ variables. It may be used to override the standard variables on
per-architecture basis and other evil things. So far the valid uses of per-architecture basis and other evil things. So far the valid uses of
this file include the setting of the following variables: this file include the setting of the following variables:
headers_dirs
This variable is substituted into the headers-install script,
controlling which asm-* directories are included into the
kernel-headers package. By default it is set to karch (see
above). See header-install.in file for detail. Typical usage:
headers_dirs := sparc | sparc64
headers_subarch
The subarch to pass to the --subarch option for the make-kpkg
call to build the kernel-headers. Typical usage:
headers_subarch := sparc64
build_subarch
Setting this variable to non-empty value will cause an option
--subarch $(build_subarch) added to 'build' and 'kernel-image'
make-kpkg calls. If a substring @flavour@ is present in the
definition of this variable, it will be expanded to the current
flavour during build time. In general, if you wish to add subarch
support for your architecture, you should contact kernel-package
maintainer to ensure that the flavour name correctly maps onto a
kernel subarch name. Typical usage:
build_subarch := pmac
or
build_subarch := @flavour@
build_makeflags
This variable may contain the make flags settings for the
make-kpkg invocation in the 'build' target. Currently it is
only used by amd64, where it should be set to something like
build_makeflags := 'CC=amd64-linux-gcc V=1'
The value of the variable must be properly quoted.
initrd_modules
This variable may contain a space-separated list of modules
which should be hard-linked into the /lib/modules/<version>/initrd
directory, so that they will be included by mkinitrd. Full
pathname relative to the /lib/modules/<version> directory should
be give, no quoting is necessary. Typical usage:
initrd_modules := kernel/drivers/video/vesafb.ko kernel/security/capability.ko
image_postproc image_postproc
A command to be run after the kernel image is built. As far as I know, A command to be run after the kernel image is built. As far as I know,
it only required on sparc for stripping of the kernel which is too big it only required on sparc for stripping of the kernel which is too big
to be booted otherwise. Typical use is too ugly to be presented here. to be booted otherwise. Typical use is too ugly to be presented here.
image_prefix_flavours
image_prefix
These variables allow to prepend the 'make-kpkg kernel_image' call with
an arbitrary prefix for selected flavours. Some architectures have a
32- and 64-bit versions. If kernels are built on the 64-bit hardware, then
building a 32-bit kernel usually requires using a wrapper which sets the
correct execution domain (such as sparc32 or linux32). If the variable
image_prefix_flavours is non-empty and contains a space-separated list
if flavours, then make-kpkg invocation to create a kernel_image target
will be prepended with contents of the image_prefix variable. Typical
usage:
image_prefix_flavours := sparc32 sparc32-smp
image_prefix := sparc32
extra_postinstall_command
This variable, if defined, is executed at the end of the
post-install script, which is used by kernel-package to add or
modify the files going into the kernel image package.
It can use these variables (but see templates/post-install.in for
details): $(subarch), $(flavour), $(version) and $(abiname). Since
Makefile.inc is a Makefile, the leading $ need to be escaped as
double $$.

View File

@ -1,5 +1,3 @@
# #
# Variables # Variables
# #
headers_dirs = x86_64

View File

@ -1,5 +1,3 @@
# #
# Variables # Variables
# #
include_common_config := no
default_config := footbridge

4
debian/arch/defines vendored
View File

@ -28,3 +28,7 @@ available: False
yaird: mkinitrd.yaird yaird: mkinitrd.yaird
initramfs-tools: mkinitramfs initramfs-tools: mkinitramfs
[relations]
gcc: gcc (>= 4:4.0)
gcc-3.3: gcc-3.3

View File

@ -1,4 +1,3 @@
# #
# Variables # Variables
# #
headers_dirs = parisc

View File

@ -20,3 +20,6 @@ class: 64-bit PA-RISC
[parisc64-smp] [parisc64-smp]
class: multi-processor 64-bit PA-RISC class: multi-processor 64-bit PA-RISC
[relations]
gcc: gcc (>= 4:4.0), binutils-hppa64, gcc-4.0-hppa64

View File

@ -1,4 +1,3 @@
# #
# Variables # Variables
# #
headers_dirs = ppc | ppc64 | m68k

View File

@ -6,7 +6,7 @@ flavours:
powerpc-miboot powerpc-miboot
powerpc64 powerpc64
kernel-header-dirs: powerpc ppc m68k kernel-header-dirs: powerpc ppc m68k
kernel-arch: powerpc kernel-arch: ppc
kpkg-subarch: ppc kpkg-subarch: ppc
[apus] [apus]
@ -23,3 +23,4 @@ depends: mkvmlinuz (>= 18)
[powerpc64] [powerpc64]
kpkg-subarch: powerpc64 kpkg-subarch: powerpc64
kernel-arch: powerpc

View File

@ -1,7 +1,4 @@
# #
# Variables # Variables
# #
headers_dirs := sparc64
image_postproc = strip -R .comment -R .note -K sun4u_init -K _end -K _start arch/$(subst 32,,$(subst -smp,,$*))/boot/image image_postproc = strip -R .comment -R .note -K sun4u_init -K _end -K _start arch/$(subst 32,,$(subst -smp,,$*))/boot/image
# image_prefix_flavours := sparc32 sparc32-smp
# image_prefix := sparc32

31
debian/bin/apply.py vendored
View File

@ -1,8 +1,7 @@
#!/usr/bin/env python2.4 #!/usr/bin/env python2.4
import os.path, sys import os, os.path, re, sys
from warnings import warn from warnings import warn
import debian_linux
_default_home = "@home@" _default_home = "@home@"
_default_revisions = "@revisions@" _default_revisions = "@revisions@"
@ -207,13 +206,33 @@ class version(object):
def __init__(self, string = None): def __init__(self, string = None):
if string is not None: if string is not None:
t = debian_linux.parse_version(string) self.upstream, self.revision = self.parse(string)
self.upstream = t['source_upstream']
self.revision = t['debian']
def __str__(self): def __str__(self):
return "%s-%s" % (self.upstream, self.revision) return "%s-%s" % (self.upstream, self.revision)
_re = r"""
^
(
(?:
\d+\.\d+\.\d+\+
)?
\d+\.\d+\.\d+
(?:
-.+?
)?
)
-
([^-]+)
$
"""
def parse(self, version):
match = re.match(self._re, version, re.X)
if match is None:
raise ValueError
return match.groups()
class version_file(object): class version_file(object):
_file = 'version.Debian' _file = 'version.Debian'
extra = () extra = ()
@ -252,6 +271,8 @@ class version_file(object):
self.extra = tuple(list[1].split('_')) self.extra = tuple(list[1].split('_'))
def _write(self): def _write(self):
if os.path.lexists(self._file):
os.unlink(self._file)
file(self._file, 'w').write('%s\n' % self) file(self._file, 'w').write('%s\n' % self)
def begin(self): def begin(self):

View File

@ -2,6 +2,7 @@
import os, os.path, re, sys, textwrap, ConfigParser import os, os.path, re, sys, textwrap, ConfigParser
sys.path.append("debian/lib/python") sys.path.append("debian/lib/python")
import debian_linux.gencontrol import debian_linux.gencontrol
from debian_linux.debian import *
class gencontrol(debian_linux.gencontrol.gencontrol): class gencontrol(debian_linux.gencontrol.gencontrol):
def do_main_packages(self, packages): def do_main_packages(self, packages):
@ -126,7 +127,7 @@ class gencontrol(debian_linux.gencontrol.gencontrol):
in_entry['Description'] += "\n.\n" + vars['desc'] in_entry['Description'] += "\n.\n" + vars['desc']
entry = self.process_package(in_entry, vars) entry = self.process_package(in_entry, vars)
for field in 'Depends', 'Provides', 'Suggests', 'Recommends', 'Conflicts': for field in 'Depends', 'Provides', 'Suggests', 'Recommends', 'Conflicts':
value = entry.get(field, []) value = entry.get(field, package_relation_list())
t = vars.get(field.lower(), []) t = vars.get(field.lower(), [])
value.extend(t) value.extend(t)
entry[field] = value entry[field] = value
@ -141,16 +142,14 @@ class gencontrol(debian_linux.gencontrol.gencontrol):
break break
versions.insert(0, i['Version']) versions.insert(0, i['Version'])
for i in (('Depends', 'Provides')): for i in (('Depends', 'Provides')):
value = [] value = package_relation_list()
tmp = entry.get(i, None) value.extend(entry.get(i, []))
if tmp:
value.extend([j.strip() for j in tmp.split(',')])
if i == 'Depends': if i == 'Depends':
value.append("linux-patch-debian-%(version)s (= %(source)s)" % self.changelog[0]['Version']) value.append("linux-patch-debian-%(version)s (= %(source)s)" % self.changelog[0]['Version'])
value.append(' | '.join(["linux-source-%(version)s (= %(source)s)" % v for v in versions])) value.append(' | '.join(["linux-source-%(version)s (= %(source)s)" % v for v in versions]))
elif i == 'Provides': elif i == 'Provides':
value.extend(["linux-tree-%(source)s" % v for v in versions]) value.extend(["linux-tree-%(source)s" % v for v in versions])
entry[i] = ', '.join(value) entry[i] = value
return entry return entry
if __name__ == '__main__': if __name__ == '__main__':

View File

@ -6,7 +6,7 @@ _marker = object()
class config_reader(dict): class config_reader(dict):
""" """
Read configs in debian/arch and in the overlay directory. Read configs in debian/arch and in the underlay directory.
""" """
class schema_item_boolean(object): class schema_item_boolean(object):
@ -34,8 +34,8 @@ class config_reader(dict):
config_name = "defines" config_name = "defines"
def __init__(self, overlay_dir = None): def __init__(self, underlay = None):
self._overlay_dir = overlay_dir self._underlay = underlay
self._read_base() self._read_base()
def __getitem__(self, key): def __getitem__(self, key):
@ -43,8 +43,8 @@ class config_reader(dict):
def _get_files(self, name): def _get_files(self, name):
ret = [] ret = []
if self._overlay_dir is not None: if self._underlay is not None:
ret.append(os.path.join(self._overlay_dir, name)) ret.append(os.path.join(self._underlay, name))
ret.append(os.path.join('debian/arch', name)) ret.append(os.path.join('debian/arch', name))
return ret return ret
@ -181,21 +181,20 @@ class config_parser(object):
def items(self, section, var = {}): def items(self, section, var = {}):
ret = {} ret = {}
section = '_'.join(section) section = '_'.join(section)
exception = None exceptions = []
for config in self.configs: for config in self.configs:
try: try:
items = config.items(section) items = config.items(section)
except ConfigParser.NoSectionError, e: except ConfigParser.NoSectionError, e:
exception = e exceptions.append(e)
else: else:
for key, value in items: for key, value in items:
try: try:
value = self.schema[key](value) value = self.schema[key](value)
except KeyError: pass except KeyError: pass
ret[key] = value ret[key] = value
exception = None if len(exceptions) == len(self.configs):
if exception is not None: raise exceptions[0]
raise exception
return ret return ret
def sections(self): def sections(self):

View File

@ -1,4 +1,4 @@
import re, utils import itertools, re, utils
def read_changelog(): def read_changelog():
r = re.compile(r""" r = re.compile(r"""
@ -81,3 +81,129 @@ $
ret['source_upstream'] = ret['upstream'] ret['source_upstream'] = ret['upstream']
return ret return ret
class package_relation(object):
__slots__ = "name", "version", "arches"
_re = re.compile(r'^(\S+)(?: \(([^)]+)\))?(?: \[([^]]+)\])?$')
def __init__(self, value = None):
if value is not None:
match = self._re.match(value)
if match is None:
raise RuntimeError, "Can't parse dependency %s" % value
match = match.groups()
self.name = match[0]
self.version = match[1]
if match[2] is not None:
self.arches = re.split('\s+', match[2])
else:
self.arches = []
else:
self.name = None
self.version = None
self.arches = []
def __str__(self):
ret = [self.name]
if self.version is not None:
ret.extend([' (', self.version, ')'])
if self.arches:
ret.extend([' [', ' '.join(self.arches), ']'])
return ''.join(ret)
class package_relation_list(list):
def __init__(self, value = None):
if isinstance(value, (list, tuple)):
self.extend(value)
elif value is not None:
self.extend(value)
def __str__(self):
return ', '.join([str(i) for i in self])
def _match(self, value):
for i in self:
if i._match(value):
return i
return None
def extend(self, value):
if isinstance(value, basestring):
value = [package_relation_group(j.strip()) for j in re.split(',', value.strip())]
for i in value:
if isinstance(i, basestring):
i = package_relation_group(i)
j = self._match(i)
if j:
j._update_arches(i)
else:
self.append(i)
class package_relation_group(list):
def __init__(self, value = None):
if isinstance(value, package_relation_list):
self.extend(value)
elif value is not None:
self._extend(value)
def __str__(self):
return ' | '.join([str(i) for i in self])
def _extend(self, value):
self.extend([package_relation(j.strip()) for j in re.split('\|', value.strip())])
def _match(self, value):
for i, j in itertools.izip(self, value):
if i.name != j.name or i.version != j.version:
return None
return self
def _update_arches(self, value):
for i, j in itertools.izip(self, value):
if i.arches:
for arch in j.arches:
if arch not in i.arches:
i.arches.append(arch)
class package(dict):
_fields = utils.sorted_dict((
('Package', str),
('Source', str),
('Architecture', utils.field_list),
('Section', str),
('Priority', str),
('Maintainer', str),
('Uploaders', str),
('Standards-Version', str),
('Build-Depends', package_relation_list),
('Build-Depends-Indep', package_relation_list),
('Provides', package_relation_list),
('Depends', package_relation_list),
('Recommends', package_relation_list),
('Suggests', package_relation_list),
('Replaces', package_relation_list),
('Conflicts', package_relation_list),
('Description', utils.field_string),
))
def __setitem__(self, key, value):
try:
value = self._fields[key](value)
except KeyError: pass
super(package, self).__setitem__(key, value)
def iterkeys(self):
for i in self._fields.iterkeys():
if self.has_key(i) and self[i]:
yield i
def iteritems(self):
for i in self._fields.iterkeys():
if self.has_key(i) and self[i]:
yield (i, self[i])
def itervalues(self):
for i in self._fields.iterkeys():
if self.has_key(i) and self[i]:
yield self[i]

View File

@ -1,3 +1,4 @@
import warnings
from config import * from config import *
from debian import * from debian import *
from utils import * from utils import *
@ -11,9 +12,9 @@ class packages_list(sorted_dict):
self[package['Package']] = package self[package['Package']] = package
class gencontrol(object): class gencontrol(object):
def __init__(self): def __init__(self, underlay = None):
self.changelog = read_changelog() self.changelog = read_changelog()
self.config = config_reader() self.config = config_reader(underlay)
self.templates = templates() self.templates = templates()
self.version, self.abiname, self.kpkg_abiname, self.changelog_vars = self.process_changelog({}) self.version, self.abiname, self.kpkg_abiname, self.changelog_vars = self.process_changelog({})
@ -113,7 +114,8 @@ class gencontrol(object):
makefile.append("%s-%s:: %s-%s-real" % (i, arch, i, arch)) makefile.append("%s-%s:: %s-%s-real" % (i, arch, i, arch))
def do_arch_packages(self, packages, makefile, arch, vars, makeflags, extra): def do_arch_packages(self, packages, makefile, arch, vars, makeflags, extra):
pass for i in (('binary-arch', 'build', 'setup',)):
makefile.append("%s-%s-real:" % (i, arch))
def do_arch_packages_post(self, packages, makefile, arch, vars, makeflags, extra): def do_arch_packages_post(self, packages, makefile, arch, vars, makeflags, extra):
pass pass
@ -143,7 +145,8 @@ class gencontrol(object):
makefile.append("%s-%s-%s:: %s-%s-%s-real" % (i, arch, subarch, i, arch, subarch)) makefile.append("%s-%s-%s:: %s-%s-%s-real" % (i, arch, subarch, i, arch, subarch))
def do_subarch_packages(self, packages, makefile, arch, subarch, vars, makeflags, extra): def do_subarch_packages(self, packages, makefile, arch, subarch, vars, makeflags, extra):
pass for i in (('binary-arch', 'build', 'setup',)):
makefile.append("%s-%s-%s-real:" % (i, arch, subarch))
def do_flavour(self, packages, makefile, arch, subarch, flavour, vars, makeflags, extra): def do_flavour(self, packages, makefile, arch, subarch, flavour, vars, makeflags, extra):
config_entry = self.config['base', arch, subarch, flavour] config_entry = self.config['base', arch, subarch, flavour]
@ -151,17 +154,33 @@ class gencontrol(object):
vars['flavour'] = flavour vars['flavour'] = flavour
if not vars.has_key('class'): 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 vars['class'] = '%s-class' % flavour
if not vars.has_key('longclass'): if not vars.has_key('longclass'):
vars['longclass'] = vars['class'] vars['longclass'] = vars['class']
config_base = self.config.merge('base', arch)
config_relations = self.config.merge('relations', arch)
compiler = config_base.get('compiler', 'gcc')
relations_compiler = package_relation_list(config_relations[compiler])
for group in relations_compiler:
for item in group:
item.arches = [arch]
packages['source']['Build-Depends'].extend(relations_compiler)
makeflags['FLAVOUR'] = flavour makeflags['FLAVOUR'] = flavour
self.do_flavour_makeflags(makeflags, arch, subarch, flavour) self.do_flavour_makeflags(makeflags, arch, subarch, flavour)
self.do_flavour_makefile(makefile, arch, subarch, flavour, makeflags) self.do_flavour_makefile(makefile, arch, subarch, flavour, makeflags)
self.do_flavour_packages(packages, makefile, arch, subarch, flavour, vars, makeflags, extra) self.do_flavour_packages(packages, makefile, arch, subarch, flavour, vars, makeflags, extra)
def do_flavour_makeflags(self, makeflags, arch, subarch, flavour): def do_flavour_makeflags(self, makeflags, arch, subarch, flavour):
pass config_entry = self.config.merge('base', arch, subarch, flavour)
for i in (
('compiler', 'COMPILER'),
('kernel-arch', 'KERNEL_ARCH')
):
if config_entry.has_key(i[0]):
makeflags[i[1]] = config_entry[i[0]]
def do_flavour_makefile(self, makefile, arch, subarch, flavour, makeflags): def do_flavour_makefile(self, makefile, arch, subarch, flavour, makeflags):
for i in ('binary-arch', 'build', 'setup'): for i in ('binary-arch', 'build', 'setup'):
@ -188,11 +207,17 @@ class gencontrol(object):
def process_relation(self, key, e, in_e, vars): def process_relation(self, key, e, in_e, vars):
in_dep = in_e[key] in_dep = in_e[key]
dep = type(in_dep)() dep = package_relation_list()
for d in in_dep: for in_groups in in_dep:
d = self.substitute(d, vars) groups = package_relation_group()
if d: for in_item in in_groups:
dep.append(d) item = package_relation()
item.name = self.substitute(in_item.name, vars)
if in_item.version is not None:
item.version = self.substitute(in_item.version, vars)
item.arches = in_item.arches
groups.append(item)
dep.append(groups)
e[key] = dep e[key] = dep
def process_description(self, e, in_e, vars): def process_description(self, e, in_e, vars):
@ -207,15 +232,15 @@ class gencontrol(object):
def process_package(self, in_entry, vars): def process_package(self, in_entry, vars):
e = package() e = package()
for key in in_entry.iterkeys(): for key, value in in_entry.iteritems():
if key in (('Depends', 'Provides', 'Suggests', 'Recommends', 'Conflicts')): if isinstance(value, package_relation_list):
self.process_relation(key, e, in_entry, vars) self.process_relation(key, e, in_entry, vars)
elif key == 'Description': elif key == 'Description':
self.process_description(e, in_entry, vars) self.process_description(e, in_entry, vars)
elif key[:2] == 'X-': elif key[:2] == 'X-':
pass pass
else: else:
e[key] = self.substitute(in_entry[key], vars) e[key] = self.substitute(value, vars)
return e return e
def process_packages(self, in_entries, vars): def process_packages(self, in_entries, vars):

View File

@ -1,4 +1,4 @@
import re, textwrap import debian, re, textwrap
class _sorted_dict(dict): class _sorted_dict(dict):
__slots__ = ('_list') __slots__ = ('_list')
@ -77,48 +77,6 @@ class field_string(str):
def __str__(self): def __str__(self):
return '\n '.join(self.split('\n')) return '\n '.join(self.split('\n'))
class package(dict):
_fields = sorted_dict((
('Package', str),
('Source', str),
('Architecture', field_list),
('Section', str),
('Priority', str),
('Maintainer', str),
('Uploaders', str),
('Standards-Version', str),
('Build-Depends', str),
('Build-Depends-Indep', str),
('Provides', field_list_commata),
('Depends', field_list_commata),
('Recommends', field_list_commata),
('Suggests', field_list_commata),
('Replaces', field_list_commata),
('Conflicts', field_list_commata),
('Description', field_string),
))
def __setitem__(self, key, value):
try:
value = self._fields[key](value)
except KeyError: pass
super(package, self).__setitem__(key, value)
def iterkeys(self):
for i in self._fields.iterkeys():
if self.has_key(i) and self[i]:
yield i
def iteritems(self):
for i in self._fields.iterkeys():
if self.has_key(i) and self[i]:
yield (i, self[i])
def itervalues(self):
for i in self._fields.iterkeys():
if self.has_key(i) and self[i]:
yield self[i]
class templates(dict): class templates(dict):
def __init__(self, dir = None): def __init__(self, dir = None):
if dir is None: if dir is None:
@ -143,7 +101,7 @@ class templates(dict):
f = file("%s/%s.in" % (self.dir, filename)) f = file("%s/%s.in" % (self.dir, filename))
while True: while True:
e = package() e = debian.package()
while True: while True:
line = f.readline() line = f.readline()
if not line: if not line:

11
debian/rules.real vendored
View File

@ -61,9 +61,6 @@ ifdef COMPILER
setup_makeflags += CC="$$$$(CROSS_COMPILE)$(COMPILER)" setup_makeflags += CC="$$$$(CROSS_COMPILE)$(COMPILER)"
endif endif
setup_env += MAKEFLAGS='$(setup_makeflags)' setup_env += MAKEFLAGS='$(setup_makeflags)'
ifndef headers_dirs
headers_dirs = $(DEB_HOST_ARCH)
endif
# #
# Targets # Targets
@ -84,9 +81,6 @@ setup-flavour: $(STAMPS_DIR)/setup-$(ARCH)-$(SUBARCH)-$(FLAVOUR)
# the arch-independent config file (arch/config), # the arch-independent config file (arch/config),
# arch-specific config file (arch/$(karch)/config), # arch-specific config file (arch/$(karch)/config),
# and subarch specific one (arch/$(karch)/$(subarch)/config). # and subarch specific one (arch/$(karch)/$(subarch)/config).
# It is possible to avoid the inclusion of the arch-indep
# config file by setting include_common_config = no in the
# arch/$(karch)/Makefile.inc.
# #
config_common = debian/arch/config debian/arch/$(ARCH)/config config_common = debian/arch/config debian/arch/$(ARCH)/config
ifneq ($(SUBARCH),none) ifneq ($(SUBARCH),none)
@ -235,10 +229,11 @@ install-headers-all: DH_OPTIONS = -plinux-headers-$(VERSION)
install-headers-all: install-headers-all:
dh_testdir dh_testdir
dh_testroot dh_testroot
dh_install $(DH_OPTIONS) debian/arch '/usr/src/linux-headers-$(VERSION)/debian' dh_install $(DH_OPTIONS) debian/arch '/usr/src/linux-headers-$(VERSION)'
echo $(FLAVOURS) >'debian/linux-headers-$(VERSION)/usr/src/linux-headers-$(VERSION)/flavours' dh_install $(DH_OPTIONS) debian/lib '/usr/src/linux-headers-$(VERSION)'
dh_installdocs $(DH_OPTIONS) dh_installdocs $(DH_OPTIONS)
dh_installchangelogs $(DH_OPTIONS) dh_installchangelogs $(DH_OPTIONS)
dh_python $(DH_OPTIONS) -V 2.4 /usr/src/linux-headers-$(VERSION)/lib/python
$(MAKE) -f debian/rules.real install-base DH_OPTIONS='$(DH_OPTIONS)' $(MAKE) -f debian/rules.real install-base DH_OPTIONS='$(DH_OPTIONS)'
install-patch: PACKAGE = linux-patch-debian-$(VERSION) install-patch: PACKAGE = linux-patch-debian-$(VERSION)

View File

@ -4,5 +4,5 @@ Priority: optional
Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org> Maintainer: Debian Kernel Team <debian-kernel@lists.debian.org>
Uploaders: Andres Salomon <dilinger@debian.org>, Bastian Blank <waldi@debian.org>, Simon Horman <horms@debian.org>, Sven Luther <luther@debian.org>, Jonas Smedegaard <dr@jones.dk>, Norbert Tretkowski <nobse@debian.org>, Frederik Schüler <fs@debian.org> Uploaders: Andres Salomon <dilinger@debian.org>, Bastian Blank <waldi@debian.org>, Simon Horman <horms@debian.org>, Sven Luther <luther@debian.org>, Jonas Smedegaard <dr@jones.dk>, Norbert Tretkowski <nobse@debian.org>, Frederik Schüler <fs@debian.org>
Standards-Version: 3.6.1.0 Standards-Version: 3.6.1.0
Build-Depends: gcc (>= 4:4.0) [!m68k], gcc-3.3 [m68k], binutils-hppa64 [hppa], gcc-4.0-hppa64 [hppa], debhelper (>= 4.1.0), module-init-tools, dpkg-dev (>= 1.10.23), debianutils (>= 1.6), bzip2, sparc-utils [sparc], kernel-package (>= 10.029), ocaml-interp, python2.4-minimal Build-Depends: debhelper (>= 4.1.0), module-init-tools, dpkg-dev (>= 1.10.23), debianutils (>= 1.6), bzip2, sparc-utils [sparc], kernel-package (>= 10.029), ocaml-interp, python, python2.4-minimal
Build-Depends-Indep: docbook-utils, gs, transfig, xmlto Build-Depends-Indep: docbook-utils, gs, transfig, xmlto