Patchwork [bitbake-devel] runqueue: Only attempt to print closest matching task if there is a match

login
register
mail settings
Submitter Richard Purdie
Date Jan. 21, 2014, 10:31 p.m.
Message ID <1390343512.874.124.camel@ted>
Download mbox | patch
Permalink /patch/65393/
State New
Headers show

Comments

Richard Purdie - Jan. 21, 2014, 10:31 p.m.
This avoids backtraces some people have been seeing.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Chris Larson - Jan. 22, 2014, 4:16 p.m.
On Tue, Jan 21, 2014 at 3:31 PM, Richard Purdie <
richard.purdie@linuxfoundation.org> wrote:

> +            if len(matches):


Minor quibble, this could almost be considered an antipattern in python :)
Whenever you see yourself doing this, you're almost always better off
removing the len(). Python can test if a container is empty.
Richard Purdie - Jan. 22, 2014, 6:05 p.m.
On Wed, 2014-01-22 at 09:16 -0700, Chris Larson wrote:
> On Tue, Jan 21, 2014 at 3:31 PM, Richard Purdie
> <richard.purdie@linuxfoundation.org> wrote:
>         +            if len(matches):
> 
> Minor quibble, this could almost be considered an antipattern in
> python :) Whenever you see yourself doing this, you're almost always
> better off removing the len(). Python can test if a container is
> empty.

Sorry, I do know this too :/.

It started life as a len(x) > 1, then when I fixed something else I
didn't properly simplify it.

Cheers,

Richard

Patch

diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 4577236..bf2dc54 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -1224,12 +1224,11 @@  class RunQueue:
             if match is None:
                 bb.fatal("Can't find a task we're supposed to have written out? (hash: %s)?" % h)
             matches = {k : v for k, v in matches.iteritems() if h not in k}
-            latestmatch = sorted(matches.keys(), key=lambda f: matches[f])[-1]
-            prevh = __find_md5__.search(latestmatch).group(0)
-            output = bb.siggen.compare_sigfiles(latestmatch, match, recursecb)
-            bb.plain("\nTask %s:%s couldn't be used from the cache because:\n  We need hash %s, closest matching task was %s\n  " % (pn, taskname, h, prevh) + '\n  '.join(output))
-             
-
+            if len(matches):
+                latestmatch = sorted(matches.keys(), key=lambda f: matches[f])[-1]
+                prevh = __find_md5__.search(latestmatch).group(0)
+                output = bb.siggen.compare_sigfiles(latestmatch, match, recursecb)
+                bb.plain("\nTask %s:%s couldn't be used from the cache because:\n  We need hash %s, closest matching task was %s\n  " % (pn, taskname, h, prevh) + '\n  '.join(output))
 
 class RunQueueExecute: