diff options
author | Patrick Ohly <patrick.ohly@intel.com> | 2017-05-05 12:25:25 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-05-18 14:01:46 +0100 |
commit | 23ecae6d677894326c6aafec2a96a1d0657b0d18 (patch) | |
tree | 1d23f95ee5d720e4c2f36efd5d6417d0ccc8e86b | |
parent | 3208824ae6c39eacf3941a85c7a5735c4d55be74 (diff) | |
download | poky-23ecae6d677894326c6aafec2a96a1d0657b0d18.tar.gz |
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>
-rw-r--r-- | meta/classes/archiver.bbclass | 5 | ||||
-rw-r--r-- | 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 ea00ab33da..647d2cf2d7 100644 --- a/meta/classes/archiver.bbclass +++ b/meta/classes/archiver.bbclass | |||
@@ -442,7 +442,10 @@ do_deploy_all_archives() { | |||
442 | } | 442 | } |
443 | 443 | ||
444 | python () { | 444 | python () { |
445 | # Add tasks in the correct order, specifically for linux-yocto to avoid race condition | 445 | # Add tasks in the correct order, specifically for linux-yocto to avoid race condition. |
446 | # sstatesig.py:sstate_rundepfilter has special support that excludes this dependency | ||
447 | # so that do_kernel_configme does not need to run again when do_unpack_and_patch | ||
448 | # gets added or removed (by adding or removing archiver.bbclass). | ||
446 | if bb.data.inherits_class('kernel-yocto', d): | 449 | if bb.data.inherits_class('kernel-yocto', d): |
447 | bb.build.addtask('do_kernel_configme', 'do_configure', 'do_unpack_and_patch', d) | 450 | bb.build.addtask('do_kernel_configme', 'do_configure', 'do_unpack_and_patch', d) |
448 | } | 451 | } |
diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py index f087a019e1..b8dd4c869e 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): | |||
20 | def isImage(fn): | 20 | def isImage(fn): |
21 | return "/image.bbclass" in " ".join(dataCache.inherits[fn]) | 21 | return "/image.bbclass" in " ".join(dataCache.inherits[fn]) |
22 | 22 | ||
23 | # Always include our own inter-task dependencies | 23 | # (Almost) always include our own inter-task dependencies. |
24 | # The exception is the special do_kernel_configme->do_unpack_and_patch | ||
25 | # dependency from archiver.bbclass. | ||
24 | if recipename == depname: | 26 | if recipename == depname: |
27 | if task == "do_kernel_configme" and dep.endswith(".do_unpack_and_patch"): | ||
28 | return False | ||
25 | return True | 29 | return True |
26 | 30 | ||
27 | # Quilt (patch application) changing isn't likely to affect anything | 31 | # Quilt (patch application) changing isn't likely to affect anything |