[REVIEW][Unstable] Introduce variant support for master kernel packages

Seth Forshee seth.forshee at canonical.com
Tue Dec 3 22:26:34 UTC 2019

For some backport packages in bionic we've adopted a scheme where
package names include the upstream version (e.g. linux-azure-5.3,
linux-meta-azure-5.3, etc.). For these packages a list of the variants
supported from the package (e.g. -edge) is used by linux-meta to
determine what meta packages need to be produced. This allows changing
the variant without rebuilding the kernel.

This has utility for the master kernels during development. We would be
able to introduce new kernel verions into the -proposed and -release
pockets earlier for testing while keeping the primary variant packages
at a better-tested kernel versions. The meta packages would be suffixed
with the variant, such as -wip as used in the patches which follow,
allowing e.g. linux-generic-wip to be installed for testing the
work-in-progress kernel.

Variant support is also likely to be useful after development, easing
the transition of hwe and hwe-edge to newer kernel version, for example.

Supporting variants is more complicated for the master kernel than for
derivatives. There are a handful of packages which should only produces
by the master kernel, such as linux-libc-dev, so the kernel source
package needs to be aware of variants to know whether or not to produce
these packages. linux-restricted-modules also produces meta packages,
which need to include variant suffixes. Therefore all packages will gain
a $DEBIAN/variants file. The list of variants for a given source package
will be maintained in kernel-series.yaml and updates by cranky-fix.

I'd appreciate review on the following patches for unstable which
implement variant support and prepare the packaging for including
upstream version numbers in the source package names. There are also
some cleanup patches. For the kernel package I've included an example of
changing the source package name from linux to linux-5.4. I did not
include patches changing the source package name for supporting
packages; these will be done when preparing new uploads.

I will point out that there are inconsistencies in the format of
substition variables for control files in these patches. This is because
it is inconsistent in our packaging. I used the format which seemed to
be predominant for each package. These should be unified, but I did not
do so as part of this work.

I've got a test build using these changes and new source package names
at https://launchpad.net/~sforshee/+archive/ubuntu/test-builds.


More information about the kernel-team mailing list