]> code.ossystems Code Review - openembedded-core.git/commit
kernel: Add support for multiple kernel packages
authorHaris Okanovic <haris.okanovic@ni.com>
Tue, 7 Nov 2017 18:40:39 +0000 (12:40 -0600)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 2 Jan 2018 17:24:12 +0000 (17:24 +0000)
commit6c8c899849d101fd1b86aad0b8eed05c7c785924
treedba0d3ce7a21b196c165f98c1731f112d0cf2d2b
parent923f91d8d8606141ce218927bc943f4f4f34bcdd
kernel: Add support for multiple kernel packages

Some distros may want to provide alternate kernel "flavors" via feeds or
within bootable images. For example, readily available builds which
provide certain diagnostic features can enable developers and testers to
more quickly resolve issues by avoiding lengthy kernel builds.

This change allows for building multiple flavors of the kernel and
module packages by templatizing kernel package names via a new
KERNEL_PACKAGE_NAME variable in kernel.bbclass. It defaults to the old
name of "kernel", but can be overridden by certain recipes providing
alternate kernel flavors.

To maintain compatibility, recipes providing alternate kernel flavors
cannot be the "preferred provider" for virtual/kernel. This is because
OE puts the preferred provider's build and source at
"tmp-glibc/work-shared/$MACHINE/kernel-build-artifacts/" and
"tmp-glibc/work-shared/$MACHINE/kernel-source/" instead of
"tmp-glibc/work/*/$PN/" like other recipes. Therefore, recipes using the
default KERNEL_PACKAGE_NAME="kernel" follows the old semantics -- build
in the old location and may be preferred provider -- while recipes using
all other KERNEL_PACKAGE_NAME's build from the normal WORKDIR and don't
provide "virtual/kernel".

Testing:
 1. Add `KERNEL_PACKAGE_NAME_pn-linux-yocto-tiny = "tiny-linux"`
    to local.conf so that linux-yocto-tiny may build alongside
    the main kernel (linux-yocto).
 2. `bitbake linux-yocto linux-yocto-tiny` to build both kernel flavors.
 3. Verified image and modules IPKs exist for both:
    tmp-glibc/deploy/ipk/qemux86/kernel-* for linux-yocto
    tmp-glibc/deploy/ipk/qemux86/tiny-linux* for linux-yocto-tiny
 4. Verified linux-yocto is the "preferred provider", and was built in
    shared directory: tmp-glibc/work-shared/qemux86/kernel-*
 5. Add `CORE_IMAGE_BASE_INSTALL_append_pn-core-image-base = "tiny-linux"`
    to local.conf to install both kernel flavors in core-image-base.
 6. `bitbake core-image-base` to build an image.
 7. Verified image contains two bzImage's under /boot/, with
    "yocto-standard" (linux-yocto recipe) selected to boot via symlink.

Discussion threads:
http://lists.openembedded.org/pipermail/openembedded-core/2015-December/thread.html#114122
http://lists.openembedded.org/pipermail/openembedded-core/2017-July/thread.html#139130

[YOCTO #11363]

Signed-off-by: Ioan-Adrian Ratiu <adrian.ratiu@ni.com>
Signed-off-by: Gratian Crisan <gratian.crisan@ni.com>
Signed-off-by: Haris Okanovic <haris.okanovic@ni.com>
Coauthored-by: Gratian Crisan <gratian.crisan@ni.com>
Coauthored-by: Haris Okanovic <haris.okanovic@ni.com>
Coauthored-by: Josh Hernstrom <josh.hernstrom@ni.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/kernel-devicetree.bbclass
meta/classes/kernel-module-split.bbclass
meta/classes/kernel.bbclass
meta/conf/documentation.conf
meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
meta/recipes-kernel/linux/linux-yocto-rt_4.10.bb
meta/recipes-kernel/linux/linux-yocto-rt_4.12.bb
meta/recipes-kernel/linux/linux-yocto-rt_4.4.bb
meta/recipes-kernel/linux/linux-yocto-rt_4.9.bb
meta/recipes-kernel/linux/linux-yocto.inc