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) (From OE-Core rev: 201c634946d07c8d0ab6d486e5031b4479eb6707) (From OE-Core rev: 81a6623592c3c496b16f0dc2c0ad04c16b0baf29) 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>
This commit is contained in:
parent
1e59fd509f
commit
88e11f3295
|
@ -442,7 +442,10 @@ do_deploy_all_archives() {
|
||||||
}
|
}
|
||||||
|
|
||||||
python () {
|
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):
|
if bb.data.inherits_class('kernel-yocto', d):
|
||||||
bb.build.addtask('do_kernel_configme', 'do_configure', 'do_unpack_and_patch', d)
|
bb.build.addtask('do_kernel_configme', 'do_configure', 'do_unpack_and_patch', d)
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,8 +20,12 @@ def sstate_rundepfilter(siggen, fn, recipename, task, dep, depname, dataCache):
|
||||||
def isImage(fn):
|
def isImage(fn):
|
||||||
return "/image.bbclass" in " ".join(dataCache.inherits[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 recipename == depname:
|
||||||
|
if task == "do_kernel_configme" and dep.endswith(".do_unpack_and_patch"):
|
||||||
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
# Quilt (patch application) changing isn't likely to affect anything
|
# Quilt (patch application) changing isn't likely to affect anything
|
||||||
|
|
Loading…
Reference in New Issue