diff options
author | Ben Hutchings <benh@debian.org> | 2020-08-25 15:16:49 +0100 |
---|---|---|
committer | Ben Hutchings <benh@debian.org> | 2020-09-17 18:56:58 +0100 |
commit | 59aeb16cb8bf39ed4e9693a9badb3ce6c38b43e3 (patch) | |
tree | ff1c5f8881cc5b91ba4dd7baa51c48c9d7242d6d /debian/bin | |
parent | a44a4e6d404a074065bcba05ece7d4b3e1a13ed5 (diff) | |
download | kernel_replicant_linux-59aeb16cb8bf39ed4e9693a9badb3ce6c38b43e3.tar.gz kernel_replicant_linux-59aeb16cb8bf39ed4e9693a9badb3ce6c38b43e3.tar.bz2 kernel_replicant_linux-59aeb16cb8bf39ed4e9693a9badb3ce6c38b43e3.zip |
Provide linux-{image,headers}-generic virtual packages on most architectures
The Debian installer can choose a suitable kernel to install based on
hardware information, but image builders can't do that and they need
to know a sensible default kernel for each architecture.
I've resisted defining such a default before now, because there is no
reasonable default on some architectures. But we can still provide a
default for those architectures where there is:
* [alpha,sparc64] default to SMP flavour; both flavours should run on
everything but this seems more useful
* [amd64] default to amd64, which should run on everything
* [arm64] default to arm64, which should run on everything
* [armhf] default to armmp, which should run on everything; non-LPAE
CPUs are very common
* [hppa] default to parisc, which should run on everything
* [i386] default to 686-pae, which requires PAE; non-PAE CPUs are
quite rare
* [ia64] default to itanium, which should run on everything
* [m68k,mips64r6*,ppc64*,riscv64,s390x] default to the only flavour
* [mipsr6*] default to 32-bit flavour; 64-bit systems should use the
64-bit architecture
The architectures with no default are:
* [armel,mips,mips64,mips64el,mipsel,sh4] flavours are platform-specific
* [powerpc] 32-bit flavour won't boot on 64-bit systems and vice versa
Closes: #960209
Diffstat (limited to 'debian/bin')
-rwxr-xr-x | debian/bin/gencontrol.py | 21 | ||||
-rwxr-xr-x | debian/bin/gencontrol_signed.py | 26 |
2 files changed, 44 insertions, 3 deletions
diff --git a/debian/bin/gencontrol.py b/debian/bin/gencontrol.py index 9c8f7952df69..6cbb77ac8bd4 100755 --- a/debian/bin/gencontrol.py +++ b/debian/bin/gencontrol.py @@ -12,7 +12,7 @@ from debian_linux import config from debian_linux.debian import PackageDescription, PackageRelation, \ PackageRelationEntry, PackageRelationGroup, VersionLinux from debian_linux.gencontrol import Gencontrol as Base, merge_packages, \ - iter_featuresets + iter_featuresets, iter_flavours from debian_linux.utils import Templates, read_control locale.setlocale(locale.LC_CTYPE, "C.UTF-8") @@ -334,6 +334,18 @@ class Gencontrol(Base): vars['localversion_headers'] = vars['localversion'] makeflags['LOCALVERSION_HEADERS'] = vars['localversion_headers'] + self.default_flavour = self.config.merge('base', arch, featureset) \ + .get('default-flavour') + if self.default_flavour is not None: + if featureset != 'none': + raise RuntimeError("default-flavour set for %s %s," + " but must only be set for featureset none" + % (arch, featureset)) + if self.default_flavour \ + not in iter_flavours(self.config, arch, featureset): + raise RuntimeError("default-flavour %s for %s %s does not exist" + % (self.default_flavour, arch, featureset)) + flavour_makeflags_base = ( ('compiler', 'COMPILER', False), ('compiler-filename', 'COMPILER', True), @@ -512,6 +524,13 @@ class Gencontrol(Base): self.templates['control.headers.meta'], vars) assert len(packages_meta) == 2 + if flavour == self.default_flavour \ + and not self.vars['source_suffix']: + packages_meta[0].setdefault('Provides', PackageRelation()) \ + .append('linux-image-generic') + packages_meta[1].setdefault('Provides', PackageRelation()) \ + .append('linux-headers-generic') + packages_own.extend(packages_meta) self.substitute_debhelper_config( diff --git a/debian/bin/gencontrol_signed.py b/debian/bin/gencontrol_signed.py index 3bc09c0cd6e7..75d9112cb23e 100755 --- a/debian/bin/gencontrol_signed.py +++ b/debian/bin/gencontrol_signed.py @@ -11,8 +11,9 @@ import subprocess import sys from debian_linux.config import ConfigCoreDump -from debian_linux.debian import VersionLinux -from debian_linux.gencontrol import Gencontrol as Base, merge_packages +from debian_linux.debian import PackageRelation, VersionLinux +from debian_linux.gencontrol import Gencontrol as Base, merge_packages, \ + iter_flavours from debian_linux.utils import Templates, read_control @@ -142,6 +143,19 @@ class Gencontrol(Base): (arch, makeflags, ' '.join(p['Package'] for p in udeb_packages))]) + def do_featureset_setup(self, vars, makeflags, arch, featureset, extra): + self.default_flavour = self.config.merge('base', arch, featureset) \ + .get('default-flavour') + if self.default_flavour is not None: + if featureset != 'none': + raise RuntimeError("default-flavour set for %s %s," + " but must only be set for featureset none" + % (arch, featureset)) + if self.default_flavour \ + not in iter_flavours(self.config, arch, featureset): + raise RuntimeError("default-flavour %s for %s %s does not exist" + % (self.default_flavour, arch, featureset)) + def do_flavour_setup(self, vars, makeflags, arch, featureset, flavour, extra): super(Gencontrol, self).do_flavour_setup(vars, makeflags, arch, @@ -214,7 +228,15 @@ class Gencontrol(Base): for package in packages_meta: del package['Build-Profiles'] + if flavour == self.default_flavour \ + and not self.vars['source_suffix']: + packages_meta[0].setdefault('Provides', PackageRelation()) \ + .append('linux-image-generic') + packages_meta[1].setdefault('Provides', PackageRelation()) \ + .append('linux-headers-generic') + packages_own.extend(packages_meta) + cmds_binary_arch += [ "$(MAKE) -f debian/rules.real install-meta " "PACKAGE_NAME='%s' LINK_DOC_PACKAGE_NAME='%s' %s" % |