kernel.bbclass: Delay rm_work to run after do_bundle_initramfs

Submitted by Xufeng Zhang on Oct. 31, 2013, 1:24 a.m.

Details

Message ID 1383182680-20871-1-git-send-email-xufeng.zhang@windriver.com
State New
Headers show

Commit Message

Xufeng Zhang Oct. 31, 2013, 1:24 a.m.
From: "Signed-off-by: Xufeng Zhang" <xufeng.zhang@windriver.com>

Since kernel will build twice when we are trying to bundle kernel
and initramfs together after commit 609d5a9ab("kernel.bbclass,
image.bbclass: Implement kernel INITRAMFS dependency and bundling"),
thus, the second building for kernel would fail if rm_work is done
previously.

To fix this problem, we need to delay the rm_work task for kernel
to run after do_bundle_initramfs task.

[YOCTO #5416]

Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com>
---
 meta/classes/kernel.bbclass | 3 +++
 1 file changed, 3 insertions(+)

Patch hide | download patch | download mbox

diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index dedfab7..6154df0 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -29,6 +29,9 @@  python __anonymous () {
     image_task = d.getVar('INITRAMFS_TASK', True)
     if image_task:
         d.appendVarFlag('do_configure', 'depends', ' ${INITRAMFS_TASK}')
+
+    if image or image_task:
+        d.appendVarFlag('do_rm_work', 'depends', " %s:do_bundle_initramfs" % d.getVar('PN', True))
 }
 
 inherit kernel-arch deploy

Comments

Martin Jansa Oct. 31, 2013, 8:26 a.m.
On Thu, Oct 31, 2013 at 09:24:40AM +0800, Xufeng Zhang wrote:
> From: "Signed-off-by: Xufeng Zhang" <xufeng.zhang@windriver.com>
> 
> Since kernel will build twice when we are trying to bundle kernel
> and initramfs together after commit 609d5a9ab("kernel.bbclass,
> image.bbclass: Implement kernel INITRAMFS dependency and bundling"),
> thus, the second building for kernel would fail if rm_work is done
> previously.
> 
> To fix this problem, we need to delay the rm_work task for kernel
> to run after do_bundle_initramfs task.
> 
> [YOCTO #5416]
> 
> Signed-off-by: Xufeng Zhang <xufeng.zhang@windriver.com>
> ---
>  meta/classes/kernel.bbclass | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> index dedfab7..6154df0 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -29,6 +29,9 @@ python __anonymous () {
>      image_task = d.getVar('INITRAMFS_TASK', True)
>      if image_task:
>          d.appendVarFlag('do_configure', 'depends', ' ${INITRAMFS_TASK}')
> +
> +    if image or image_task:
> +        d.appendVarFlag('do_rm_work', 'depends', " %s:do_bundle_initramfs" % d.getVar('PN', True))
>  }

Why not add "before" param to addtask?

addtask bundle_initramfs after do_compile before do_build

could do the trick

>  inherit kernel-arch deploy
> -- 
> 1.8.3.3
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
Xufeng Zhang Nov. 1, 2013, 1:10 a.m.
On 10/31/2013 04:26 PM, Martin Jansa wrote:
> On Thu, Oct 31, 2013 at 09:24:40AM +0800, Xufeng Zhang wrote:
>    
>> From: "Signed-off-by: Xufeng Zhang"<xufeng.zhang@windriver.com>
>>
>> Since kernel will build twice when we are trying to bundle kernel
>> and initramfs together after commit 609d5a9ab("kernel.bbclass,
>> image.bbclass: Implement kernel INITRAMFS dependency and bundling"),
>> thus, the second building for kernel would fail if rm_work is done
>> previously.
>>
>> To fix this problem, we need to delay the rm_work task for kernel
>> to run after do_bundle_initramfs task.
>>
>> [YOCTO #5416]
>>
>> Signed-off-by: Xufeng Zhang<xufeng.zhang@windriver.com>
>> ---
>>   meta/classes/kernel.bbclass | 3 +++
>>   1 file changed, 3 insertions(+)
>>
>> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
>> index dedfab7..6154df0 100644
>> --- a/meta/classes/kernel.bbclass
>> +++ b/meta/classes/kernel.bbclass
>> @@ -29,6 +29,9 @@ python __anonymous () {
>>       image_task = d.getVar('INITRAMFS_TASK', True)
>>       if image_task:
>>           d.appendVarFlag('do_configure', 'depends', ' ${INITRAMFS_TASK}')
>> +
>> +    if image or image_task:
>> +        d.appendVarFlag('do_rm_work', 'depends', " %s:do_bundle_initramfs" % d.getVar('PN', True))
>>   }
>>      
> Why not add "before" param to addtask?
>
> addtask bundle_initramfs after do_compile before do_build
>
> could do the trick
>    

Yes, this works better than my fix, thanks a lot!
I'll send a V2 patch.


Thanks,
Xufeng

>    
>>   inherit kernel-arch deploy
>> -- 
>> 1.8.3.3
>>
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core@lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>>      
>
Enrico Scholz Nov. 7, 2013, 3:08 p.m.
Martin Jansa <martin.jansa-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
writes:

> Why not add "before" param to addtask?
>
> addtask bundle_initramfs after do_compile before do_build
>
> could do the trick

no; due to

  do_bundle_initramfs[nostamp] = "1"

a (non-initramfs) kernel will be rebuilt everytime although nothing has
been changed.  The initramfs related tasks should be executed only when
an initramfs is really used.


Enrico
Richard Purdie Nov. 7, 2013, 10:26 p.m.
On Thu, 2013-11-07 at 16:08 +0100, Enrico Scholz wrote:
> Martin Jansa <martin.jansa-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> writes:
> 
> > Why not add "before" param to addtask?
> >
> > addtask bundle_initramfs after do_compile before do_build
> >
> > could do the trick
> 
> no; due to
> 
>   do_bundle_initramfs[nostamp] = "1"
> 
> a (non-initramfs) kernel will be rebuilt everytime although nothing has
> been changed.  The initramfs related tasks should be executed only when
> an initramfs is really used.

There is no good reason to have this as a nostamp task any more. With
the checksums on the stamp files, we have reliable image generation now.

Cheers,

Richard