[OE-core] [PATCH] kernel/rm_work: Improve interaction
ChenQi
Qi.Chen at windriver.com
Wed May 20 06:01:10 UTC 2015
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 at 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*)
>
>
More information about the Openembedded-core
mailing list