[OE-core] [PATCH] base.bbclass: add named SRCREVs to the sstate hash
Christopher Larson
kergoth at gmail.com
Wed May 8 15:16:57 UTC 2019
Does SRCPV not already cover this in the majority of cases? SRCREV_FORMAT
controls how the multiple revs end up in PV, and the change to PV results
in rebuilding anyway. And iterating over d.keys() is inefficient, *if*
you’re going to do this, operate on SRCREV, gather up the name= parameters
from scm urls, and use that to drive it.
On Wed, May 8, 2019 at 7:10 AM Michael Ho <Michael.Ho at bmw.de> wrote:
> 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
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
--
Christopher Larson
kergoth at gmail dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Senior Software Engineer, Mentor Graphics
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20190508/101a73fa/attachment-0001.html>
More information about the Openembedded-core
mailing list