[OE-core] [PATCH 4/4] kernel-initramfs: add recipe

Ming Liu liu.ming50 at gmail.com
Wed Mar 22 04:50:10 UTC 2017


This patch needs to be adjusted, please ignore this patch set 3, will send
a V4 soon.

//Ming Liu

2017-03-21 15:34 GMT+01:00 <liu.ming50 at gmail.com>:

> From: Ming Liu <peter.x.liu at external.atlascopco.com>
>
> To implement initramfs bundled kernel packaging.
>
> The kernel images are copied from DEPLOY_DIR_IMAGE, and a list of
> packages will be generated according to KERNEL_IMAGETYPES setting.
>
> For instance:
> For KERNEL_IMAGETYPES = "bzImage vmlinux"
>
> the generated packages would be:
> - kernel-initramfs (Base package, RDEPENDS on kernel-initramfs-image)
> - kernel-initramfs-image (Image package, RDEPENDS on all sub images)
> - kernel-initramfs-image-bzimage (Contains bzImage image)
> - kernel-initramfs-vmlinux (Contains vmlinux image)
>
> This recipe would be skipped if INITRAMFS_IMAGE_BUNDLE or
> INITRAMFS_IMAGE is not being set correctly.
>
> Signed-off-by: Ming Liu <peter.x.liu at external.atlascopco.com>
> ---
>  meta/recipes-kernel/linux/kernel-initramfs.bb | 100
> ++++++++++++++++++++++++++
>  1 file changed, 100 insertions(+)
>  create mode 100644 meta/recipes-kernel/linux/kernel-initramfs.bb
>
> diff --git a/meta/recipes-kernel/linux/kernel-initramfs.bb
> b/meta/recipes-kernel/linux/kernel-initramfs.bb
> new file mode 100644
> index 0000000..91ea55e
> --- /dev/null
> +++ b/meta/recipes-kernel/linux/kernel-initramfs.bb
> @@ -0,0 +1,100 @@
> +SUMMARY = "Initramfs bundled kernel images"
> +DESCRIPTION = "When built, it packages initramfs bundled kernel images of
> the \
> +preferred virtual/kernel provider."
> +SECTION = "kernel"
> +LICENSE = "GPLv2"
> +
> +inherit linux-kernel-base
> +
> +# Whilst not a module, this ensures we don't get multilib extended.
> (which would make no sense)
> +inherit module-base
> +
> +S = "${STAGING_KERNEL_DIR}"
> +B = "${WORKDIR}/build"
> +
> +# we dont need the default dependencies.
> +INHIBIT_DEFAULT_DEPS = "1"
> +
> +KERNEL_ALT_IMAGETYPE ??= ""
> +KERNEL_IMAGETYPES_append = " vmlinux"
> +KERNEL_IMAGETYPE ?= "zImage"
> +KERNEL_IMAGEDEST ?= "boot"
> +KERNEL_VERSION = "${@['1.0.0', get_kernelversion_file('${
> STAGING_KERNEL_BUILDDIR}')][get_kernelversion_file('${STAGING_KERNEL_BUILDDIR}')
> != None]}"
> +KERNEL_PKG_NAME = "${@legitimize_package_name(d.
> getVar('KERNEL_VERSION'))}"
> +KERNEL_PRIORITY ?= "${@int(d.getVar('KERNEL_
> VERSION').split('-')[0].split('+')[0].split('.')[0]) * 10000 + \
> +                       int(d.getVar('KERNEL_VERSION')
> .split('-')[0].split('+')[0].split('.')[1]) * 100 + \
> +                       int(d.getVar('KERNEL_VERSION')
> .split('-')[0].split('+')[0].split('.')[-1])}"
> +
> +PACKAGES = "${PN} ${PN}-image"
> +
> +FILES_${PN} = ""
> +FILES_${PN}-image = ""
> +RDEPENDS_${PN} = "${PN}-image"
> +PKG_${PN} = "${PN}-${KERNEL_PKG_NAME}"
> +PKG_${PN}-image = "${PN}-image-${KERNEL_PKG_NAME}"
> +RPROVIDES_${PN} += "${PN}-${KERNEL_VERSION}"
> +ALLOW_EMPTY_${PN} = "1"
> +ALLOW_EMPTY_${PN}-image = "1"
> +
> +PACKAGE_ARCH = "${MACHINE_ARCH}"
> +
> +PACKAGES_DYNAMIC = "^kernel-initramfs-image-.*"
> +
> +python __anonymous () {
> +    # Skip processing of this recipe if INITRAMFS_IMAGE or
> INITRAMFS_IMAGE_BUNDLE
> +    # is not set correctly, to avoid generating only empty packages which
> makes
> +    # no sense.
> +    if not d.getVar('INITRAMFS_IMAGE') or d.getVar('INITRAMFS_IMAGE_BUNDLE')
> != '1':
> +        raise bb.parse.SkipPackage("Set INITRAMFS_IMAGE and
> INITRAMFS_IMAGE_BUNDLE to enable it")
> +
> +    # Merge KERNEL_IMAGETYPE and KERNEL_ALT_IMAGETYPE into
> KERNEL_IMAGETYPES
> +    types = set((d.getVar('KERNEL_IMAGETYPES') or "").split())
> +    types.add(d.getVar('KERNEL_IMAGETYPE') or "")
> +    types.add(d.getVar('KERNEL_ALT_IMAGETYPE') or "")
> +    types = ' '.join(sorted(types)).strip()
> +    d.setVar('KERNEL_IMAGETYPES', types)
> +
> +    for type in types.split():
> +        pn = d.getVar('PN')
> +        imagedest = d.getVar('KERNEL_IMAGEDEST')
> +        if type == "vmlinux":
> +            typelower = type.lower()
> +        else:
> +            typelower = "image-%s" % type.lower()
> +
> +        d.appendVar('PACKAGES', ' %s-%s' % (pn, typelower))
> +        if type != 'vmlinux' or 'vmlinux' in
> (d.getVar('KERNEL_IMAGETYPE') or ""):
> +            d.appendVar('RDEPENDS_%s-image' % pn, ' %s-%s' % (pn,
> typelower))
> +
> +        d.setVar('FILES_%s-%s' % (pn, typelower),
> '/%s/%s-initramfs-${KERNEL_VERSION}' % (imagedest, type))
> +        d.setVar('PKG_%s-%s' % ( pn, typelower),
> '%s-%s-${KERNEL_PKG_NAME}' % (pn, typelower))
> +
> +        priority = d.getVar('KERNEL_PRIORITY')
> +        postinst = '#!/bin/sh\nupdate-alternatives --install
> /%s/%s-initramfs %s-initramfs %s-initramfs-${KERNEL_VERSION} %s || true\n'
> % (imagedest, type, type, type, priority)
> +        d.setVar('pkg_postinst_%s-%s' % (pn, typelower), postinst)
> +
> +        postrm = '#!/bin/sh\nupdate-alternatives --remove %s-initramfs
> %s-initramfs-${KERNEL_VERSION} || true\n' % (type, type)
> +        d.setVar('pkg_postrm_%s-%s' % (pn, typelower), postrm)
> +}
> +
> +# Need the output of deploy.
> +do_install[depends] += "virtual/kernel:do_deploy"
> +
> +# We only need the packaging tasks - disable the rest
> +do_fetch[noexec] = "1"
> +do_unpack[noexec] = "1"
> +do_patch[noexec] = "1"
> +do_configure[noexec] = "1"
> +do_compile[noexec] = "1"
> +do_populate_sysroot[noexec] = "1"
> +
> +do_install() {
> +       if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" =
> x1 ]; then
> +               echo "Copying initramfs bundled kernel images from
> ${DEPLOY_DIR_IMAGE}..."
> +               install -d ${D}/${KERNEL_IMAGEDEST}
> +               for type in ${KERNEL_IMAGETYPES}; do
> +                       echo "Copying initramfs bundled kernel image:
> $type-initramfs-${MACHINE}.bin"
> +                       install -m 0644 ${DEPLOY_DIR_IMAGE}/$type-initramfs-${MACHINE}.bin
> ${D}/${KERNEL_IMAGEDEST}/$type-initramfs-${KERNEL_VERSION}
> +               done
> +       fi
> +}
> --
> 2.7.4
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20170322/c4457f68/attachment-0002.html>


More information about the Openembedded-core mailing list