summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/runqueue.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
-rw-r--r--bitbake/lib/bb/runqueue.py54
1 files changed, 13 insertions, 41 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 82cc9af81b..f0f95f9b5e 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -1388,57 +1388,29 @@ class RunQueue:
1388 cache[tid] = iscurrent 1388 cache[tid] = iscurrent
1389 return iscurrent 1389 return iscurrent
1390 1390
1391 def validate_hashes(self, tocheck, data, presentcount=None, siginfo=False): 1391 def validate_hashes(self, tocheck, data, currentcount=None, siginfo=False):
1392 valid = set() 1392 valid = set()
1393 if self.hashvalidate: 1393 if self.hashvalidate:
1394 sq_hash = [] 1394 sq_data = {}
1395 sq_hashfn = [] 1395 sq_data['hash'] = {}
1396 sq_unihash = [] 1396 sq_data['hashfn'] = {}
1397 sq_fn = [] 1397 sq_data['unihash'] = {}
1398 sq_taskname = []
1399 sq_task = []
1400 for tid in tocheck: 1398 for tid in tocheck:
1401 (mc, fn, taskname, taskfn) = split_tid_mcfn(tid) 1399 (mc, fn, taskname, taskfn) = split_tid_mcfn(tid)
1400 sq_data['hash'][tid] = self.rqdata.runtaskentries[tid].hash
1401 sq_data['hashfn'][tid] = self.rqdata.dataCaches[mc].hashfn[taskfn]
1402 sq_data['unihash'][tid] = self.rqdata.runtaskentries[tid].unihash
1402 1403
1403 sq_fn.append(fn) 1404 valid_ids = self.validate_hash(sq_data, data, siginfo, currentcount)
1404 sq_hashfn.append(self.rqdata.dataCaches[mc].hashfn[taskfn])
1405 sq_hash.append(self.rqdata.runtaskentries[tid].hash)
1406 sq_unihash.append(self.rqdata.runtaskentries[tid].unihash)
1407 sq_taskname.append(taskname)
1408 sq_task.append(tid)
1409
1410 if presentcount is not None:
1411 data.setVar("BB_SETSCENE_STAMPCURRENT_COUNT", presentcount)
1412
1413 valid_ids = self.validate_hash(sq_fn, sq_taskname, sq_hash, sq_hashfn, siginfo, sq_unihash, data, presentcount)
1414
1415 if presentcount is not None:
1416 data.delVar("BB_SETSCENE_STAMPCURRENT_COUNT")
1417
1418 for v in valid_ids:
1419 valid.add(sq_task[v])
1420 1405
1421 return valid 1406 return valid
1422 1407
1423 def validate_hash(self, sq_fn, sq_task, sq_hash, sq_hashfn, siginfo, sq_unihash, d, presentcount): 1408 def validate_hash(self, sq_data, d, siginfo, currentcount):
1424 locs = {"sq_fn" : sq_fn, "sq_task" : sq_task, "sq_hash" : sq_hash, "sq_hashfn" : sq_hashfn, 1409 locs = {"sq_data" : sq_data, "d" : d, "siginfo" : siginfo, "currentcount" : currentcount}
1425 "sq_unihash" : sq_unihash, "siginfo" : siginfo, "d" : d}
1426 1410
1427 # Backwards compatibility 1411 # Metadata has **kwargs so args can be added, sq_data can also gain new fields
1428 hashvalidate_args = ("(sq_fn, sq_task, sq_hash, sq_hashfn, d, siginfo=siginfo, sq_unihash=sq_unihash)", 1412 call = self.hashvalidate + "(sq_data, d, siginfo=siginfo, currentcount=currentcount)"
1429 "(sq_fn, sq_task, sq_hash, sq_hashfn, d, siginfo=siginfo)",
1430 "(sq_fn, sq_task, sq_hash, sq_hashfn, d)")
1431
1432 for args in hashvalidate_args[:-1]:
1433 try:
1434 call = self.hashvalidate + args
1435 return bb.utils.better_eval(call, locs)
1436 except TypeError:
1437 continue
1438 1413
1439 # Call the last entry without a try...catch to propagate any thrown
1440 # TypeError
1441 call = self.hashvalidate + hashvalidate_args[-1]
1442 return bb.utils.better_eval(call, locs) 1414 return bb.utils.better_eval(call, locs)
1443 1415
1444 def _execute_runqueue(self): 1416 def _execute_runqueue(self):