summaryrefslogtreecommitdiffstats
path: root/meta/lib/oe
diff options
context:
space:
mode:
Diffstat (limited to 'meta/lib/oe')
-rw-r--r--meta/lib/oe/buildhistory_analysis.py2
-rw-r--r--meta/lib/oe/sstatesig.py31
2 files changed, 14 insertions, 19 deletions
diff --git a/meta/lib/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py
index b1856846b6..4edad01580 100644
--- a/meta/lib/oe/buildhistory_analysis.py
+++ b/meta/lib/oe/buildhistory_analysis.py
@@ -562,7 +562,7 @@ def compare_siglists(a_blob, b_blob, taskdiff=False):
562 elif not hash2 in hashfiles: 562 elif not hash2 in hashfiles:
563 out.append("Unable to find matching sigdata for %s with hash %s" % (desc, hash2)) 563 out.append("Unable to find matching sigdata for %s with hash %s" % (desc, hash2))
564 else: 564 else:
565 out2 = bb.siggen.compare_sigfiles(hashfiles[hash1], hashfiles[hash2], recursecb, collapsed=True) 565 out2 = bb.siggen.compare_sigfiles(hashfiles[hash1]['path'], hashfiles[hash2]['path'], recursecb, collapsed=True)
566 for line in out2: 566 for line in out2:
567 m = hashlib.sha256() 567 m = hashlib.sha256()
568 m.update(line.encode('utf-8')) 568 m.update(line.encode('utf-8'))
diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py
index 8a97fb0c04..0342bcdc87 100644
--- a/meta/lib/oe/sstatesig.py
+++ b/meta/lib/oe/sstatesig.py
@@ -349,7 +349,6 @@ def find_siginfo(pn, taskname, taskhashlist, d):
349 pn, taskname = key.split(':', 1) 349 pn, taskname = key.split(':', 1)
350 350
351 hashfiles = {} 351 hashfiles = {}
352 filedates = {}
353 352
354 def get_hashval(siginfo): 353 def get_hashval(siginfo):
355 if siginfo.endswith('.siginfo'): 354 if siginfo.endswith('.siginfo'):
@@ -357,6 +356,12 @@ def find_siginfo(pn, taskname, taskhashlist, d):
357 else: 356 else:
358 return siginfo.rpartition('.')[2] 357 return siginfo.rpartition('.')[2]
359 358
359 def get_time(fullpath):
360 try:
361 return os.stat(fullpath).st_mtime
362 except OSError:
363 return None
364
360 # First search in stamps dir 365 # First search in stamps dir
361 localdata = d.createCopy() 366 localdata = d.createCopy()
362 localdata.setVar('MULTIMACH_TARGET_SYS', '*') 367 localdata.setVar('MULTIMACH_TARGET_SYS', '*')
@@ -372,24 +377,21 @@ def find_siginfo(pn, taskname, taskhashlist, d):
372 filespec = '%s.%s.sigdata.*' % (stamp, taskname) 377 filespec = '%s.%s.sigdata.*' % (stamp, taskname)
373 foundall = False 378 foundall = False
374 import glob 379 import glob
380 bb.debug(1, "Calling glob.glob on {}".format(filespec))
375 for fullpath in glob.glob(filespec): 381 for fullpath in glob.glob(filespec):
376 match = False 382 match = False
377 if taskhashlist: 383 if taskhashlist:
378 for taskhash in taskhashlist: 384 for taskhash in taskhashlist:
379 if fullpath.endswith('.%s' % taskhash): 385 if fullpath.endswith('.%s' % taskhash):
380 hashfiles[taskhash] = fullpath 386 hashfiles[taskhash] = {'path':fullpath, 'sstate':False, 'time':get_time(fullpath)}
381 if len(hashfiles) == len(taskhashlist): 387 if len(hashfiles) == len(taskhashlist):
382 foundall = True 388 foundall = True
383 break 389 break
384 else: 390 else:
385 try:
386 filedates[fullpath] = os.stat(fullpath).st_mtime
387 except OSError:
388 continue
389 hashval = get_hashval(fullpath) 391 hashval = get_hashval(fullpath)
390 hashfiles[hashval] = fullpath 392 hashfiles[hashval] = {'path':fullpath, 'sstate':False, 'time':get_time(fullpath)}
391 393
392 if not taskhashlist or (len(filedates) < 2 and not foundall): 394 if not taskhashlist or (len(hashfiles) < 2 and not foundall):
393 # That didn't work, look in sstate-cache 395 # That didn't work, look in sstate-cache
394 hashes = taskhashlist or ['?' * 64] 396 hashes = taskhashlist or ['?' * 64]
395 localdata = bb.data.createCopy(d) 397 localdata = bb.data.createCopy(d)
@@ -412,22 +414,15 @@ def find_siginfo(pn, taskname, taskhashlist, d):
412 localdata.setVar('SSTATE_EXTRAPATH', "${NATIVELSBSTRING}/") 414 localdata.setVar('SSTATE_EXTRAPATH', "${NATIVELSBSTRING}/")
413 filespec = '%s.siginfo' % localdata.getVar('SSTATE_PKG') 415 filespec = '%s.siginfo' % localdata.getVar('SSTATE_PKG')
414 416
417 bb.debug(1, "Calling glob.glob on {}".format(filespec))
415 matchedfiles = glob.glob(filespec) 418 matchedfiles = glob.glob(filespec)
416 for fullpath in matchedfiles: 419 for fullpath in matchedfiles:
417 actual_hashval = get_hashval(fullpath) 420 actual_hashval = get_hashval(fullpath)
418 if actual_hashval in hashfiles: 421 if actual_hashval in hashfiles:
419 continue 422 continue
420 hashfiles[hashval] = fullpath 423 hashfiles[actual_hashval] = {'path':fullpath, 'sstate':True, 'time':get_time(fullpath)}
421 if not taskhashlist:
422 try:
423 filedates[fullpath] = os.stat(fullpath).st_mtime
424 except:
425 continue
426 424
427 if taskhashlist: 425 return hashfiles
428 return hashfiles
429 else:
430 return filedates
431 426
432bb.siggen.find_siginfo = find_siginfo 427bb.siggen.find_siginfo = find_siginfo
433 428