diff options
authorPatrick Ohly <>2017-05-05 12:25:25 +0200
committerRichard Purdie <>2017-05-18 14:01:37 +0100
commitfed0ed82928e6a7846fbad233ac657bd17bcefc7 (patch)
parent18aac553ca35049c80b6cc82ff0e69ce8a7a03a9 (diff)
archiver.bbclass: do not cause kernel rebuilds
Adding or removing archiver.bbclass from a build configuration causes rebuilds of linux-yocto-based kernels because of the do_kernel_configme->do_unpack_and_patch task dependency. This particular dependency can be ignored for the do_kernel_configme sstate signature calculcation. Idea for the fix from Richard Purdie. Note that building the kernel and adding archiver.bbclass later to archive sources leads to do_unpack_and_patch running after do_kernel_configme (because that already ran in the first build), which might be problematic. This is independent of the change here. The use case in YOCTO #11441 is to removed archiver.bbclass between a production build with archiving enabled and builds via oe-selftests without archiving. That direction is fine. Fixes: YOCTO #11441 Signed-off-by: Patrick Ohly <> Signed-off-by: Ross Burton <>
2 files changed, 9 insertions, 2 deletions
diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
index ea00ab33da..647d2cf2d7 100644
--- a/meta/classes/archiver.bbclass
+++ b/meta/classes/archiver.bbclass
@@ -442,7 +442,10 @@ do_deploy_all_archives() {
python () {
- # Add tasks in the correct order, specifically for linux-yocto to avoid race condition
+ # Add tasks in the correct order, specifically for linux-yocto to avoid race condition.
+ # has special support that excludes this dependency
+ # so that do_kernel_configme does not need to run again when do_unpack_and_patch
+ # gets added or removed (by adding or removing archiver.bbclass).
if'kernel-yocto', d):'do_kernel_configme', 'do_configure', 'do_unpack_and_patch', d)
diff --git a/meta/lib/oe/ b/meta/lib/oe/
index f087a019e1..b8dd4c869e 100644
--- a/meta/lib/oe/
+++ b/meta/lib/oe/
@@ -20,8 +20,12 @@ def sstate_rundepfilter(siggen, fn, recipename, task, dep, depname, dataCache):
def isImage(fn):
return "/image.bbclass" in " ".join(dataCache.inherits[fn])
- # Always include our own inter-task dependencies
+ # (Almost) always include our own inter-task dependencies.
+ # The exception is the special do_kernel_configme->do_unpack_and_patch
+ # dependency from archiver.bbclass.
if recipename == depname:
+ if task == "do_kernel_configme" and dep.endswith(".do_unpack_and_patch"):
+ return False
return True
# Quilt (patch application) changing isn't likely to affect anything