Patchwork kernel.bbclass: Allow INITRAMFS_TASK to trigger copy initramfs code

login
register
mail settings
Submitter Jason Wessel
Date Sept. 27, 2013, 4:23 p.m.
Message ID <1380299019-10777-1-git-send-email-jason.wessel@windriver.com>
Download mbox | patch
Permalink /patch/59085/
State New
Headers show

Comments

Jason Wessel - Sept. 27, 2013, 4:23 p.m.
Activating the INITRAMFS_TASK can cause circular dependencies, but
that is up to the end user to resolve in recipes.  The INITRAMFS_TASK
should also trigger immediate linking of the cpio task in the first
compile pass.  This was a subtle regression introduced by: 609d5a9ab
(kernel.bbclass, image.bbclass: Implement kernel INITRAMFS dependency
and bundling).

This patch restores the previous behavior and only affects the
INITRAMFS_TASK which is not set by any of the default build profiles
in oe-core.

Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
---
 meta/classes/kernel.bbclass |    6 ++++++
 1 file changed, 6 insertions(+)
Andrea Adami - Sept. 27, 2013, 9:06 p.m.
Jason,

there is one more problem here:

| DEBUG: Executing shell function do_compile
| Copying initramfs into ./usr ...
| cp: cannot create regular file
'/oe/oe-core/build/tmp-eglibc/work/poodle-oe-linux-gnueabi/linux-yocto-tiny-kexecboot/3.10.11+gitAUTOINC+dad2b7e1ce_e1aa804148-r0/linux-poodle-tiny-build/usr/.':
No such file or directory

I'm solving it this way:

copy_initramfs() {
        echo "Covpying initramfs into ./usr ..."
+        mkdir -p ${B}/usr
        # Find and use the first initramfs image archive type we find


Please take care of this.
Thanks

Andrea




On Fri, Sep 27, 2013 at 6:23 PM, Jason Wessel
<jason.wessel@windriver.com> wrote:
> Activating the INITRAMFS_TASK can cause circular dependencies, but
> that is up to the end user to resolve in recipes.  The INITRAMFS_TASK
> should also trigger immediate linking of the cpio task in the first
> compile pass.  This was a subtle regression introduced by: 609d5a9ab
> (kernel.bbclass, image.bbclass: Implement kernel INITRAMFS dependency
> and bundling).
>
> This patch restores the previous behavior and only affects the
> INITRAMFS_TASK which is not set by any of the default build profiles
> in oe-core.
>
> Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
> ---
>  meta/classes/kernel.bbclass |    6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> index 8cf66ce..73c525f 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -156,6 +156,12 @@ kernel_do_compile() {
>         # different initramfs image.  The way to do that in the kernel
>         # is to specify:
>         # make ...args... CONFIG_INITRAMFS_SOURCE=some_other_initramfs.cpio
> +       if [ "$use_alternate_initrd" = "" ] && [ "${INITRAMFS_TASK}" != "" ] ; then
> +               # The old style way of copying an prebuilt image and building it
> +               # is turned on via INTIRAMFS_TASK != ""
> +               copy_initramfs
> +               use_alternate_initrd=CONFIG_INITRAMFS_SOURCE=${B}/usr/${INITRAMFS_IMAGE}-${MACHINE}.cpio
> +       fi
>         oe_runmake ${KERNEL_IMAGETYPE_FOR_MAKE} ${KERNEL_ALT_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} $use_alternate_initrd
>         if test "${KERNEL_IMAGETYPE_FOR_MAKE}.gz" = "${KERNEL_IMAGETYPE}"; then
>                 gzip -9c < "${KERNEL_IMAGETYPE_FOR_MAKE}" > "${KERNEL_OUTPUT}"
> --
> 1.7.9.5
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Jason Wessel - Sept. 27, 2013, 9:20 p.m.
On 09/27/2013 04:06 PM, Andrea Adami wrote:
> | DEBUG: Executing shell function do_compile
> | Copying initramfs into ./usr ...
> | cp: cannot create regular file
> '/oe/oe-core/build/tmp-eglibc/work/poodle-oe-linux-gnueabi/linux-yocto-tiny-kexecboot/3.10.11+gitAUTOINC+dad2b7e1ce_e1aa804148-r0/linux-poodle-tiny-build/usr/.':


I suppose that one makes sense given that the compile directory might not exist.  My testing did not show this problem because my working env was "dirty".

Thanks for the report, your fix is perfectly fine.  I'll send a v2.

Jason.

Patch

diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 8cf66ce..73c525f 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -156,6 +156,12 @@  kernel_do_compile() {
 	# different initramfs image.  The way to do that in the kernel
 	# is to specify:
 	# make ...args... CONFIG_INITRAMFS_SOURCE=some_other_initramfs.cpio
+	if [ "$use_alternate_initrd" = "" ] && [ "${INITRAMFS_TASK}" != "" ] ; then
+		# The old style way of copying an prebuilt image and building it
+		# is turned on via INTIRAMFS_TASK != ""
+		copy_initramfs
+		use_alternate_initrd=CONFIG_INITRAMFS_SOURCE=${B}/usr/${INITRAMFS_IMAGE}-${MACHINE}.cpio
+	fi
 	oe_runmake ${KERNEL_IMAGETYPE_FOR_MAKE} ${KERNEL_ALT_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} $use_alternate_initrd
 	if test "${KERNEL_IMAGETYPE_FOR_MAKE}.gz" = "${KERNEL_IMAGETYPE}"; then
 		gzip -9c < "${KERNEL_IMAGETYPE_FOR_MAKE}" > "${KERNEL_OUTPUT}"