Hi, I need do more work on this patch, and will send the V1 soon, please ignore this for now.
//Ming Liu 2015-12-30 0:05 GMT+01:00 Ming Liu <liu.min...@gmail.com>: > From: Ming Liu <peter.x....@external.atlascopco.com> > > So far, there is not a workable way to package the initramfs bundled kernel > image, the only place is tmp/deploy from where we could get it, but if a > user want to add it into a certain image, there is no guarantee that he > will achieve it because a explicit dependency is missing between package > and bundle_initramfs, and this was designed to avoid introducing circular > dependencies when using kernel modules in the initramfs image.bb that is > caused by kernel.bbclass trying to build the initramfs before the kernel > packaging. > > To fix this problem, the idea is to split the initramfs bundled kernel > packaging to a new recipe, make the do_install depend on kernel's deploy > task, then with the following config: > > IMAGE_INSTALL_append = "kernel-initramfs" > > The initramfs bundled kernel could be added to the image without > introducing any circular dependencies. > > Signed-off-by: Ming Liu <peter.x....@external.atlascopco.com> > --- > meta/recipes-kernel/linux/kernel-initramfs.bb | 50 > +++++++++++++++++++++++++++ > 1 file changed, 50 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..481b142 > --- /dev/null > +++ b/meta/recipes-kernel/linux/kernel-initramfs.bb > @@ -0,0 +1,50 @@ > +SUMMARY = "Initramfs bundled kernel image" > +DESCRIPTION = "When built, it packages a initramfs bundled kernel image > of the \ > +preferred virtual/kernel provider." > + > +SECTION = "kernel" > + > +LICENSE = "GPLv2" > +LIC_FILES_CHKSUM = > "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" > + > +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" > + > +KERNEL_VERSION = "${@get_kernelversion_headers('${S}')}" > + > +PACKAGES = "kernel-initramfs" > +FILES_${PN} = "/boot/${KERNEL_IMAGETYPE}*" > + > +PACKAGE_ARCH = "${MACHINE_ARCH}" > + > +# Skip processing of this recipe if INITRAMFS_IMAGE or > INITRAMFS_IMAGE_BUNDLE > +# is not set correctly, to avoid generate a single empty package which > makes > +# no sense. > +python __anonymous () { > + if not d.getVar('INITRAMFS_IMAGE', True) or > d.getVar('INITRAMFS_IMAGE_BUNDLE', True) != '1': > + raise bb.parse.SkipPackage("Set INITRAMFS_IMAGE and > INITRAMFS_IMAGE_BUNDLE to enable it") > +} > + > +# 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 image from > ${DEPLOY_DIR_IMAGE}..." > + install -d ${D}/boot > + install -m 0644 > ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin ${D}/boot > + fi > +} > -- > 1.9.1 > >
-- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core