diff options
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 54 |
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): |