aboutsummaryrefslogtreecommitdiffstats
path: root/debian/bin
diff options
context:
space:
mode:
authorBen Hutchings <benh@debian.org>2020-08-25 15:16:49 +0100
committerBen Hutchings <benh@debian.org>2020-09-17 18:56:58 +0100
commit59aeb16cb8bf39ed4e9693a9badb3ce6c38b43e3 (patch)
treeff1c5f8881cc5b91ba4dd7baa51c48c9d7242d6d /debian/bin
parenta44a4e6d404a074065bcba05ece7d4b3e1a13ed5 (diff)
downloadkernel_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-xdebian/bin/gencontrol.py21
-rwxr-xr-xdebian/bin/gencontrol_signed.py26
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" %