[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