summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2015-05-14 10:31:51 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-05-15 12:05:52 +0100
commit55b4f7fd217f0c65d457c731150340c18fb3fa19 (patch)
tree5232238f78b81030c589d0078de214e5973960a1
parent90861b8908d254154f4d1d613471070df8013da8 (diff)
downloadopenembedded-core-55b4f7fd217f0c65d457c731150340c18fb3fa19.tar.gz
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. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/kernel.bbclass5
-rw-r--r--meta/classes/rm_work.bbclass2
2 files changed, 6 insertions, 1 deletions
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 74092e96aa..54725baaf1 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 e68d02a783..5e9efc1d06 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*)