Openembedded Core Discussions
 help / color / mirror / Atom feed
From: ChenQi <Qi.Chen@windriver.com>
To: Richard Purdie <richard.purdie@linuxfoundation.org>,
	openembedded-core <openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH] kernel/rm_work: Improve interaction
Date: Wed, 20 May 2015 14:01:10 +0800	[thread overview]
Message-ID: <555C2326.90207@windriver.com> (raw)
In-Reply-To: <1431595911.30971.189.camel@linuxfoundation.org>

Hi Richard,

I've observed a side effect of this patch.
The problem is sstate reuse.

Steps to reproduce:
1) bitbake core-image-minimal
2) Change TMPDIR in local.conf
      TMPDIR = "${TOPDIR}/tmp-test"
3) bitbake core-image-minimal

In theory, sstate objects are all reused in step 3. But currently the 
do_populate_sysroot sstate object of the kernel is not reused. In 
addition, other kernel tasks like do_fetch, do_patch, do_compile, etc, 
are rerun.

Best Regards,
Chen Qi

On 05/14/2015 05:31 PM, Richard Purdie wrote:
> The do_shared_workdir task does leave behind the necessary information in
> shared-work after it completes. We don't make this a "full" sstate task
> however since that means tarring up and copying what is usually a large
> amount of data which would be better extracted straight from the original
> SCM.
>
> The issue with rm_work occurs since it removes the do_shared_workdir stamp
> meaning subsequent builds will add it back if they need to touch any kernel
> modules for example. This ends up triggering a near enough complete kernerl
> rebuild since if configure reruns, populate_sysroot has to rerun.
>
> This change promotes the task to have a "setscene" variant but it doesn't use
> any of the sstate class lifting to generate the sstate file. The sstate function
> will therefore never get called since the sstate object will never exist.
>
> We can add the task to the list of tasks rm_work promotes to a setscene variant
> and unwanted rebuilds of the kernel should be avoided.
>
> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
>
> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> index 74092e9..54725ba 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -235,6 +235,11 @@ kernel_do_install() {
>   do_install[prefuncs] += "package_get_auto_pr"
>   
>   addtask shared_workdir after do_compile before do_compile_kernelmodules
> +addtask shared_workdir_setscene
> +
> +do_shared_workdir_setscene () {
> +	exit 1
> +}
>   
>   emit_depmod_pkgdata() {
>   	# Stash data for depmod
> diff --git a/meta/classes/rm_work.bbclass b/meta/classes/rm_work.bbclass
> index e68d02a..5e9efc1 100644
> --- a/meta/classes/rm_work.bbclass
> +++ b/meta/classes/rm_work.bbclass
> @@ -49,7 +49,7 @@ do_rm_work () {
>       cd `dirname ${STAMP}`
>       for i in `basename ${STAMP}`*
>       do
> -        for j in ${SSTATETASKS}
> +        for j in ${SSTATETASKS} do_shared_workdir
>           do
>               case $i in
>               *do_setscene*)
>
>



  reply	other threads:[~2015-05-20  6:01 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-14  9:31 [PATCH] kernel/rm_work: Improve interaction Richard Purdie
2015-05-20  6:01 ` ChenQi [this message]
2015-05-20 12:05   ` Richard Purdie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=555C2326.90207@windriver.com \
    --to=qi.chen@windriver.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=richard.purdie@linuxfoundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox