All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ovidiu-Adrian Vancea <ovidiu.vancea@ni.com>
To: "haris.okanovic@ni.com" <haris.okanovic@ni.com>
Cc: "josh.hernstrom@ni.com" <josh.hernstrom@ni.com>,
	"Wold, Saul" <saul.wold@intel.com>,
	"openembedded-core@lists.openembedded.org"
	<openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH v4] kernel: Add support for multiple kernel packages
Date: Thu, 3 Aug 2017 19:18:40 +0300	[thread overview]
Message-ID: <1501777120.62231.16.camel@ni.com> (raw)
In-Reply-To: <CAFW5wYYqeW1DDjJ2RXu-OfSuUgAWj=7qjOXLbCNA+Kq1z4gjkA@mail.gmail.com>

On Thu, 2017-07-27 at 11:01 -0700, Rees, Kevron wrote:
> On Wed, Jul 19, 2017 at 8:56 AM, Wold, Saul <saul.wold@intel.com>
> wrote:
> > On Tue, 2017-07-18 at 08:34 -0500, Haris Okanovic wrote:
> > > 
> > > On 07/17/2017 03:31 PM, Wold, Saul wrote:
> > > > 
> > > > On Wed, 2017-07-05 at 12:33 -0500, Haris Okanovic wrote:
> > > > > 
> > > > > 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. Prepended `KERNEL_PACKAGE_NAME = "tiny-linux"` to
> > > > >      linux-yocto-tiny_4.9.bb so that it may build alongside
> > > > >      the main kernel.
> > > > >   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. Appended `CORE_IMAGE_BASE_INSTALL += "tiny-linux"` to
> > > > >      core-image-base.bb to include both kernel flavors.
> > > > >   6. `bitbake core-image-base` to build an image.
> > > > >   7. Verified image contains two bzImage's under /boot/, with
> > > > >      "yocto-standard" selected to boot via symlink.
> > > > > 
> > > > > Discussion thread:
> > > > > https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.ope
> > > > > nembedded.org_pipermail_openembedded-2Dcore_2015-
> > > > > 2DDe&d=DwICAg&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r
> > > > > =35FLeGKBmrBGMHAhCV37-B4ddgcjLZXUChuxj5DD6Sk&m=-J-
> > > > > ERX3BXdjXgeeIE_ZNE7GozSVtUpP3Wt6FV_jtLtM&s=z_ITagkjX7-
> > > > > q9KHaytBdqTZeJYksmYYjciSiELDYIGE&e= 
> > > > > cemb
> > > > > er/thread.html#114122
> > > > > 
> > > > > 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>
> > > > > ---
> > > > > [PATCH v2] Change STAGING_KERNEL_DIR and
> > > > > STAGING_KERNEL_BUILDDIR
> > > > > to
> > > > > the
> > > > > "work" directory in alternate kernel builds, instead of
> > > > > "work-
> > > > > shared",
> > > > > so
> > > > > that the two builds don't clobber each other.
> > > > > 
> > > > > [PATCH v3] An updated version of this change rebased onto the
> > > > > current
> > > > > OE-core master. Changes:
> > > > >   * Remove PREFERRED_PROVIDER check in linux-yocto.inc in
> > > > > alternate
> > > > >     kernel builds, since alternate kernels aren't the
> > > > >     PREFERRED_PROVIDER for virtual/kernel by definition.
> > > > >   * Remove "virtual/kernel" from PROVIDES in alternate kernel
> > > > > builds.
> > > > > 
> > > > > [PATCH v4] Another rebase onto master; no functional change.
> > > > > Improved description and testing steps.
> > > > 
> > > > So I finally had a chance to get back to this and test build
> > > > with
> > > > it, I
> > > > saw the following WARNING, which lead to the ERROR:
> > > > 
> > > > WARNING: Variable key FILES_${PN}-dev (${includedir}
> > > > ${FILES_SOLIBSDEV}
> > > > ${libdir}/*.la ${libdir}/*.o ${libdir}/pkgconfig
> > > > ${datadir}/pkgconfig
> > > > ${datadir}/aclocal ${base_libdir}/*.o ${libdir}/${BPN}/*.la
> > > > ${base_libdir}/*.la) replaces original key FILES_linux-yocto-
> > > > dev
> > > > (/boot/System.map* /boot/Module.symvers* /boot/config*
> > > > ${KERNEL_SRC_PATH}
> > > > ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/build).
> > > > ERROR: linux-yocto-4.10.17+gitAUTOINC+e92bd55409_6648a34e00-r0
> > > > do_package: QA Issue: linux-yocto: Files/directories were
> > > > installed
> > > > but
> > > > not shipped in any package:
> > > >    /boot/System.map-4.10.17-yocto-standard
> > > >    /boot/Module.symvers-4.10.17-yocto-standard
> > > >    /boot/config-4.10.17-yocto-standard
> > > > Please set FILES such that these items are packaged.
> > > > Alternatively
> > > > if
> > > > they are unneeded, avoid installing them or delete them within
> > > > do_install.
> > > > linux-yocto: 3 installed and not shipped files. [installed-vs-
> > > > shipped]
> > > > ERROR: linux-yocto-4.10.17+gitAUTOINC+e92bd55409_6648a34e00-r0
> > > > do_package: Fatal QA errors found, failing task.
> > > > ERROR: linux-yocto-4.10.17+gitAUTOINC+e92bd55409_6648a34e00-r0
> > > > do_package: Function failed: do_package
> > > > 
> > > > Something seems to be causing the FILES_linux-yocto-dev info to
> > > > be
> > > > overridden, I have not tracked down the culprit yet.
> > > > 
> > > 
> > > `FILES_linux-yocto-dev` is set to the default value from OE's
> > > bitbake.conf. `FILES_kernel-dev` on the other hand is set by
> > > kernel.bbclass; when `KERNEL_PACKAGE_NAME` expands to `kernel`.
> > > 
> > > I think the real issue here is that QA checks care about
> > > `FILES_${PN}-dev` at all even though that particular package name
> > > isn't
> > > listed in `PACKAGES` variable. I.e. `FILES_${PN}-dev` should be
> > > disregarded since the `linux-yocto` recipe doesn't create package
> > > `${PN}-dev`.
> > > 
> > > Thoughts?
> > > 
> > 
> > It's hard to special case this. After you sent this, I realized
> > what I
> > did was set the KERNEL_PACKAGE_NAME to linux-yocto and because the
> > KERNEL_PACKAGE_NAME matched the actual recipe name we got the
> > strange
> > ${PN} interaction, we might be able to add a test to flag that as
> > an
> > error or warning in the kernel.bbclass.
> > 
> > I am also seeing an issue when I build a 4.9 kernel and then set-up 
> > a
> > 4.10 kernel with the kernel-abiversion getting mis-matched from the
> > depmodwrapper.  Have you tested with different versions?  I know it
> > should work with a old kernel/userspace -> new kernel, but not from
> > a
> > new kernel/userspace -> old kernel.
> > 
> 
> I've also hit this issue.  Here's the error message if that's helpful
> at all:
> 
> WARNING: core-image-base-1.0-r0 do_rootfs: [log_check]
> core-image-base: found 2 warning messages in the logfile:
> [log_check] warning:
> %post(tiny-linux-4.10.17-yocto-tiny-
> 4.10.17+git0+e92bd55409_6648a34e00-r0.qemux86)
> scriptlet failed, exit status 1
> [log_check] Warn: update-alternatives: bzImage has multiple providers
> with the same priority, please check
> /home/tripzero/Projects/poky-contrib/build/tmp/wo
> rk/qemux86-poky-linux/core-image-base/1.0-
> r0/rootfs/usr/lib/opkg/alternatives/bzImage
> for details
> 
> ERROR: core-image-base-1.0-r0 do_rootfs: [log_check] core-image-base:
> found 1 error message in the logfile:
> [log_check] Error: Kernel version 4.10.17-yocto-tiny does not match
> kernel-abiversion (4.10.17-yocto-standard)
> 
> 

When building multiple kernels (multiple recipes), because all inherit
kernel.bbclass, all of them end up in a crowded build/tmp-
glibc/deploy/images/<arch>/.
More problematic is that the symbolic links for the kernel images would
be overridden with the last run kernel build (only if they have the
same KERNEL_IMAGETYPE).
So if linux-yocto-tiny was built last, the kernel image symbolic link
would point to linux-yocto-tiny's kernel instead of the default one.
I suggest we only keep the default kernel's components in build/tmp-
glibc/deploy/images/<arch>/.

Any thoughts?

> 
> > Sau!
> > 
> > 
> > > > 
> > > > Sau!
> > > > 
> > > > > 
> > > > > ---
> > > > >   meta/classes/kernel-module-split.bbclass  |  9 ++--
> > > > >   meta/classes/kernel.bbclass               | 85
> > > > > ++++++++++++++++++---
> > > > > ----------
> > > > >   meta/conf/documentation.conf              |  1 +
> > > > >   meta/recipes-kernel/linux/linux-dtb.inc   |  2 +-
> > > > >   meta/recipes-kernel/linux/linux-yocto.inc |  2 +-
> > > > >   5 files changed, 59 insertions(+), 40 deletions(-)
> > > > > 
> > > > > diff --git a/meta/classes/kernel-module-split.bbclass
> > > > > b/meta/classes/kernel-module-split.bbclass
> > > > > index 1035525dac..9716c5937b 100644
> > > > > --- a/meta/classes/kernel-module-split.bbclass
> > > > > +++ b/meta/classes/kernel-module-split.bbclass
> > > > > @@ -30,7 +30,7 @@ do_install_append() {
> > > > > 
> > > > >   PACKAGESPLITFUNCS_prepend = "split_kernel_module_packages "
> > > > > 
> > > > > -KERNEL_MODULES_META_PACKAGE ?= "kernel-modules"
> > > > > +KERNEL_MODULES_META_PACKAGE ?= "${KERNEL_PACKAGE_NAME}-
> > > > > modules"
> > > > > 
> > > > >   KERNEL_MODULE_PACKAGE_PREFIX ?= ""
> > > > >   KERNEL_MODULE_PACKAGE_SUFFIX ?= "-${KERNEL_VERSION}"
> > > > > @@ -129,16 +129,19 @@ python split_kernel_module_packages ()
> > > > > {
> > > > >              postfix = format.split('%s')[1]
> > > > >              d.setVar('RPROVIDES_' + pkg,
> > > > > pkg.replace(postfix,
> > > > > ''))
> > > > > 
> > > > > +    kernel_package_name = d.getVar("KERNEL_PACKAGE_NAME",
> > > > > True)
> > > > > +    kernel_version = d.getVar("KERNEL_VERSION", True)
> > > > > +
> > > > >       module_regex = '^(.*)\.k?o$'
> > > > > 
> > > > >       module_pattern_prefix =
> > > > > d.getVar('KERNEL_MODULE_PACKAGE_PREFIX')
> > > > >       module_pattern_suffix =
> > > > > d.getVar('KERNEL_MODULE_PACKAGE_SUFFIX')
> > > > > -    module_pattern = module_pattern_prefix + 'kernel-module-
> > > > > %s'
> > > > > +
> > > > > module_pattern_suffix
> > > > > +    module_pattern = module_pattern_prefix +
> > > > > kernel_package_name
> > > > > +
> > > > > '-module-%s' + module_pattern_suffix
> > > > > 
> > > > >       postinst = d.getVar('pkg_postinst_modules')
> > > > >       postrm = d.getVar('pkg_postrm_modules')
> > > > > 
> > > > > -    modules = do_split_packages(d,
> > > > > root='${nonarch_base_libdir}/modules',
> > > > > file_regex=module_regex,
> > > > > output_pattern=module_pattern, description='%s kernel
> > > > > module',
> > > > > postinst=postinst, postrm=postrm, recursive=True,
> > > > > hook=frob_metadata,
> > > > > extra_depends='kernel-%s' % (d.getVar("KERNEL_VERSION")))
> > > > > +    modules = do_split_packages(d,
> > > > > root='${nonarch_base_libdir}/modules',
> > > > > file_regex=module_regex,
> > > > > output_pattern=module_pattern, description='%s kernel
> > > > > module',
> > > > > postinst=postinst, postrm=postrm, recursive=True,
> > > > > hook=frob_metadata,
> > > > > extra_depends='%s-%s' % (kernel_package_name,
> > > > > kernel_version))
> > > > >       if modules:
> > > > >           metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
> > > > >           d.appendVar('RDEPENDS_' + metapkg, ' '+'
> > > > > '.join(modules))
> > > > > diff --git a/meta/classes/kernel.bbclass
> > > > > b/meta/classes/kernel.bbclass
> > > > > index 7670c7107a..7fa4509961 100644
> > > > > --- a/meta/classes/kernel.bbclass
> > > > > +++ b/meta/classes/kernel.bbclass
> > > > > @@ -1,6 +1,8 @@
> > > > >   inherit linux-kernel-base kernel-module-split
> > > > > 
> > > > > -PROVIDES += "virtual/kernel"
> > > > > +KERNEL_PACKAGE_NAME ??= "kernel"
> > > > > +
> > > > > +PROVIDES += "${@ "virtual/kernel" if
> > > > > (d.getVar("KERNEL_PACKAGE_NAME", True) == "kernel") else ""
> > > > > }"
> > > > >   DEPENDS += "virtual/${TARGET_PREFIX}binutils
> > > > > virtual/${TARGET_PREFIX}gcc kmod-native bc-native lzop-
> > > > > native"
> > > > >   PACKAGE_WRITE_DEPS += "depmodwrapper-cross virtual/update-
> > > > > alternatives-native"
> > > > > 
> > > > > @@ -33,10 +35,23 @@ KERNEL_VERSION_PKG_NAME[vardepvalue] =
> > > > > "${LINUX_VERSION}"
> > > > > 
> > > > >   python __anonymous () {
> > > > > 
> > > > > +    # The default kernel recipe builds in a shared location
> > > > > defined
> > > > > by
> > > > > +    # bitbake/distro confs: STAGING_KERNEL_DIR and
> > > > > STAGING_KERNEL_BUILDDIR.
> > > > > +    # Set these variables to directories under ${WORKDIR} in
> > > > > alternate
> > > > > +    # kernel recipes (I.e. where KERNEL_PACKAGE_NAME !=
> > > > > kernel)
> > > > > so
> > > > > that they
> > > > > +    # may build in parallel with the default kernel without
> > > > > clobbering.
> > > > > +    if d.getVar("KERNEL_PACKAGE_NAME", True) != "kernel":
> > > > > +        workdir = d.getVar("WORKDIR", True)
> > > > > +        sourceDir = os.path.join(workdir, 'kernel-source')
> > > > > +        artifactsDir = os.path.join(workdir, 'kernel-build-
> > > > > artifacts')
> > > > > +        d.setVar("STAGING_KERNEL_DIR", sourceDir)
> > > > > +        d.setVar("STAGING_KERNEL_BUILDDIR", artifactsDir)
> > > > > +
> > > > >       # Merge KERNEL_IMAGETYPE and KERNEL_ALT_IMAGETYPE into
> > > > > KERNEL_IMAGETYPES
> > > > >       type = d.getVar('KERNEL_IMAGETYPE') or ""
> > > > >       alttype = d.getVar('KERNEL_ALT_IMAGETYPE') or ""
> > > > >       types = d.getVar('KERNEL_IMAGETYPES') or ""
> > > > > +    kname = d.getVar('KERNEL_PACKAGE_NAME', True) or
> > > > > "kernel"
> > > > >       if type not in types.split():
> > > > >           types = (type + ' ' + types).strip()
> > > > >       if alttype not in types.split():
> > > > > @@ -53,22 +68,22 @@ python __anonymous () {
> > > > >           typelower = type.lower()
> > > > >           imagedest = d.getVar('KERNEL_IMAGEDEST')
> > > > > 
> > > > > -        d.appendVar('PACKAGES', ' ' + 'kernel-image-' +
> > > > > typelower)
> > > > > +        d.appendVar('PACKAGES', ' %s-image-%s' % (kname,
> > > > > typelower))
> > > > > 
> > > > > -        d.setVar('FILES_kernel-image-' + typelower, '/' +
> > > > > imagedest
> > > > > + '/' + type + '-${KERNEL_VERSION_NAME}')
> > > > > +        d.setVar('FILES_' + kname + '-image-' + typelower,
> > > > > '/' +
> > > > > imagedest + '/' + type + '-${KERNEL_VERSION_NAME}')
> > > > > 
> > > > > -        d.appendVar('RDEPENDS_kernel-image', ' ' + 'kernel-
> > > > > image-' +
> > > > > typelower)
> > > > > +        d.appendVar('RDEPENDS_%s-image' % kname, ' %s-image-
> > > > > %s'
> > > > > %
> > > > > (kname, typelower))
> > > > > 
> > > > > -        d.setVar('PKG_kernel-image-' + typelower, 'kernel-
> > > > > image-
> > > > > ' +
> > > > > typelower + '-${KERNEL_VERSION_PKG_NAME}')
> > > > > +        d.setVar('PKG_%s-image-%s' % (kname,typelower), '%s-
> > > > > image-
> > > > > %s-${KERNEL_VERSION_PKG_NAME}' % (kname, typelower))
> > > > > 
> > > > > -        d.setVar('ALLOW_EMPTY_kernel-image-' + typelower,
> > > > > '1')
> > > > > +        d.setVar('ALLOW_EMPTY_%s-image-%s' % (kname,
> > > > > typelower),
> > > > > '1')
> > > > > 
> > > > >           priority = d.getVar('KERNEL_PRIORITY')
> > > > >           postinst = '#!/bin/sh\n' + 'update-alternatives --
> > > > > install /'
> > > > > + imagedest + '/' + type + ' ' + type + ' ' + type + '-
> > > > > ${KERNEL_VERSION_NAME} ' + priority + ' || true' + '\n'
> > > > > -        d.setVar('pkg_postinst_kernel-image-' + typelower,
> > > > > postinst)
> > > > > +        d.setVar('pkg_postinst_' + kname + '-image-' +
> > > > > typelower,
> > > > > postinst)
> > > > > 
> > > > >           postrm = '#!/bin/sh\n' + 'update-alternatives --
> > > > > remove'
> > > > > + '
> > > > > ' + type + ' ' + type + '-${KERNEL_VERSION_NAME} || true' +
> > > > > '\n'
> > > > > -        d.setVar('pkg_postrm_kernel-image-' + typelower,
> > > > > postrm)
> > > > > +        d.setVar('pkg_postrm_%s-image-%s' % (kname,
> > > > > typelower),
> > > > > postrm)
> > > > > 
> > > > >       image = d.getVar('INITRAMFS_IMAGE')
> > > > >       if image:
> > > > > @@ -126,9 +141,9 @@ base_do_unpack_append () {
> > > > > 
> > > > >   inherit kernel-arch deploy
> > > > > 
> > > > > -PACKAGES_DYNAMIC += "^kernel-module-.*"
> > > > > -PACKAGES_DYNAMIC += "^kernel-image-.*"
> > > > > -PACKAGES_DYNAMIC += "^kernel-firmware-.*"
> > > > > +PACKAGES_DYNAMIC += "^${KERNEL_PACKAGE_NAME}-module-.*"
> > > > > +PACKAGES_DYNAMIC += "^${KERNEL_PACKAGE_NAME}-image-.*"
> > > > > +PACKAGES_DYNAMIC += "^${KERNEL_PACKAGE_NAME}-firmware-.*"
> > > > > 
> > > > >   export OS = "${TARGET_OS}"
> > > > >   export CROSS_COMPILE = "${TARGET_PREFIX}"
> > > > > @@ -371,9 +386,9 @@ do_shared_workdir_setscene () {
> > > > > 
> > > > >   emit_depmod_pkgdata() {
> > > > >           # Stash data for depmod
> > > > > - install -d ${PKGDESTWORK}/kernel-depmod/
> > > > > - echo "${KERNEL_VERSION}" > ${PKGDESTWORK}/kernel-
> > > > > depmod/kernel-abiversion
> > > > > - cp ${B}/System.map ${PKGDESTWORK}/kernel-
> > > > > depmod/System.map-
> > > > > ${KERNEL_VERSION}
> > > > > + install -d ${PKGDESTWORK}/${KERNEL_PACKAGE_NAME}-depmod/
> > > > > + echo "${KERNEL_VERSION}" >
> > > > > ${PKGDESTWORK}/${KERNEL_PACKAGE_NAME}-
> > > > > depmod/${KERNEL_PACKAGE_NAME}-
> > > > > abiversion
> > > > > + cp ${B}/System.map
> > > > > ${PKGDESTWORK}/${KERNEL_PACKAGE_NAME}-
> > > > > depmod/System.map-${KERNEL_VERSION}
> > > > >   }
> > > > > 
> > > > >   PACKAGEFUNCS += "emit_depmod_pkgdata"
> > > > > @@ -388,7 +403,7 @@ do_shared_workdir () {
> > > > >           # Store the kernel version in sysroots for module-
> > > > > base.bbclass
> > > > >           #
> > > > > 
> > > > > - echo "${KERNEL_VERSION}" > $kerneldir/kernel-abiversion
> > > > > + echo "${KERNEL_VERSION}" >
> > > > > $kerneldir/${KERNEL_PACKAGE_NAME}-abiversion
> > > > > 
> > > > >           # Copy files required for module builds
> > > > >           cp System.map $kerneldir/System.map-
> > > > > ${KERNEL_VERSION}
> > > > > @@ -486,28 +501,28 @@ EXPORT_FUNCTIONS do_compile do_install
> > > > > do_configure
> > > > > 
> > > > >   # kernel-base becomes kernel-${KERNEL_VERSION}
> > > > >   # kernel-image becomes kernel-image-${KERNEL_VERSION}
> > > > > -PACKAGES = "kernel kernel-base kernel-vmlinux kernel-image
> > > > > kernel-
> > > > > dev kernel-modules"
> > > > > +PACKAGES = "${KERNEL_PACKAGE_NAME} ${KERNEL_PACKAGE_NAME}-
> > > > > base
> > > > > ${KERNEL_PACKAGE_NAME}-vmlinux ${KERNEL_PACKAGE_NAME}-image
> > > > > ${KERNEL_PACKAGE_NAME}-dev ${KERNEL_PACKAGE_NAME}-modules"
> > > > >   FILES_${PN} = ""
> > > > > -FILES_kernel-base =
> > > > > "${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.ord
> > > > > er
> > > > > ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.buil
> > > > > tin"
> > > > > -FILES_kernel-image = ""
> > > > > -FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers*
> > > > > /boot/config* ${KERNEL_SRC_PATH}
> > > > > ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/build"
> > > > > -FILES_kernel-vmlinux = "/boot/vmlinux-
> > > > > ${KERNEL_VERSION_NAME}"
> > > > > -FILES_kernel-modules = ""
> > > > > -RDEPENDS_kernel = "kernel-base"
> > > > > +FILES_${KERNEL_PACKAGE_NAME}-base =
> > > > > "${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.ord
> > > > > er
> > > > > ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.buil
> > > > > tin"
> > > > > +FILES_${KERNEL_PACKAGE_NAME}-image = ""
> > > > > +FILES_${KERNEL_PACKAGE_NAME}-dev = "/boot/System.map*
> > > > > /boot/Module.symvers* /boot/config* ${KERNEL_SRC_PATH}
> > > > > ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/build"
> > > > > +FILES_${KERNEL_PACKAGE_NAME}-vmlinux = "/boot/vmlinux-
> > > > > ${KERNEL_VERSION_NAME}"
> > > > > +FILES_${KERNEL_PACKAGE_NAME}-modules = ""
> > > > > +RDEPENDS_${KERNEL_PACKAGE_NAME} = "${KERNEL_PACKAGE_NAME}-
> > > > > base"
> > > > >   # Allow machines to override this dependency if kernel
> > > > > image
> > > > > files
> > > > > are
> > > > >   # not wanted in images as standard
> > > > > -RDEPENDS_kernel-base ?= "kernel-image"
> > > > > -PKG_kernel-image = "kernel-image-${@legitimize_package_name(
> > > > > '${K
> > > > > ERNE
> > > > > L_VERSION}')}"
> > > > > -RDEPENDS_kernel-image += "${@base_conditional('KERNEL_IMAGET
> > > > > YPE'
> > > > > ,
> > > > > 'vmlinux', 'kernel-vmlinux', '', d)}"
> > > > > -PKG_kernel-base = "kernel-${@legitimize_package_name('${KERN
> > > > > EL_V
> > > > > ERSI
> > > > > ON}')}"
> > > > > -RPROVIDES_kernel-base += "kernel-${KERNEL_VERSION}"
> > > > > -ALLOW_EMPTY_kernel = "1"
> > > > > -ALLOW_EMPTY_kernel-base = "1"
> > > > > -ALLOW_EMPTY_kernel-image = "1"
> > > > > -ALLOW_EMPTY_kernel-modules = "1"
> > > > > -DESCRIPTION_kernel-modules = "Kernel modules meta package"
> > > > > -
> > > > > -pkg_postinst_kernel-base () {
> > > > > +RDEPENDS_${KERNEL_PACKAGE_NAME}-base ?=
> > > > > "${KERNEL_PACKAGE_NAME}-
> > > > > image"
> > > > > +PKG_${KERNEL_PACKAGE_NAME}-image = "${KERNEL_PACKAGE_NAME}-
> > > > > image-${@
> > > > > legitimize_package_name('${KERNEL_VERSION}')}"
> > > > > +RDEPENDS_${KERNEL_PACKAGE_NAME}-image += "${@base_conditiona
> > > > > l('K
> > > > > ERNE
> > > > > L_IMAGETYPE', 'vmlinux', '${KERNEL_PACKAGE_NAME}-vmlinux',
> > > > > '',
> > > > > d)}"
> > > > > +PKG_${KERNEL_PACKAGE_NAME}-base = "${KERNEL_PACKAGE_NAME}-${
> > > > > @leg
> > > > > itim
> > > > > ize_package_name('${KERNEL_VERSION}')}"
> > > > > +RPROVIDES_${KERNEL_PACKAGE_NAME}-base +=
> > > > > "${KERNEL_PACKAGE_NAME}-
> > > > > ${KERNEL_VERSION}"
> > > > > +ALLOW_EMPTY_${KERNEL_PACKAGE_NAME} = "1"
> > > > > +ALLOW_EMPTY_${KERNEL_PACKAGE_NAME}-base = "1"
> > > > > +ALLOW_EMPTY_${KERNEL_PACKAGE_NAME}-image = "1"
> > > > > +ALLOW_EMPTY_${KERNEL_PACKAGE_NAME}-modules = "1"
> > > > > +DESCRIPTION_${KERNEL_PACKAGE_NAME}-modules = "Kernel modules
> > > > > meta
> > > > > package"
> > > > > +
> > > > > +pkg_postinst_${KERNEL_PACKAGE_NAME}-base () {
> > > > >           if [ ! -e "$D/lib/modules/${KERNEL_VERSION}" ];
> > > > > then
> > > > >                   mkdir -p $D/lib/modules/${KERNEL_VERSION}
> > > > >           fi
> > > > > @@ -521,7 +536,7 @@ pkg_postinst_kernel-base () {
> > > > >   PACKAGESPLITFUNCS_prepend = "split_kernel_packages "
> > > > > 
> > > > >   python split_kernel_packages () {
> > > > > -    do_split_packages(d,
> > > > > root='${nonarch_base_libdir}/firmware',
> > > > > file_regex='^(.*)\.(bin|fw|cis|csp|dsp)$',
> > > > > output_pattern='kernel-
> > > > > firmware-%s', description='Firmware for %s', recursive=True,
> > > > > extra_depends='')
> > > > > +    do_split_packages(d,
> > > > > root='${nonarch_base_libdir}/firmware',
> > > > > file_regex='^(.*)\.(bin|fw|cis|csp|dsp)$',
> > > > > output_pattern='${KERNEL_PACKAGE_NAME}-firmware-%s',
> > > > > description='Firmware for %s', recursive=True,
> > > > > extra_depends='')
> > > > >   }
> > > > > 
> > > > >   # Many scripts want to look in arch/$arch/boot for the
> > > > > bootable
> > > > > diff --git a/meta/conf/documentation.conf
> > > > > b/meta/conf/documentation.conf
> > > > > index 35b9103b4a..e061b98de3 100644
> > > > > --- a/meta/conf/documentation.conf
> > > > > +++ b/meta/conf/documentation.conf
> > > > > @@ -248,6 +248,7 @@ KERNEL_IMAGETYPE[doc] = "The type of
> > > > > kernel
> > > > > to
> > > > > build for a device, usually set b
> > > > >   KERNEL_IMAGETYPES[doc] = "The list of types of kernel to
> > > > > build
> > > > > for a
> > > > > device, usually set by the machine configuration files and
> > > > > defaults
> > > > > to KERNEL_IMAGETYPE."
> > > > >   KERNEL_MODULE_AUTOLOAD[doc] = "Lists kernel modules that
> > > > > need
> > > > > to be
> > > > > auto-loaded during boot"
> > > > >   KERNEL_MODULE_PROBECONF[doc] = "Lists kernel modules for
> > > > > which
> > > > > the
> > > > > build system expects to find module_conf_* values that
> > > > > specify
> > > > > configuration for each of the modules"
> > > > > +KERNEL_PACKAGE_NAME[doc] = "Name prefix for kernel packages.
> > > > > Defaults to 'kernel'."
> > > > >   KERNEL_PATH[doc] = "The location of the kernel sources.
> > > > > This
> > > > > variable is set to the value of the STAGING_KERNEL_DIR within
> > > > > the
> > > > > module class (module.bbclass)."
> > > > >   KERNEL_SRC[doc] = "The location of the kernel sources. This
> > > > > variable
> > > > > is set to the value of the STAGING_KERNEL_DIR within the
> > > > > module
> > > > > class
> > > > > (module.bbclass)."
> > > > >   KFEATURE_DESCRIPTION[doc] = "Provides a short description
> > > > > of a
> > > > > configuration fragment. You use this variable in the .scc
> > > > > file
> > > > > that
> > > > > describes a configuration fragment file."
> > > > > diff --git a/meta/recipes-kernel/linux/linux-dtb.inc
> > > > > b/meta/recipes-
> > > > > kernel/linux/linux-dtb.inc
> > > > > index 0174c80d85..da6467bf9f 100644
> > > > > --- a/meta/recipes-kernel/linux/linux-dtb.inc
> > > > > +++ b/meta/recipes-kernel/linux/linux-dtb.inc
> > > > > @@ -4,7 +4,7 @@ FILES_kernel-devicetree =
> > > > > "/${KERNEL_IMAGEDEST}/devicetree*"
> > > > >   PACKAGE_WRITE_DEPS += "virtual/update-alternatives-native"
> > > > > 
> > > > >   python __anonymous () {
> > > > > -    d.appendVar("PACKAGES", " kernel-devicetree")
> > > > > +    d.appendVar("PACKAGES", " ${KERNEL_PACKAGE_NAME}-
> > > > > devicetree")
> > > > >   }
> > > > > 
> > > > >   normalize_dtb () {
> > > > > diff --git a/meta/recipes-kernel/linux/linux-yocto.inc
> > > > > b/meta/recipes-kernel/linux/linux-yocto.inc
> > > > > index 637506a2a8..4e0ce029da 100644
> > > > > --- a/meta/recipes-kernel/linux/linux-yocto.inc
> > > > > +++ b/meta/recipes-kernel/linux/linux-yocto.inc
> > > > > @@ -12,7 +12,7 @@ INC_PR = "r4"
> > > > >   # PREFERRED_PROVIDER for virtual/kernel. This avoids
> > > > > network
> > > > > access
> > > > > required
> > > > >   # by the use of AUTOREV SRCREVs, which are the default for
> > > > > this
> > > > > recipe.
> > > > >   python () {
> > > > > -    if d.getVar("PREFERRED_PROVIDER_virtual/kernel") !=
> > > > > d.getVar("PN"):
> > > > > +    if d.getVar("KERNEL_PACKAGE_NAME", True) == "kernel" and
> > > > > d.getVar("PREFERRED_PROVIDER_virtual/kernel", True) !=
> > > > > d.getVar("PN",
> > > > > True):
> > > > >           d.delVar("BB_DONT_CACHE")
> > > > >           raise bb.parse.SkipPackage("Set
> > > > > PREFERRED_PROVIDER_virtual/kernel to %s to enable it" %
> > > > > (d.getVar("PN")))
> > > > >   }
> > 
> > --
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core@lists.openembedded.org
> > https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.openembed
> > ded.org_mailman_listinfo_openembedded-
> > 2Dcore&d=DwICAg&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=35F
> > LeGKBmrBGMHAhCV37-B4ddgcjLZXUChuxj5DD6Sk&m=-J-
> > ERX3BXdjXgeeIE_ZNE7GozSVtUpP3Wt6FV_jtLtM&s=GFRD2nih1U_Vspzl1T_lId_e
> > dVf6o45jiD4I-J1ptR4&e= 


  reply	other threads:[~2017-08-03 16:18 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-05 17:33 [PATCH v4] kernel: Add support for multiple kernel packages Haris Okanovic
2017-07-17 20:31 ` Wold, Saul
2017-07-18 13:34   ` Haris Okanovic
2017-07-19 15:56     ` Wold, Saul
2017-07-27 18:01       ` Rees, Kevron
2017-08-03 16:18         ` Ovidiu-Adrian Vancea [this message]
2017-08-08 15:27           ` Haris Okanovic
2017-08-08 15:27         ` Haris Okanovic
2017-08-08 15:26       ` Haris Okanovic
2017-08-08 15:34       ` [PATCH v5] " Haris Okanovic
2017-08-14 21:29       ` [PATCH v6] " Haris Okanovic
2017-08-16 16:00         ` Wold, Saul
2017-08-17 21:13           ` Haris Okanovic
2017-08-17 21:14       ` [PATCH v7] " Haris Okanovic
2017-09-01 18:09         ` Otavio Salvador
2017-10-19 19:19       ` [PATCH v8] " Haris Okanovic
2017-10-23 21:38         ` Saul Wold
2017-10-25 23:47           ` Haris Okanovic
2017-10-25  8:00         ` Bruce Ashfield
2017-10-25 23:49           ` Haris Okanovic
2017-11-07 18:40       ` [PATCH v9] " Haris Okanovic
2017-11-08 22:20         ` Wold, Saul
2017-11-10 16:16           ` Bruce Ashfield
2017-11-10 21:51           ` Haris Okanovic
2017-11-10 22:00             ` Wold, Saul
2017-11-13 19:16               ` Haris Okanovic
2017-11-13 19:23                 ` Otavio Salvador
2017-12-04 16:13             ` Burton, Ross
2017-12-12 22:19               ` Haris Okanovic
2017-12-13 12:31                 ` Burton, Ross
2017-12-13 19:39                   ` Haris Okanovic

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1501777120.62231.16.camel@ni.com \
    --to=ovidiu.vancea@ni.com \
    --cc=haris.okanovic@ni.com \
    --cc=josh.hernstrom@ni.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=saul.wold@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.