[OE-core] [PATCH] base.bbclass: add named SRCREVs to the sstate hash
Michael Ho
Michael.Ho at bmw.de
Wed May 8 14:02:29 UTC 2019
Several fetchers support named sources that require setting a SRCREV with
the source name as a suffix. These named SRCREV variables are not captured
in the sstate hash calculation because they're only referenced within the
bitbake fetcher function.
Add a snippet to the base.bbclass anonymous python to add all named SRCREV
variables to the vardeps of do_fetch to capture them in the sstate hash
calculation.
Testing of the bug can be shown by running the following bitbake commands
with this patch set not applied:
bitbake vulkan-demos | tee
sed -i 's/SRCREV_gli = ".*"/SRCREV_gli = "xxx"/' \
../meta/recipes-graphics/vulkan/vulkan-demos_git.bb
bitbake vulkan-demos | tee;
Results in no errors despite a broken SRCREV because the vulkan-demos is
considered unchanged.
After applying this patch the above commands instead result in a fetcher
error which is correct.
---
meta/classes/base.bbclass | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index 1636c6e..84a27f5 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -638,6 +638,16 @@ python () {
if needsrcrev:
d.setVar("SRCPV", "${@bb.fetch2.get_srcrev(d)}")
+ # Gather all SRCREV_* references to add to the sstate hash calculation
+ # This may capture SRCREVs not used but it's difficult to try to restrict it
+ # to only what is needed
+ for dkey in d.keys():
+ if dkey.startswith("SRCREV_"):
+ # This anonymous python snippet is called multiple times so we
+ # need to be careful to not double up the appends here and cause
+ # the base hash to mismatch the task hash
+ if dkey not in (d.getVarFlag("do_fetch", "vardeps") or '').split():
+ d.appendVarFlag("do_fetch", "vardeps", " {}".format(dkey))
set_packagetriplet(d)
--
2.7.4
More information about the Openembedded-core
mailing list