Patchwork kernel.bbclass: Delay rm_work to run after do_bundle_initramfs

login
register
mail settings
Submitter Xufeng Zhang
Date Oct. 31, 2013, 1:24 a.m.
Message ID <1383182680-20871-1-git-send-email-xufeng.zhang@windriver.com>
Download mbox | patch
Permalink /patch/60845/
State New
Headers show

Comments

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(+)
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

Patch

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