kernel/rm_work: Improve interaction

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.

(From OE-Core rev: 55b4f7fd217f0c65d457c731150340c18fb3fa19)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2015-05-14 10:31:51 +01:00
parent fab7da4f80
commit f5f2467e4b
2 changed files with 6 additions and 1 deletions

View File

@ -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

View File

@ -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*)