[arm,x86,s390,s390x] Introduce linux-compiler meta-packages to allow use of foreign linux-headers packages with a native multilib compiler

svn path=/dists/trunk/linux/; revision=20799
This commit is contained in:
Ben Hutchings 2013-11-21 01:15:15 +00:00
parent 45461d5355
commit 08a7d92f2b
10 changed files with 62 additions and 10 deletions

View File

@ -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'])

2
debian/changelog vendored
View File

@ -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):

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

23
debian/templates/control.extra.in vendored Normal file
View File

@ -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.