diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2019-09-27 02:42:51 +0200 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2019-09-28 02:36:56 +0100 |
commit | 009860e7c695507d28782c10253d9fd5ca01c78d (patch) | |
tree | 28bb26b7590f4d25314af155eef76f88c02c8058 /debian/bin | |
parent | 0eeb8e44a9f7fa4334da19b82f961a44ed4a8a40 (diff) | |
download | kernel_replicant_linux-009860e7c695507d28782c10253d9fd5ca01c78d.tar.gz kernel_replicant_linux-009860e7c695507d28782c10253d9fd5ca01c78d.tar.bz2 kernel_replicant_linux-009860e7c695507d28782c10253d9fd5ca01c78d.zip |
Build the metapackages by default (Closes: #583849, #941042)
debian/{,signing_templates/}rules.real: Add targets for building
metapackages
debian/rules.real: Make metapackage targets dependencies of
binary-arch-arch or binary-indep, as appropriate
debian/bin/gencontrol{,_signed}.py:
* Expand control file templates for metapackages along with the
corresponding "real" package templates
* Implement a "meta" config option under [packages] to allow
suppressing them
* Define the additional variables that these templates use
* Expand the bug-presubj template for linux-image metapackages
debian/bin/gencontrol_signed.py: Add invocation of the install-meta
rule to debian/rules.gen
Diffstat (limited to 'debian/bin')
-rwxr-xr-x | debian/bin/gencontrol.py | 44 | ||||
-rwxr-xr-x | debian/bin/gencontrol_signed.py | 40 |
2 files changed, 78 insertions, 6 deletions
diff --git a/debian/bin/gencontrol.py b/debian/bin/gencontrol.py index 747c8b7ea24a..a8167d9f8db7 100755 --- a/debian/bin/gencontrol.py +++ b/debian/bin/gencontrol.py @@ -52,6 +52,7 @@ class Gencontrol(Base): 'headers-all': config.SchemaItemBoolean(), 'installer': config.SchemaItemBoolean(), 'libc-dev': config.SchemaItemBoolean(), + 'meta': config.SchemaItemBoolean(), 'tools-unversioned': config.SchemaItemBoolean(), 'tools-versioned': config.SchemaItemBoolean(), 'source': config.SchemaItemBoolean(), @@ -85,6 +86,7 @@ class Gencontrol(Base): 'SOURCEVERSION': self.version.complete, }) makeflags['SOURCE_BASENAME'] = self.vars['source_basename'] + makeflags['SOURCE_SUFFIX'] = self.vars['source_suffix'] # Prepare to generate debian/tests/control self.tests_control = self.process_packages( @@ -171,18 +173,33 @@ class Gencontrol(Base): def do_main_packages(self, packages, vars, makeflags, extra): packages.extend(self.process_packages( self.templates["control.main"], self.vars)) + + # Only build the metapackages if their names won't exactly match + # the packages they depend on + do_meta = self.config.merge('packages').get('meta', True) \ + and vars['source_suffix'] != '-' + vars['version'] + if self.config.merge('packages').get('docs', True): packages.extend(self.process_packages( self.templates["control.docs"], self.vars)) + if do_meta: + packages.extend(self.process_packages( + self.templates["control.docs.meta"], vars)) if self.config.merge('packages').get('tools-unversioned', True): packages.extend(self.process_packages( self.templates["control.tools-unversioned"], self.vars)) if self.config.merge('packages').get('tools-versioned', True): packages.extend(self.process_packages( self.templates["control.tools-versioned"], self.vars)) + if do_meta: + packages.extend(self.process_packages( + self.templates["control.tools-versioned.meta"], vars)) if self.config.merge('packages').get('source', True): packages.extend(self.process_packages( self.templates["control.sourcebin"], self.vars)) + if do_meta: + packages.extend(self.process_packages( + self.templates["control.sourcebin.meta"], vars)) self._substitute_file('perf.lintian-overrides', self.vars, 'debian/linux-perf-%s.lintian-overrides' % @@ -347,6 +364,7 @@ class Gencontrol(Base): flavour) config_image = self.config.merge('image', arch, featureset, flavour) + vars['flavour'] = vars['localversion'][1:] vars['class'] = config_description['hardware'] vars['longclass'] = (config_description.get('hardware-long') or vars['class']) @@ -371,6 +389,7 @@ class Gencontrol(Base): headers = self.templates["control.headers"] assert len(headers) == 1 + do_meta = self.config.merge('packages').get('meta', True) config_entry_base = self.config.merge('base', arch, featureset, flavour) config_entry_build = self.config.merge('build', arch, featureset, @@ -469,12 +488,28 @@ class Gencontrol(Base): packages_own.append(image_main) makeflags['IMAGE_PACKAGE_NAME'] = image_main['Package'] + # The image meta-packages will depend on signed linux-image + # packages where applicable, so should be built from the + # signed source packages + if do_meta and not build_signed: + packages_own.extend(self.process_packages( + self.templates["control.image.meta"], vars)) + + # Include a bug presubj message directing reporters to the real + # image package. + self._substitute_file( + "image.meta.bug-presubj", vars, + "debian/linux-image%s.bug-presubj" % vars['localversion']) + package_headers = self.process_package(headers[0], vars) package_headers['Depends'].extend(relations_compiler_headers) packages_own.append(package_headers) if extra.get('headers_arch_depends'): extra['headers_arch_depends'].append('%s (= ${binary:Version})' % packages_own[-1]['Package']) + if do_meta: + packages_own.extend(self.process_packages( + self.templates["control.headers.meta"], vars)) if config_entry_build.get('vdso', False): makeflags['VDSO'] = True @@ -496,6 +531,13 @@ class Gencontrol(Base): makeflags['DEBUG'] = True packages_own.extend(self.process_packages( self.templates['control.image-dbg'], vars)) + if do_meta: + packages_own.extend(self.process_packages( + self.templates["control.image-dbg.meta"], vars)) + self._substitute_file( + 'image-dbg.meta.lintian-overrides', vars, + 'debian/linux-image%s-dbg.lintian-overrides' % + vars['localversion']) merge_packages(packages, packages_own, arch) @@ -626,6 +668,8 @@ class Gencontrol(Base): 'source_package': self.changelog[0].source, 'abiname': self.abiname_version + self.abiname_part, } + self.vars['source_suffix'] = \ + self.changelog[0].source[len(self.vars['source_basename']):] self.config['version', ] = {'source': self.version.complete, 'upstream': self.version.linux_upstream, 'abiname_base': self.abiname_version, diff --git a/debian/bin/gencontrol_signed.py b/debian/bin/gencontrol_signed.py index d8b0c531a467..7b534043d35f 100755 --- a/debian/bin/gencontrol_signed.py +++ b/debian/bin/gencontrol_signed.py @@ -36,6 +36,7 @@ class Gencontrol(Base): 'template': 'linux-image-%s-signed-template' % arch, 'upstreamversion': self.version.linux_upstream, 'version': self.version.linux_version, + 'source_suffix': '', 'source_upstream': self.version.upstream, 'abiname': self.abiname, 'imagebinaryversion': image_binary_version, @@ -147,7 +148,15 @@ class Gencontrol(Base): super(Gencontrol, self).do_flavour_setup(vars, makeflags, arch, featureset, flavour, extra) + config_description = self.config.merge('description', arch, featureset, + flavour) config_image = self.config.merge('image', arch, featureset, flavour) + + vars['flavour'] = vars['localversion'][1:] + vars['class'] = config_description['hardware'] + vars['longclass'] = (config_description.get('hardware-long') + or vars['class']) + vars['image-stem'] = config_image.get('install-stem') makeflags['IMAGE_INSTALL_STEM'] = vars['image-stem'] @@ -187,15 +196,34 @@ class Gencontrol(Base): image_package_name + ' (= %(imagebinaryversion)s) [%(arch)s]' % vars) - packages_signed = self.process_packages( + packages_own = self.process_packages( self.templates['control.image'], vars) - merge_packages(packages, packages_signed, arch) + assert len(packages_own) == 1 + cmds_binary_arch = ["$(MAKE) -f debian/rules.real install-signed " + "PACKAGE_NAME='%s' %s" % + (packages_own[0]['Package'], makeflags)] + + if self.config.merge('packages').get('meta', True): + packages_meta = self.process_packages( + self.templates['control.image.meta'], vars) + assert len(packages_meta) == 1 - cmds_binary_arch = [] - for i in packages_signed: - cmds_binary_arch += ["$(MAKE) -f debian/rules.real install-signed " + # Don't pretend to support build-profiles + del packages_meta[0]['Build-Profiles'] + + packages_own.extend(packages_meta) + cmds_binary_arch += ["$(MAKE) -f debian/rules.real install-meta " "PACKAGE_NAME='%s' %s" % - (i['Package'], makeflags)] + (packages_meta[0]['Package'], makeflags)] + + # Include a bug presubj message directing reporters to the real + # image package. + self._substitute_file( + "image.meta.bug-presubj", vars, + self.template_debian_dir + + "/linux-image%s.bug-presubj" % vars['localversion']) + + merge_packages(packages, packages_own, arch) makefile.add('binary-arch_%s_%s_%s_real' % (arch, featureset, flavour), cmds=cmds_binary_arch) |