[gnome-continuous-yocto/gnomeostree-3.28-rocko: 5903/8267] archiver.bbclass: do not cause kernel rebuilds



commit 23ecae6d677894326c6aafec2a96a1d0657b0d18
Author: Patrick Ohly <patrick ohly intel com>
Date:   Fri May 5 12:25:25 2017 +0200

    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
    
    (From OE-Core rev: fed0ed82928e6a7846fbad233ac657bd17bcefc7)
    
    Signed-off-by: Patrick Ohly <patrick ohly intel com>
    Signed-off-by: Ross Burton <ross burton intel com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 meta/classes/archiver.bbclass |    5 ++++-
 meta/lib/oe/sstatesig.py      |    6 +++++-
 2 files changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/meta/classes/archiver.bbclass b/meta/classes/archiver.bbclass
index ea00ab3..647d2cf 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.
+    # sstatesig.py:sstate_rundepfilter 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 bb.data.inherits_class('kernel-yocto', d):
         bb.build.addtask('do_kernel_configme', 'do_configure', 'do_unpack_and_patch', d)
 }
diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py
index f087a01..b8dd4c8 100644
--- a/meta/lib/oe/sstatesig.py
+++ b/meta/lib/oe/sstatesig.py
@@ -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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]