diff --git a/debian/arch/alpha/config b/debian/arch/alpha/config index 72ebfd5b4..53db422c3 100644 --- a/debian/arch/alpha/config +++ b/debian/arch/alpha/config @@ -508,11 +508,6 @@ CONFIG_IP_SCTP=m # CONFIG_SCTP_HMAC_NONE is not set # CONFIG_SCTP_HMAC_SHA1 is not set CONFIG_SCTP_HMAC_MD5=y -# CONFIG_ATM_CLIP_NO_ICMP is not set -CONFIG_ATM_LANE=m -CONFIG_ATM_MPOA=m -CONFIG_ATM_BR2684=m -# CONFIG_ATM_BR2684_IPFILTER is not set CONFIG_BRIDGE=m CONFIG_DECNET=m # CONFIG_DECNET_ROUTER is not set @@ -819,7 +814,6 @@ CONFIG_CYCLADES_SYNC=m CONFIG_CYCLOMX_X25=y CONFIG_LAPBETHER=m CONFIG_X25_ASY=m -CONFIG_ATM_TCP=m CONFIG_ATM_LANAI=m CONFIG_ATM_ENI=m # CONFIG_ATM_ENI_DEBUG is not set diff --git a/debian/arch/alpha/defines b/debian/arch/alpha/defines index aa3c006ce..31a79e033 100644 --- a/debian/arch/alpha/defines +++ b/debian/arch/alpha/defines @@ -1,4 +1,5 @@ -[DEFAULT] +[base] +flavours: alpha-generic alpha-smp suggests: aboot, fdutils [alpha-generic] diff --git a/debian/arch/amd64/config b/debian/arch/amd64/config index 91002d9e8..3b5bf06c6 100644 --- a/debian/arch/amd64/config +++ b/debian/arch/amd64/config @@ -528,11 +528,6 @@ CONFIG_IP_SCTP=m # CONFIG_SCTP_HMAC_NONE is not set # CONFIG_SCTP_HMAC_SHA1 is not set CONFIG_SCTP_HMAC_MD5=y -# CONFIG_ATM_CLIP_NO_ICMP is not set -CONFIG_ATM_LANE=m -CONFIG_ATM_MPOA=m -CONFIG_ATM_BR2684=m -# CONFIG_ATM_BR2684_IPFILTER is not set CONFIG_BRIDGE=m CONFIG_DECNET=m # CONFIG_DECNET_ROUTER is not set @@ -794,7 +789,6 @@ CONFIG_LAPBETHER=m CONFIG_X25_ASY=m CONFIG_SBNI=m # CONFIG_SBNI_MULTILINE is not set -CONFIG_ATM_TCP=m CONFIG_ATM_LANAI=m CONFIG_ATM_ENI=m # CONFIG_ATM_ENI_DEBUG is not set diff --git a/debian/arch/amd64/defines b/debian/arch/amd64/defines index 6f2715418..1c26039f2 100644 --- a/debian/arch/amd64/defines +++ b/debian/arch/amd64/defines @@ -1,3 +1,9 @@ -[DEFAULT] +[base] depends: e2fsprogs (>= 1.35-7) +flavours: + amd64-generic + amd64-k8 + amd64-k8-smp + em64t-p4 + em64t-p4-smp suggests: lilo (>= 19.1) | grub, fdutils diff --git a/debian/arch/arm/defines b/debian/arch/arm/defines index 942fbbe93..02432cefb 100644 --- a/debian/arch/arm/defines +++ b/debian/arch/arm/defines @@ -1,2 +1,7 @@ -[DEFAULT] +[base] +flavours: + footbridge + ixp4xx + rpc + s3c2410 suggests: fdutils diff --git a/debian/arch/config b/debian/arch/config index 64e0e5785..42a8d5fb6 100644 --- a/debian/arch/config +++ b/debian/arch/config @@ -180,3 +180,9 @@ CONFIG_TCG_NSC=m CONFIG_6PACK=m CONFIG_ATM=m CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_BR2684=m +# CONFIG_ATM_BR2684_IPFILTER is not set +# CONFIG_ATM_TCP is not set diff --git a/debian/arch/defines b/debian/arch/defines index d0dea26df..d6e1c59c1 100644 --- a/debian/arch/defines +++ b/debian/arch/defines @@ -1,2 +1,24 @@ -[DEFAULT] +[base] abiname: 1 +arches: + alpha + amd64 + arm + hppa + i386 + ia64 + m68k + mips + mipsel + powerpc + s390 + sparc + +[alpha] +#enabled: False + +[mips] +available: False + +[mipsel] +available: False diff --git a/debian/arch/hppa/defines b/debian/arch/hppa/defines index 6b6bae3f7..3343e2eab 100644 --- a/debian/arch/hppa/defines +++ b/debian/arch/hppa/defines @@ -1,4 +1,9 @@ -[DEFAULT] +[base] +flavours: + 32 + 32-smp + 64 + 64-smp suggests: palo [32] diff --git a/debian/arch/i386/config b/debian/arch/i386/config index cf1ab429a..17aca6ecf 100644 --- a/debian/arch/i386/config +++ b/debian/arch/i386/config @@ -624,11 +624,6 @@ CONFIG_IP_SCTP=m # CONFIG_SCTP_HMAC_NONE is not set # CONFIG_SCTP_HMAC_SHA1 is not set CONFIG_SCTP_HMAC_MD5=y -# CONFIG_ATM_CLIP_NO_ICMP is not set -CONFIG_ATM_LANE=m -CONFIG_ATM_MPOA=m -CONFIG_ATM_BR2684=m -# CONFIG_ATM_BR2684_IPFILTER is not set CONFIG_BRIDGE=m CONFIG_DECNET=m # CONFIG_DECNET_ROUTER is not set @@ -946,7 +941,6 @@ CONFIG_LAPBETHER=m CONFIG_X25_ASY=m CONFIG_SBNI=m # CONFIG_SBNI_MULTILINE is not set -CONFIG_ATM_TCP=m CONFIG_ATM_LANAI=m CONFIG_ATM_ENI=m # CONFIG_ATM_ENI_DEBUG is not set diff --git a/debian/arch/i386/defines b/debian/arch/i386/defines index 18c0edb60..c253bbff9 100644 --- a/debian/arch/i386/defines +++ b/debian/arch/i386/defines @@ -1,4 +1,10 @@ -[DEFAULT] +[base] +flavours: + 386 + 686 + 686-smp + k7 + k7-smp suggests: lilo (>= 19.1) | grub, fdutils [686] @@ -13,7 +19,6 @@ longclass: multi-processor Pentium Pro/Celeron/Pentium II/Pentium III/Pentium 4 class: AMD K7 longclass: 32bit AMD Duron/Athlon/AthlonXP - [k7-smp] class: AMD K7 SMP longclass: 32-bit multi-processor AMD Duron/Athlon/AthlonXP diff --git a/debian/arch/ia64/defines b/debian/arch/ia64/defines index e5c888c78..a5d957c8c 100644 --- a/debian/arch/ia64/defines +++ b/debian/arch/ia64/defines @@ -1,4 +1,9 @@ -[DEFAULT] +[base] +flavours: + itanium + itanium-smp + mckinley + mckinley-smp suggests: elilo, fdutils [itanium] diff --git a/debian/arch/m68k/defines b/debian/arch/m68k/defines index af6e63b15..a897f7cb8 100644 --- a/debian/arch/m68k/defines +++ b/debian/arch/m68k/defines @@ -1,4 +1,14 @@ -[DEFAULT] +[base] +flavours: + amiga + atari + bvme6000 + hp + mac + mvme147 + mvme16x + q40 + sun3 suggests: vmelilo, fdutils [amiga] diff --git a/debian/arch/powerpc/Makefile.inc b/debian/arch/powerpc/Makefile.inc index 34a1c3846..c0e3b0a46 100644 --- a/debian/arch/powerpc/Makefile.inc +++ b/debian/arch/powerpc/Makefile.inc @@ -2,5 +2,3 @@ # Variables # headers_dirs = ppc | ppc64 | m68k -headers_subarch = powerpc -build_subarch = powerpc diff --git a/debian/arch/powerpc/config b/debian/arch/powerpc/config index e999b1c3d..2b32d93de 100644 --- a/debian/arch/powerpc/config +++ b/debian/arch/powerpc/config @@ -387,11 +387,6 @@ CONFIG_IP_SCTP=m # CONFIG_SCTP_HMAC_NONE is not set # CONFIG_SCTP_HMAC_SHA1 is not set CONFIG_SCTP_HMAC_MD5=y -CONFIG_ATM_CLIP_NO_ICMP=y -CONFIG_ATM_LANE=m -CONFIG_ATM_MPOA=m -CONFIG_ATM_BR2684=m -# CONFIG_ATM_BR2684_IPFILTER is not set CONFIG_BRIDGE=m CONFIG_DECNET=m CONFIG_DECNET_ROUTER=y @@ -647,7 +642,6 @@ CONFIG_CYCLADES_SYNC=m CONFIG_CYCLOMX_X25=y CONFIG_LAPBETHER=m CONFIG_X25_ASY=m -CONFIG_ATM_TCP=m CONFIG_ATM_LANAI=m CONFIG_ATM_ENI=m # CONFIG_ATM_ENI_DEBUG is not set diff --git a/debian/arch/powerpc/defines b/debian/arch/powerpc/defines index 78fca9bb4..5b80481d2 100644 --- a/debian/arch/powerpc/defines +++ b/debian/arch/powerpc/defines @@ -1,4 +1,8 @@ -[DEFAULT] +[base] +flavours: + powerpc + powerpc-smp + powerpc64 kpkg-subarch: powerpc [powerpc] diff --git a/debian/arch/s390/config b/debian/arch/s390/config index 35ce9a8a0..a29cc3b76 100644 --- a/debian/arch/s390/config +++ b/debian/arch/s390/config @@ -26,8 +26,6 @@ CONFIG_QDIO=y # CONFIG_QDIO_DEBUG is not set # CONFIG_PREEMPT is not set CONFIG_IPL=y -# CONFIG_IPL_TAPE is not set -CONFIG_IPL_VM=y # CONFIG_PROCESS_DEBUG is not set CONFIG_PFAULT=y # CONFIG_SHARED_KERNEL is not set diff --git a/debian/arch/s390/config.s390 b/debian/arch/s390/config.s390 index 2ce04f8b9..ab2d026fc 100644 --- a/debian/arch/s390/config.s390 +++ b/debian/arch/s390/config.s390 @@ -5,5 +5,7 @@ CONFIG_ARCH_S390_31=y CONFIG_MATHEMU=y CONFIG_MARCH_G5=y # CONFIG_MARCH_Z900 is not set +# CONFIG_IPL_TAPE is not set +CONFIG_IPL_VM=y # CONFIG_LBD is not set # CONFIG_DASD_DIAG is not set diff --git a/debian/arch/s390/config.s390-tape b/debian/arch/s390/config.s390-tape new file mode 100644 index 000000000..2b933182d --- /dev/null +++ b/debian/arch/s390/config.s390-tape @@ -0,0 +1,11 @@ +CONFIG_UID16=y +# CONFIG_ARCH_S390X is not set +# CONFIG_64BIT is not set +CONFIG_ARCH_S390_31=y +CONFIG_MATHEMU=y +CONFIG_MARCH_G5=y +# CONFIG_MARCH_Z900 is not set +CONFIG_IPL_TAPE=y +# CONFIG_IPL_VM is not set +# CONFIG_LBD is not set +# CONFIG_DASD_DIAG is not set diff --git a/debian/arch/s390/config.s390x b/debian/arch/s390/config.s390x index 4b9949231..2b6ef1728 100644 --- a/debian/arch/s390/config.s390x +++ b/debian/arch/s390/config.s390x @@ -6,3 +6,5 @@ CONFIG_SYSVIPC_COMPAT=y CONFIG_BINFMT_ELF32=y # CONFIG_MARCH_G5 is not set CONFIG_MARCH_Z900=y +# CONFIG_IPL_TAPE is not set +CONFIG_IPL_VM=y diff --git a/debian/arch/s390/defines b/debian/arch/s390/defines index 74bf73a63..168882c4d 100644 --- a/debian/arch/s390/defines +++ b/debian/arch/s390/defines @@ -1,5 +1,6 @@ -[DEFAULT] +[base] desc: This kernel has support to IPL (boot) from a VM reader or DASD device. +flavours: s390 s390x suggests: s390-tools [s390] diff --git a/debian/arch/sparc/Makefile.inc b/debian/arch/sparc/Makefile.inc index 9f56224ec..538c7c5e6 100644 --- a/debian/arch/sparc/Makefile.inc +++ b/debian/arch/sparc/Makefile.inc @@ -2,8 +2,6 @@ # Variables # headers_dirs := sparc64 -headers_subarch := sparc64 -build_subarch := @flavour@ 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 diff --git a/debian/arch/sparc/defines b/debian/arch/sparc/defines index 396eee765..4345251cc 100644 --- a/debian/arch/sparc/defines +++ b/debian/arch/sparc/defines @@ -1,4 +1,6 @@ -[DEFAULT] +[base] +flavours: sparc64 sparc64-smp +kpkg-subarch: sparc64 suggests: silo, fdutils [sparc64] diff --git a/debian/bin/gencontrol.py b/debian/bin/gencontrol.py index 64c1822c3..4ac07b4d8 100755 --- a/debian/bin/gencontrol.py +++ b/debian/bin/gencontrol.py @@ -1,6 +1,108 @@ #!/usr/bin/env python import os, os.path, re, sys, textwrap, ConfigParser +config_name = "defines" + +class schema_item_boolean(object): + def __call__(self, i): + i = i.strip().lower() + if i in ("true", "1"): + return True + if i in ("false", "0"): + return False + raise Error + +class schema_item_integer(object): + def __call__(self, i): + return int(i) + +class schema_item_list(object): + def __call__(self, i): + return re.split("\s+", i.strip()) + +class schema_item_string(object): + def __call__(self, i): + return str(i) + +class config(dict): + schema = { + 'abiname': schema_item_string, + 'arches': schema_item_list, + 'available': schema_item_boolean, + 'class': schema_item_string, + 'depends': schema_item_string, + 'desc': schema_item_string, + 'flavours': schema_item_list, + 'kpkg-subarch': schema_item_string, + 'longclass': schema_item_string, + 'subarches': schema_item_list, + 'suggests': schema_item_string, + } + + def __init__(self): + self._read_base() +# import pprint +# pprint.pprint(dict(self)) + + def _read_arch(self, arch, base): + file = "debian/arch/%s/%s" % (arch, config_name) + c = config_parser(self.schema) + c.read(file) + t = c.items_convert('base') + base.update(t) + self[arch] = t + subarches = t.get('subarches', []) + for subarch in subarches: + raise RuntimeError + flavours = t.get('flavours', None) + if flavours: + for flavour in flavours: + self._read_flavour(arch, 'none', flavour, c) + subarches.append('none') + t['subarches'] = subarches + + def _read_base(self): + file = "debian/arch/%s" % config_name + c = config_parser(self.schema) + c.read(file) + t1 = c.items_convert('base') + self['base'] = t1 + for arch in t1['arches']: + try: + t2 = c.items_convert(arch) + avail = t2.get('available', True) + except ConfigParser.NoSectionError: + t2 = {} + avail = True + if avail: + self._read_arch(arch, t2) + else: + self[arch] = t2 + + def _read_flavour(self, arch, subarch, flavour, c): + try: + t = c.items_convert(flavour) + except ConfigParser.NoSectionError: + try: + t = c.items_convert("%s-none-%s" % (arch, flavour)) + except ConfigParser.NoSectionError: + #raise RuntimeError("Don't find config for %s-none-%s!" % (arch, flavour)) + t = {} + self["%s-%s-%s" % (arch, subarch, flavour)] = t + +class config_parser(object, ConfigParser.ConfigParser): + def __init__(self, schema): + ConfigParser.ConfigParser.__init__(self) + self.schema = schema + + def items_convert(self, section): + items = self.items(section) + ret = {} + for key, value in items: + convert = self.schema[key]() + ret[key] = convert(value) + return ret + class entry(dict): __slots__ = ('_list') @@ -35,55 +137,6 @@ class wrap(textwrap.TextWrapper): r'(\s+|' # any whitespace r'(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))') # em-dash -def config(): - c = ConfigParser.ConfigParser() - c.read("debian/arch/defines") - return c - -def config_arch(arch): - c = config() - c.read("debian/arch/%s/defines" % arch) - return c - -def config_subarch(arch, subarch): - c = config_arch(arch) - if subarch is not None: - c.read("debian/arch/%s/%s/defines" % (arch, subarch)) - return c - -def list_dirs(dir): - ret = [] - for i in os.listdir(dir): - if i not in ('.svn',) and os.path.isdir(os.path.join(dir, i)): - ret.append(i) - return ret - -def list_files(dir): - ret = [] - for i in os.listdir(dir): - if os.path.isfile(os.path.join(dir, i)): - ret.append(i) - return ret - -def list_arches(): - return list_dirs("debian/arch") - -def list_subarches(arch): - ret = [None] - ret.extend(list_dirs("debian/arch/%s" % arch)) - return ret - -def list_flavours(arch, subarch): - dir = "debian/arch/%s" % arch - if subarch is not None: - dir += "/%s" % subarch - tmp = list_files(dir) - ret = [] - for i in tmp: - if i[:7] == 'config.': - ret.append(i[7:]) - return ret - def read_changelog(): r = re.compile(r""" ^ @@ -268,7 +321,7 @@ def write_rfc822(f, list): f.write(" %s\n" % k) f.write('\n') -if __name__ == '__main__': +def main(): changelog = read_changelog() vars = {} @@ -277,16 +330,25 @@ if __name__ == '__main__': version = vars['version'] source_version = vars['srcver'] - vars.update(config().defaults()) + c = config() + + vars.update(c['base']) arches = {} subarches_architecture = {} - for arch in list_arches(): + for arch in c['base']['arches']: + if not c[arch].get('available', True): + continue t1 = {} - for subarch in list_subarches(arch): + for subarch in c[arch].get('subarches', []): t2 = {} - for flavour in list_flavours(arch, subarch): - t2[flavour] = True + if subarch != 'none': + for flavour in c["%s-%s" % (arch, subarch)].get('flavours', []): + t2[flavour] = True + else: + for flavour in c[arch].get('flavours', []): + t2[flavour] = True + subarch = None t1[subarch] = t2 t3 = subarches_architecture.get(subarch, {}) t3[arch] = True @@ -327,7 +389,7 @@ if __name__ == '__main__': for arch in arch_list: arch_vars = vars.copy() arch_vars['arch'] = arch - arch_vars.update(config_arch(arch).defaults()) + arch_vars.update(c[arch]) for i in (('setup',)): makefile.append(("%s-%s:: %s-%s-real" % (i, arch, i, arch), None)) @@ -341,13 +403,12 @@ if __name__ == '__main__': subarch_list = arches[arch].keys() subarch_list.sort() for subarch in subarch_list: - subarch_config = config_subarch(arch, subarch) subarch_vars = arch_vars.copy() - subarch_vars.update(subarch_config.defaults()) if subarch is not None: subarch_text = subarch subarch_vars['subarch'] = '%s-' % subarch + subarch_vars.update(c['%s-%s' % (arch, subarch)]) else: subarch_text = 'none' subarch_vars['subarch'] = '' @@ -360,6 +421,10 @@ if __name__ == '__main__': subarch_makeflags = arch_makeflags[:] subarch_makeflags.extend(["SUBARCH='%s'" % subarch_text, "ABINAME='%s'" % subarch_vars['abiname']]) + subarch_makeflags_clean = subarch_makeflags[:] + if subarch_vars.has_key('kpkg-subarch'): + subarch_makeflags.append("KPKG_SUBARCH='%s'" % subarch_vars['kpkg-subarch']) + cmds_binary_arch = [] cmds_binary_arch.append(("$(MAKE) -f debian/rules.real binary-arch-subarch %s" % ' '.join(subarch_makeflags),)) cmds_setup = [] @@ -372,8 +437,9 @@ if __name__ == '__main__': for flavour in flavour_list: flavour_vars = subarch_vars.copy() flavour_vars['flavour'] = flavour + try: - flavour_vars.update(dict(subarch_config.items(flavour))) + flavour_vars.update(c['%s-%s-%s' % (arch, subarch_text, flavour)]) except ConfigParser.NoSectionError: pass if not flavour_vars.has_key('class'): flavour_vars['class'] = '%s-class' % flavour @@ -391,7 +457,7 @@ if __name__ == '__main__': makefile.append(("%s-%s-%s:: %s-%s-%s-%s" % (i, arch, subarch_text, i, arch, subarch_text, flavour), None)) makefile.append(("%s-%s-%s-%s:: %s-%s-%s-%s-real" % (i, arch, subarch_text, flavour, i, arch, subarch_text, flavour), None)) - flavour_makeflags = subarch_makeflags[:] + flavour_makeflags = subarch_makeflags_clean[:] flavour_makeflags.append("FLAVOUR='%s'" % flavour) if flavour_vars.has_key('kpkg-subarch'): flavour_makeflags.append("KPKG_SUBARCH='%s'" % flavour_vars['kpkg-subarch']) @@ -418,7 +484,7 @@ if __name__ == '__main__': archs.sort() for arch in archs: arch_vars = vars.copy() - arch_vars.update(config_arch(arch).defaults()) + arch_vars.update(c[arch]) cmds = [] for i in extra_pn[arch]: @@ -433,3 +499,5 @@ if __name__ == '__main__': write_makefile(makefile) +if __name__ == '__main__': + main() diff --git a/debian/rules.real b/debian/rules.real index 47faa2e73..4213e2392 100644 --- a/debian/rules.real +++ b/debian/rules.real @@ -50,9 +50,7 @@ kpkg_image += --stem linux kpkg_image += --initrd ifdef KPKG_SUBARCH kpkg_image += --subarch $(KPKG_SUBARCH) -endif -ifdef headers_subarch - kpkg_header += --subarch $(headers_subarch) + kpkg_header += --subarch $(KPKG_SUBARCH) endif ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)) kpkg_image += --cross-compile=$(DEB_HOST_GNU_TYPE) diff --git a/debian/templates/control.headers.in b/debian/templates/control.headers.in index 97c9d59c7..a97eda301 100644 --- a/debian/templates/control.headers.in +++ b/debian/templates/control.headers.in @@ -2,7 +2,7 @@ Package: linux-headers-@subarch@@version@-@abiname@-@flavour@ Architecture: @arch@ Section: devel Priority: optional -Depends: coreutils | fileutils (>= 4.0), linux-headers-@subarch@@version@-@abiname@ +Depends: coreutils | fileutils (>= 4.0), linux-headers-@subarch@@version@-@abiname@ (= ${Source-Version}) Provides: linux-headers, linux-headers-@major@ Description: Architecture-specific header files for Linux kernel @version@ on @class@ machines This package provides the architecture-specific kernel header files