All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Burton, Ross" <ross.burton@intel.com>
To: Haris Okanovic <haris.okanovic@ni.com>
Cc: "Ashfield, Bruce \(Wind River\)" <bruce.ashfield@windriver.com>,
	"josh.hernstrom@ni.com" <josh.hernstrom@ni.com>,
	"openembedded-core@lists.openembedded.org"
	<openembedded-core@lists.openembedded.org>,
	"Wold, Saul" <saul.wold@intel.com>
Subject: Re: [PATCH v9] kernel: Add support for multiple kernel packages
Date: Mon, 4 Dec 2017 16:13:41 +0000	[thread overview]
Message-ID: <CAJTo0LaZ7cQFyvMazuZ9PAFMdFgptBHovLBpsHsBmQbmo+19qw@mail.gmail.com> (raw)
In-Reply-To: <f65277d0-e056-5181-9cc9-1e78e4e97c6b@ni.com>

[-- Attachment #1: Type: text/plain, Size: 31332 bytes --]

I know I'm late and this has gone through so many revisions, but I'm seeing
unexplained changes in buildhistory:

$ buildhistory-diff
packages/corei7-64-intel-common-poky-linux/linux-intel/kernel-image-bzimage:
FILELIST: removed "/boot/bzImage"

Doing builds of virtual/kernel with and without this patch and comparing
pkgdata directly confirms that the /boot/bzImage symlink doesn't exist with
this patch but does without it.

Ross

On 10 November 2017 at 21:51, Haris Okanovic <haris.okanovic@ni.com> wrote:

> No problem! Thanks for all the good feedback. I think we shook out most of
> the gremlins in the last few months.
>
> Let me know if you need help with boot loader integration.
>
> -- Haris
>
>
>
> On 11/08/2017 04:20 PM, Wold, Saul wrote:
>
>>
>> Haris,
>>
>> Thanks for your patience on this process.  This version works well, now
>> I have the extra work of getting these kernel known to systemd-boot!
>>
>> Acked-by below!
>>
>> Sau!
>>
>> On Tue, 2017-11-07 at 12:40 -0600, 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. 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:
>>> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.op
>>> enembedded.org_pipermail_openembedded-2Dcore_2015-2DDecemb&
>>> d=DwIGaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=8Bz
>>> iuw3IaCGjyrSAphuGwHmVdHcVwza-srUYwL9U_Ms&m=Po_g6d_nUSqHTshb
>>> n-ZaBXenlH_4CQklz7Csmi7u70A&s=cJkppECRP9FwMwrmn-tbJfRpffqbPb
>>> eRXS1uCu5JsB0&e=
>>> er/thread.html#114122
>>> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.op
>>> enembedded.org_pipermail_openembedded-2Dcore_2017-2DJuly_t&
>>> d=DwIGaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=8Bz
>>> iuw3IaCGjyrSAphuGwHmVdHcVwza-srUYwL9U_Ms&m=Po_g6d_nUSqHTshb
>>> n-ZaBXenlH_4CQklz7Csmi7u70A&s=B73w8-RIOKqgiEjZMC2ra49Q1594cW
>>> VJp9c6Yx6u34w&e=
>>>
>>> hread.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>
>>>
>>
>> Acked-by: Saul Wold <sgw@linux.intel.com>
>>
>> Sau!
>>
>> ---
>>> [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.
>>>
>>> [PATCH v5]
>>>   - Warn when PN == KERNEL_PACKAGE_NAME (bug # 11905)
>>>   - Add KERNEL_DEPLOYSUBDIR to avoid DEPLOYDIR collisions
>>>
>>> [PATCH v6] Add KERNEL_PACKAGE_NAME to kernel-module-split.bbclass for
>>> module recipes; fixes lttng-modules build.
>>>
>>> [PATCH v7] Remove second definition of KERNEL_PACKAGE_NAME from
>>> kernel-module-split.bbclass; apply a default in two places where
>>> KERNEL_PACKAGE_NAME is referenced.
>>>
>>> [PATCH v8] Rebase onto current master and more fixups.
>>>   - kernel-devicetree.bbclass: Fixup package names
>>>   - depmodwrapper-cross: don't error when called from alt kernel
>>> recipes
>>>   - kernel.bbclass: Don't install /boot/image symlink in alt recipes
>>>
>>> [PATCH v9]
>>>   - Add feature tracking tag
>>>   - Update testing section to define vars in local.conf
>>>   - Add KERNEL_PACKAGE_NAME check to *-rt recipes
>>>
>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.
>>> com_harisokanovic_openembedded-2Dcore_tree_dev_hokanovi_&d=
>>> DwIGaQ&c=I_0YwoKy7z5LMTVdyO6YCiE2uzI1jjZZuIPelcSjixA&r=8Bziu
>>> w3IaCGjyrSAphuGwHmVdHcVwza-srUYwL9U_Ms&m=Po_g6d_nUSqHTshb
>>> n-ZaBXenlH_4CQklz7Csmi7u70A&s=g1DTbKMM_NmbTwVK6ABKrg7v5Qst-D
>>> AX8wovpBEZiQQ&e=
>>>
>>> multi-kernel-packages-v9
>>> ---
>>>   meta/classes/kernel-devicetree.bbclass             |   8 +-
>>>   meta/classes/kernel-module-split.bbclass           |   9 +-
>>>   meta/classes/kernel.bbclass                        | 114
>>> +++++++++++++--------
>>>   meta/conf/documentation.conf                       |   1 +
>>>   .../recipes-kernel/kmod/depmodwrapper-cross_1.0.bb |  14 +--
>>>   meta/recipes-kernel/linux/linux-yocto-rt_4.10.bb   |   2 +-
>>>   meta/recipes-kernel/linux/linux-yocto-rt_4.12.bb   |   2 +-
>>>   meta/recipes-kernel/linux/linux-yocto-rt_4.4.bb    |   2 +-
>>>   meta/recipes-kernel/linux/linux-yocto-rt_4.9.bb    |   2 +-
>>>   meta/recipes-kernel/linux/linux-yocto.inc          |   2 +-
>>>   10 files changed, 94 insertions(+), 62 deletions(-)
>>>
>>> diff --git a/meta/classes/kernel-devicetree.bbclass
>>> b/meta/classes/kernel-devicetree.bbclass
>>> index 6e08be4b70..4f80cc62eb 100644
>>> --- a/meta/classes/kernel-devicetree.bbclass
>>> +++ b/meta/classes/kernel-devicetree.bbclass
>>> @@ -1,10 +1,10 @@
>>>   # Support for device tree generation
>>>   PACKAGES_append = " \
>>> -    kernel-devicetree \
>>> -    ${@['kernel-image-zimage-bundle',
>>> ''][d.getVar('KERNEL_DEVICETREE_BUNDLE') != '1']} \
>>> +    ${KERNEL_PACKAGE_NAME}-devicetree \
>>> +    ${@[d.getVar('KERNEL_PACKAGE_NAME') + '-image-zimage-bundle',
>>> ''][d.getVar('KERNEL_DEVICETREE_BUNDLE') != '1']} \
>>>   "
>>> -FILES_kernel-devicetree = "/${KERNEL_IMAGEDEST}/*.dtb
>>> /${KERNEL_IMAGEDEST}/*.dtbo"
>>> -FILES_kernel-image-zimage-bundle = "/${KERNEL_IMAGEDEST}/zImage-
>>> *.dtb.bin"
>>> +FILES_${KERNEL_PACKAGE_NAME}-devicetree =
>>> "/${KERNEL_IMAGEDEST}/*.dtb /${KERNEL_IMAGEDEST}/*.dtbo"
>>> +FILES_${KERNEL_PACKAGE_NAME}-image-zimage-bundle =
>>> "/${KERNEL_IMAGEDEST}/zImage-*.dtb.bin"
>>>     # Generate kernel+devicetree bundle
>>>   KERNEL_DEVICETREE_BUNDLE ?= "0"
>>> diff --git a/meta/classes/kernel-module-split.bbclass
>>> b/meta/classes/kernel-module-split.bbclass
>>> index 1035525dac..73c7f18c78 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 ?= "${@ d.getVar("KERNEL_PACKAGE_NAME",
>>> True) or "kernel" }-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) or
>>> "kernel"
>>> +    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 756707a3c2..48b718d777 100644
>>> --- a/meta/classes/kernel.bbclass
>>> +++ b/meta/classes/kernel.bbclass
>>> @@ -1,6 +1,9 @@
>>>   inherit linux-kernel-base kernel-module-split
>>>   -PROVIDES += "virtual/kernel"
>>> +KERNEL_PACKAGE_NAME ??= "kernel"
>>> +KERNEL_DEPLOYSUBDIR ??= "${@ "" if (d.getVar("KERNEL_PACKAGE_NAME",
>>> True) == "kernel") else d.getVar("KERNEL_PACKAGE_NAME", True) }"
>>> +
>>> +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"
>>>   @@ -34,11 +37,32 @@ KERNEL_VERSION_PKG_NAME = "${@legitimize_package_
>>> name(d.getVar('KERNEL_VERSION')
>>>   KERNEL_VERSION_PKG_NAME[vardepvalue] = "${LINUX_VERSION}"
>>>     python __anonymous () {
>>> +    pn = d.getVar("PN", True)
>>> +    kpn = d.getVar("KERNEL_PACKAGE_NAME", True)
>>> +
>>> +    # XXX Remove this after bug 11905 is resolved
>>> +    #  FILES_${KERNEL_PACKAGE_NAME}-dev doesn't expand correctly
>>> +    if kpn == pn:
>>> +        bb.warn("Some packages (E.g. *-dev) might be missing due to
>>> "
>>> +                "bug 11905 (variable KERNEL_PACKAGE_NAME == PN)")
>>> +
>>> +    # 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 kpn != "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():
>>> @@ -55,15 +79,15 @@ 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}' + ' /' + imagedest + '/' +
>>> type)
>>> +        d.setVar('FILES_' + kname + '-image-' + typelower, '/' +
>>> imagedest + '/' + type + '-${KERNEL_VERSION_NAME}' + ' /' + imagedest
>>> + '/' + type)
>>>   -        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')
>>>         image = d.getVar('INITRAMFS_IMAGE')
>>>       if image:
>>> @@ -121,9 +145,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}"
>>> @@ -339,7 +363,9 @@ kernel_do_install() {
>>>         install -d ${D}/boot
>>>         for type in ${KERNEL_IMAGETYPES} ; do
>>>                 install -m 0644 ${KERNEL_OUTPUT_DIR}/${type}
>>> ${D}/${KERNEL_IMAGEDEST}/${type}-${KERNEL_VERSION}
>>> -               ln -sf ${type}-${KERNEL_VERSION}
>>> ${D}/${KERNEL_IMAGEDEST}/${type}
>>> +               if [ "${KERNEL_PACKAGE_NAME}" == "kernel" ]; then
>>> +                       ln -sf ${type}-${KERNEL_VERSION}
>>> ${D}/${KERNEL_IMAGEDEST}/${type}
>>> +               fi
>>>         done
>>>         install -m 0644 System.map ${D}/boot/System.map-
>>> ${KERNEL_VERSION}
>>>         install -m 0644 .config ${D}/boot/config-${KERNEL_VERSION}
>>> @@ -393,9 +419,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"
>>> @@ -410,7 +436,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}
>>> @@ -508,28 +534,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.order
>>> ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.builtin"
>>> -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.order
>>> ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/modules.builtin"
>>> +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('${KERNE
>>> L_VERSION}')}"
>>> -RDEPENDS_kernel-image += "${@base_conditional('KERNEL_IMAGETYPE',
>>> 'vmlinux', 'kernel-vmlinux', '', d)}"
>>> -PKG_kernel-base = "kernel-${@legitimize_package_name('${KERNEL_VERSI
>>> 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_conditional('KERNE
>>> L_IMAGETYPE', 'vmlinux', '${KERNEL_PACKAGE_NAME}-vmlinux', '', d)}"
>>> +PKG_${KERNEL_PACKAGE_NAME}-base = "${KERNEL_PACKAGE_NAME}-${@legitim
>>> 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
>>> @@ -543,7 +569,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
>>> @@ -626,21 +652,27 @@ MODULE_TARBALL_SYMLINK_NAME ?= "modules-
>>> ${MACHINE}.tgz"
>>>   MODULE_TARBALL_DEPLOY ?= "1"
>>>     kernel_do_deploy() {
>>> +       deployDir="${DEPLOYDIR}"
>>> +       if [ -n "${KERNEL_DEPLOYSUBDIR}" ]; then
>>> +               deployDir="${DEPLOYDIR}/${KERNEL_DEPLOYSUBDIR}"
>>> +               mkdir "$deployDir"
>>> +       fi
>>> +
>>>         for type in ${KERNEL_IMAGETYPES} ; do
>>>                 base_name=${type}-${KERNEL_IMAGE_BASE_NAME}
>>> -               install -m 0644 ${KERNEL_OUTPUT_DIR}/${type}
>>> ${DEPLOYDIR}/${base_name}.bin
>>> +               install -m 0644 ${KERNEL_OUTPUT_DIR}/${type}
>>> $deployDir/${base_name}.bin
>>>         done
>>>         if [ ${MODULE_TARBALL_DEPLOY} = "1" ] && (grep -q -i -e
>>> '^CONFIG_MODULES=y$' .config); then
>>>                 mkdir -p ${D}/lib
>>> -               tar -cvzf ${DEPLOYDIR}/${MODULE_TARBALL_BASE_NAME}
>>> -C ${D} lib
>>> -               ln -sf ${MODULE_TARBALL_BASE_NAME}
>>> ${DEPLOYDIR}/${MODULE_TARBALL_SYMLINK_NAME}
>>> +               tar -cvzf $deployDir/${MODULE_TARBALL_BASE_NAME} -C
>>> ${D} lib
>>> +               ln -sf ${MODULE_TARBALL_BASE_NAME}
>>> $deployDir/${MODULE_TARBALL_SYMLINK_NAME}
>>>         fi
>>>         for type in ${KERNEL_IMAGETYPES} ; do
>>>                 base_name=${type}-${KERNEL_IMAGE_BASE_NAME}
>>>                 symlink_name=${type}-${KERNEL_IMAGE_SYMLINK_NAME}
>>> -               ln -sf ${base_name}.bin
>>> ${DEPLOYDIR}/${symlink_name}.bin
>>> -               ln -sf ${base_name}.bin ${DEPLOYDIR}/${type}
>>> +               ln -sf ${base_name}.bin
>>> $deployDir/${symlink_name}.bin
>>> +               ln -sf ${base_name}.bin $deployDir/${type}
>>>         done
>>>         cd ${B}
>>> @@ -650,8 +682,8 @@ kernel_do_deploy() {
>>>                         echo "Copying deploy ${type} kernel-
>>> initramfs image and setting up links..."
>>>                         initramfs_base_name=${type}-
>>> ${INITRAMFS_BASE_NAME}
>>>                         initramfs_symlink_name=${type}-initramfs-
>>> ${MACHINE}
>>> -                       install -m 0644
>>> ${KERNEL_OUTPUT_DIR}/${type}.initramfs
>>> ${DEPLOYDIR}/${initramfs_base_name}.bin
>>> -                       ln -sf ${initramfs_base_name}.bin
>>> ${DEPLOYDIR}/${initramfs_symlink_name}.bin
>>> +                       install -m 0644
>>> ${KERNEL_OUTPUT_DIR}/${type}.initramfs
>>> $deployDir/${initramfs_base_name}.bin
>>> +                       ln -sf ${initramfs_base_name}.bin
>>> $deployDir/${initramfs_symlink_name}.bin
>>>                 fi
>>>         done
>>>   }
>>> diff --git a/meta/conf/documentation.conf
>>> b/meta/conf/documentation.conf
>>> index a55e2836b5..2c88504fb9 100644
>>> --- a/meta/conf/documentation.conf
>>> +++ b/meta/conf/documentation.conf
>>> @@ -247,6 +247,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/kmod/depmodwrapper-cross_1.0.bb
>>> b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
>>> index 44d013f29d..2eec921728 100644
>>> --- a/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
>>> +++ b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
>>> @@ -23,17 +23,13 @@ if [ "\$1" != "-a" -o "\$2" != "-b" ]; then
>>>       echo "Usage: depmodwrapper -a -b rootfs KERNEL_VERSION" >&2
>>>       exit 1
>>>   fi
>>> -if [ ! -r ${PKGDATA_DIR}/kernel-depmod/kernel-abiversion ]; then
>>> -    echo "Unable to read: ${PKGDATA_DIR}/kernel-depmod/kernel-
>>> abiversion" >&2
>>> -else
>>> -    kernelabi=\$(cat ${PKGDATA_DIR}/kernel-depmod/kernel-abiversion)
>>> -    if [ "\$kernelabi" != "\$4" ]; then
>>> -        echo "Error: Kernel version \$4 does not match kernel-
>>> abiversion (\$kernelabi)" >&2
>>> -        exit 1
>>> -    fi
>>> +
>>> +kernelabi=""
>>> +if [ -r "${PKGDATA_DIR}/kernel-depmod/kernel-abiversion" ]; then
>>> +    kernelabi=\$(cat "${PKGDATA_DIR}/kernel-depmod/kernel-
>>> abiversion")
>>>   fi
>>>   -if [ ! -r ${PKGDATA_DIR}/kernel-depmod/System.map-\$4 ]; then
>>> +if [ ! -r ${PKGDATA_DIR}/kernel-depmod/System.map-\$4 ] || [
>>> "\$kernelabi" != "\$4" ]; then
>>>       echo "Unable to read: ${PKGDATA_DIR}/kernel-depmod/System.map-
>>> \$4" >&2
>>>       exec env depmod "\$1" "\$2" "\$3" "\$4"
>>>   else
>>> diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_4.10.bb
>>> b/meta/recipes-kernel/linux/linux-yocto-rt_4.10.bb
>>> index f93d9530eb..894e2ffbf6 100644
>>> --- a/meta/recipes-kernel/linux/linux-yocto-rt_4.10.bb
>>> +++ b/meta/recipes-kernel/linux/linux-yocto-rt_4.10.bb
>>> @@ -7,7 +7,7 @@ require recipes-kernel/linux/linux-yocto.inc
>>>   # to build multiple virtual/kernel providers, e.g. as dependency of
>>>   # core-image-rt-sdk, core-image-rt.
>>>   python () {
>>> -    if d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-
>>> yocto-rt":
>>> +    if d.getVar("KERNEL_PACKAGE_NAME", True) == "kernel" and
>>> d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-yocto-rt":
>>>           raise bb.parse.SkipPackage("Set
>>> PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
>>>   }
>>>   diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_4.12.bb
>>> b/meta/recipes-kernel/linux/linux-yocto-rt_4.12.bb
>>> index c49a9340f8..be4d163ff1 100644
>>> --- a/meta/recipes-kernel/linux/linux-yocto-rt_4.12.bb
>>> +++ b/meta/recipes-kernel/linux/linux-yocto-rt_4.12.bb
>>> @@ -7,7 +7,7 @@ require recipes-kernel/linux/linux-yocto.inc
>>>   # to build multiple virtual/kernel providers, e.g. as dependency of
>>>   # core-image-rt-sdk, core-image-rt.
>>>   python () {
>>> -    if d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-
>>> yocto-rt":
>>> +    if d.getVar("KERNEL_PACKAGE_NAME", True) == "kernel" and
>>> d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-yocto-rt":
>>>           raise bb.parse.SkipPackage("Set
>>> PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
>>>   }
>>>   diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_4.4.bb
>>> b/meta/recipes-kernel/linux/linux-yocto-rt_4.4.bb
>>> index 25d88833a9..e489bbb9f2 100644
>>> --- a/meta/recipes-kernel/linux/linux-yocto-rt_4.4.bb
>>> +++ b/meta/recipes-kernel/linux/linux-yocto-rt_4.4.bb
>>> @@ -7,7 +7,7 @@ require recipes-kernel/linux/linux-yocto.inc
>>>   # to build multiple virtual/kernel providers, e.g. as dependency of
>>>   # core-image-rt-sdk, core-image-rt.
>>>   python () {
>>> -    if d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-
>>> yocto-rt":
>>> +    if d.getVar("KERNEL_PACKAGE_NAME", True) == "kernel" and
>>> d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-yocto-rt":
>>>           raise bb.parse.SkipPackage("Set
>>> PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
>>>   }
>>>   diff --git a/meta/recipes-kernel/linux/linux-yocto-rt_4.9.bb
>>> b/meta/recipes-kernel/linux/linux-yocto-rt_4.9.bb
>>> index 6734dc0d05..8212b1445c 100644
>>> --- a/meta/recipes-kernel/linux/linux-yocto-rt_4.9.bb
>>> +++ b/meta/recipes-kernel/linux/linux-yocto-rt_4.9.bb
>>> @@ -7,7 +7,7 @@ require recipes-kernel/linux/linux-yocto.inc
>>>   # to build multiple virtual/kernel providers, e.g. as dependency of
>>>   # core-image-rt-sdk, core-image-rt.
>>>   python () {
>>> -    if d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-
>>> yocto-rt":
>>> +    if d.getVar("KERNEL_PACKAGE_NAME", True) == "kernel" and
>>> d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-yocto-rt":
>>>           raise bb.parse.SkipPackage("Set
>>> PREFERRED_PROVIDER_virtual/kernel to linux-yocto-rt to enable it")
>>>   }
>>>   diff --git a/meta/recipes-kernel/linux/linux-yocto.inc
>>> b/meta/recipes-kernel/linux/linux-yocto.inc
>>> index 9c1f61be75..8a70eb5018 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")))
>>>   }
>>> --
>>> 2.14.2
>>>
>> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>

[-- Attachment #2: Type: text/html, Size: 40790 bytes --]

  parent reply	other threads:[~2017-12-04 16:14 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
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 [this message]
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=CAJTo0LaZ7cQFyvMazuZ9PAFMdFgptBHovLBpsHsBmQbmo+19qw@mail.gmail.com \
    --to=ross.burton@intel.com \
    --cc=bruce.ashfield@windriver.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.