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 <[email protected]>: > From: Ming Liu <[email protected]> > > 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 <[email protected]> > --- > 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 > >
-- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
