[OE-core] [PATCH v4 07/10] bitbake: runqueue: Pass unique hash to hash validate

Joshua Watt jpewhacker at gmail.com
Tue Dec 18 16:31:33 UTC 2018


On Tue, 2018-12-18 at 16:24 +0000, Richard Purdie wrote:
> On Tue, 2018-12-18 at 09:30 -0600, Joshua Watt wrote:
> > If the unique hash is being used to track task dependencies, the
> > hash
> > validation function needs to know about it in order to properly
> > validate
> > the hash.
> > 
> > [YOCTO #13030]
> > 
> > Signed-off-by: Joshua Watt <JPEWhacker at gmail.com>
> > ---
> >  bitbake/lib/bb/runqueue.py | 38 +++++++++++++++++++++++++++-------
> > ----
> >  1 file changed, 27 insertions(+), 11 deletions(-)
> > 
> > diff --git a/bitbake/lib/bb/runqueue.py
> > b/bitbake/lib/bb/runqueue.py
> > index de57dcb37b8..161f53c7cb1 100644
> > --- a/bitbake/lib/bb/runqueue.py
> > +++ b/bitbake/lib/bb/runqueue.py
> > @@ -1378,6 +1378,23 @@ class RunQueue:
> >              cache[tid] = iscurrent
> >          return iscurrent
> >  
> > +    def validate_hash(self, *, sq_fn, sq_task, sq_hash, sq_hashfn,
> > siginfo, sq_unihash, d):
> > +        locs = {"sq_fn" : sq_fn, "sq_task" : sq_task, "sq_hash" :
> > sq_hash, "sq_hashfn" : sq_hashfn,
> > +                "sq_unihash" : sq_unihash, "siginfo" : siginfo,
> > "d" : d}
> > +
> > +        for hashvalidate_args in ("(sq_fn, sq_task, sq_hash,
> > sq_hashfn, d, siginfo=siginfo, sq_unihash=sq_unihash)",
> > +                                  "(sq_fn, sq_task, sq_hash,
> > sq_hashfn, d, siginfo=siginfo)"):
> > +            try:
> > +                call = self.hashvalidate + hashvalidate_args
> > +                return bb.utils.better_eval(call, locs)
> > +            except TypeError:
> > +                continue
> > +
> > +        # If none of the hash validate functions worked, try one
> > more time
> > +        # with the oldest type
> > +        call = self.hashvalidate + "(sq_fn, sq_task, sq_hash,
> > sq_hashfn, sq_unihash, d)"
> > +        return bb.utils.better_eval(call, locs)
> 
> I think sq_unihash shouldn't be in this last fallback option. You
> copy
> and pasted from your updated code rather than the original (pre
> unihash?) You could add (sq_fn, sq_task, sq_hash, sq_hashfn) to the
> args list?

Oops, yep I'll fix that. 

The reason I did it like this to make it not suppress the final
TypeError if the last try failed.... I wasn't sure if there was some
other error I should raise instead if we exit the loop when they all
fail?

> 
> Cheers,
> 
> Richard
> 
-- 
Joshua Watt <JPEWhacker at gmail.com>



More information about the Openembedded-core mailing list