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*)
>
>
next prev parent 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.