diff options
Diffstat (limited to 'meta/lib/oe/sstatesig.py')
-rw-r--r-- | meta/lib/oe/sstatesig.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py index b6f8ab92cb..f883497292 100644 --- a/meta/lib/oe/sstatesig.py +++ b/meta/lib/oe/sstatesig.py | |||
@@ -399,7 +399,13 @@ def find_siginfo(pn, taskname, taskhashlist, d): | |||
399 | return siginfo.rpartition('.')[2] | 399 | return siginfo.rpartition('.')[2] |
400 | 400 | ||
401 | def get_time(fullpath): | 401 | def get_time(fullpath): |
402 | return os.stat(fullpath).st_mtime | 402 | # NFS can end up in a weird state where the file exists but has no stat info. |
403 | # If that happens, we assume it doesn't acutally exist and show a warning | ||
404 | try: | ||
405 | return os.stat(fullpath).st_mtime | ||
406 | except FileNotFoundError: | ||
407 | bb.warn("Could not obtain mtime for {}".format(fullpath)) | ||
408 | return None | ||
403 | 409 | ||
404 | # First search in stamps dir | 410 | # First search in stamps dir |
405 | localdata = d.createCopy() | 411 | localdata = d.createCopy() |
@@ -422,13 +428,17 @@ def find_siginfo(pn, taskname, taskhashlist, d): | |||
422 | if taskhashlist: | 428 | if taskhashlist: |
423 | for taskhash in taskhashlist: | 429 | for taskhash in taskhashlist: |
424 | if fullpath.endswith('.%s' % taskhash): | 430 | if fullpath.endswith('.%s' % taskhash): |
425 | hashfiles[taskhash] = {'path':fullpath, 'sstate':False, 'time':get_time(fullpath)} | 431 | mtime = get_time(fullpath) |
432 | if mtime: | ||
433 | hashfiles[taskhash] = {'path':fullpath, 'sstate':False, 'time':mtime} | ||
426 | if len(hashfiles) == len(taskhashlist): | 434 | if len(hashfiles) == len(taskhashlist): |
427 | foundall = True | 435 | foundall = True |
428 | break | 436 | break |
429 | else: | 437 | else: |
430 | hashval = get_hashval(fullpath) | 438 | hashval = get_hashval(fullpath) |
431 | hashfiles[hashval] = {'path':fullpath, 'sstate':False, 'time':get_time(fullpath)} | 439 | mtime = get_time(fullpath) |
440 | if mtime: | ||
441 | hashfiles[hashval] = {'path':fullpath, 'sstate':False, 'time':mtime} | ||
432 | 442 | ||
433 | if not taskhashlist or (len(hashfiles) < 2 and not foundall): | 443 | if not taskhashlist or (len(hashfiles) < 2 and not foundall): |
434 | # That didn't work, look in sstate-cache | 444 | # That didn't work, look in sstate-cache |
@@ -459,7 +469,9 @@ def find_siginfo(pn, taskname, taskhashlist, d): | |||
459 | actual_hashval = get_hashval(fullpath) | 469 | actual_hashval = get_hashval(fullpath) |
460 | if actual_hashval in hashfiles: | 470 | if actual_hashval in hashfiles: |
461 | continue | 471 | continue |
462 | hashfiles[actual_hashval] = {'path':fullpath, 'sstate':True, 'time':get_time(fullpath)} | 472 | mtime = get_time(fullpath) |
473 | if mtime: | ||
474 | hashfiles[actual_hashval] = {'path':fullpath, 'sstate':True, 'time':mtime} | ||
463 | 475 | ||
464 | return hashfiles | 476 | return hashfiles |
465 | 477 | ||