diff --git a/debian/bin/gencontrol.py b/debian/bin/gencontrol.py index 118c48b6f..3cad73bb5 100755 --- a/debian/bin/gencontrol.py +++ b/debian/bin/gencontrol.py @@ -259,7 +259,18 @@ class Gencontrol(Base): config_entry_relations = self.config.merge('relations', arch, featureset, flavour) compiler = config_entry_base.get('compiler', 'gcc') - relations_compiler = PackageRelation(config_entry_relations[compiler]) + + # linux-headers packages may depend on an intermediate + # meta-package, rather than directly on the compiler we use + # at build time. + if config_entry_relations.get('headers%' + compiler): + relations_compiler_headers = PackageRelation( + self.substitute( + config_entry_relations['headers%' + compiler], vars)) + else: + relations_compiler_headers = PackageRelation( + config_entry_relations[compiler]) + relations_compiler_build_dep = PackageRelation(config_entry_relations[compiler]) for group in relations_compiler_build_dep: for item in group: @@ -330,7 +341,7 @@ class Gencontrol(Base): if config_entry_build.get('modules', True): makeflags['MODULES'] = True package_headers = self.process_package(headers[0], vars) - package_headers['Depends'].extend(relations_compiler) + package_headers['Depends'].extend(relations_compiler_headers) packages_own.append(package_headers) extra['headers_arch_depends'].append('%s (= ${binary:Version})' % packages_own[-1]['Package']) diff --git a/debian/changelog b/debian/changelog index b08221de6..3f014337a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,8 @@ linux (3.12-1~exp1) UNRELEASED; urgency=low - mmap() holds a reference to the union file as well as the branch file * [armel/{iop32x,ixp4xx}] Disable BPF_JIT, MEMCG, USER_NS to reduce kernel size + * [arm,x86,s390,s390x] Introduce linux-compiler meta-packages to allow use + of foreign linux-headers packages with a native multilib compiler [ Thorsten Glaser ] * Update m68k config (Closes: #728392): diff --git a/debian/config/amd64/defines b/debian/config/amd64/defines index ea407fcb9..8b69a439c 100644 --- a/debian/config/amd64/defines +++ b/debian/config/amd64/defines @@ -11,6 +11,9 @@ debug-info: true bootloaders: grub-pc extlinux lilo configs: +[relations] +headers%gcc-4.8: linux-compiler-@version@-x86 + [amd64_description] hardware: 64-bit PCs hardware-long: PCs with AMD64, Intel 64 or VIA Nano processors diff --git a/debian/config/armel/defines b/debian/config/armel/defines index 87a956ae6..1e3367fae 100644 --- a/debian/config/armel/defines +++ b/debian/config/armel/defines @@ -11,6 +11,9 @@ kernel-arch: arm [image] suggests: fdutils +[relations] +headers%gcc-4.8: linux-compiler-@version@-arm + [iop32x_build] image-file: arch/arm/boot/zImage diff --git a/debian/config/armhf/defines b/debian/config/armhf/defines index 989613f0c..e94361049 100644 --- a/debian/config/armhf/defines +++ b/debian/config/armhf/defines @@ -10,6 +10,9 @@ configs: armel/config armhf/config +[relations] +headers%gcc-4.8: linux-compiler-@version@-arm + [armmp_build] image-file: arch/arm/boot/zImage diff --git a/debian/config/i386/defines b/debian/config/i386/defines index 602e25213..22ba85c0c 100644 --- a/debian/config/i386/defines +++ b/debian/config/i386/defines @@ -14,6 +14,9 @@ part-long-pae: This kernel requires PAE (Physical Address Extension). bootloaders: grub-pc extlinux lilo configs: +[relations] +headers%gcc-4.8: linux-compiler-@version@-x86 + [486_description] hardware: older PCs hardware-long: PCs with a single processor not supporting PAE diff --git a/debian/config/s390/defines b/debian/config/s390/defines index a880716da..a09de0914 100644 --- a/debian/config/s390/defines +++ b/debian/config/s390/defines @@ -7,6 +7,9 @@ kernel-arch: s390 bootloaders: s390-tools configs: s390x/config +[relations] +headers%gcc-4.8: linux-compiler-@version@-s390 + [s390x_build] debug-info: true diff --git a/debian/config/s390x/defines b/debian/config/s390x/defines index fb290dd4c..5bf81a8c0 100644 --- a/debian/config/s390x/defines +++ b/debian/config/s390x/defines @@ -6,6 +6,9 @@ kernel-arch: s390 [image] bootloaders: s390-tools +[relations] +headers%gcc-4.8: linux-compiler-@version@-s390 + [s390x_build] debug-info: true diff --git a/debian/lib/python/debian_linux/gencontrol.py b/debian/lib/python/debian_linux/gencontrol.py index aac564c42..9aa240e14 100644 --- a/debian/lib/python/debian_linux/gencontrol.py +++ b/debian/lib/python/debian_linux/gencontrol.py @@ -129,9 +129,10 @@ class Gencontrol(object): if templates_extra is None: return - packages.extend(self.process_packages(templates_extra, {})) + packages_extra = self.process_packages(templates_extra, self.vars) + packages.extend(packages_extra) extra_arches = {} - for package in templates_extra: + for package in packages_extra: arches = package['Architecture'] for arch in arches: i = extra_arches.get(arch, []) @@ -142,12 +143,9 @@ class Gencontrol(object): for arch in archs: cmds = [] for i in extra_arches[arch]: - tmp = [] - if 'X-Version-Overwrite-Epoch' in i: - tmp.append("-v1:%s" % self.version['source']) - cmds.append("$(MAKE) -f debian/rules.real install-dummy DH_OPTIONS='-p%s' GENCONTROL_ARGS='%s'" % (i['Package'], ' '.join(tmp))) - makefile.add('binary-arch_%s' % arch['binary-arch_%s_extra' % arch]) - makefile.add("binary-arch_%s_extra" % arch, cmds=cmds) + cmds.append("$(MAKE) -f debian/rules.real install-dummy ARCH='%s' DH_OPTIONS='-p%s'" % (arch, i['Package'])) + makefile.add('binary-arch_%s' % arch, [u'binary-arch_%s_extra' % arch]) + makefile.add("binary-arch_%s_extra" % arch, cmds = cmds) def do_arch(self, packages, makefile, arch, vars, makeflags, extra): vars['arch'] = arch diff --git a/debian/templates/control.extra.in b/debian/templates/control.extra.in new file mode 100644 index 000000000..85cda6e3c --- /dev/null +++ b/debian/templates/control.extra.in @@ -0,0 +1,23 @@ +Package: linux-compiler-@version@-arm +Depends: gcc-4.8, ${misc:Depends} +Architecture: armel armhf +Multi-Arch: foreign +Description: Compiler for Linux @version@ on ARM (meta-package) + This package depends on the appropriate compiler version for Linux @version@ + on ARM. + +Package: linux-compiler-@version@-s390 +Depends: gcc-4.8, ${misc:Depends} +Architecture: s390 s390x +Multi-Arch: foreign +Description: Compiler for Linux @version@ on IBM zSeries (meta-package) + This package depends on the appropriate compiler version for Linux @version@ + on zSeries. + +Package: linux-compiler-@version@-x86 +Depends: gcc-4.8, ${misc:Depends} +Architecture: amd64 i386 x32 +Multi-Arch: foreign +Description: Compiler for Linux @version@ on x86 (meta-package) + This package depends on the appropriate compiler version for Linux @version@ + on x86.