diff options
author | Joshua Watt <jpewhacker@gmail.com> | 2018-12-03 21:42:36 -0600 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-12-07 12:38:58 +0000 |
commit | 86cc1a4104d71235cfdc9b5acfa820758191480a (patch) | |
tree | f7d5c2ae11872a93070eb2e8bad9948fbc2d8768 /bitbake/lib/bb/runqueue.py | |
parent | 7509b5ee0555d1cc8729210e62e122da70b9d080 (diff) | |
download | poky-86cc1a4104d71235cfdc9b5acfa820758191480a.tar.gz |
bitbake: bitbake-worker: Pass taskhash as runtask parameter
Pass the task hash as a parameter to the 'runtask' message instead of
passing the entire dictionary of hashes when the worker is setup. This
is possible less efficient, but prevents the worker taskhashes from
being out of sync with the runqueue in the event that the taskhashes in
the runqueue change.
[YOCTO #13030]
(Bitbake rev: 1e86d8c1bec7ea5d016a5ad2097f999362e29033)
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 4d5d876797..f2b95a9829 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
@@ -1224,17 +1224,12 @@ class RunQueue: | |||
1224 | bb.utils.nonblockingfd(worker.stdout) | 1224 | bb.utils.nonblockingfd(worker.stdout) |
1225 | workerpipe = runQueuePipe(worker.stdout, None, self.cfgData, self, rqexec) | 1225 | workerpipe = runQueuePipe(worker.stdout, None, self.cfgData, self, rqexec) |
1226 | 1226 | ||
1227 | runqhash = {} | ||
1228 | for tid in self.rqdata.runtaskentries: | ||
1229 | runqhash[tid] = self.rqdata.runtaskentries[tid].hash | ||
1230 | |||
1231 | workerdata = { | 1227 | workerdata = { |
1232 | "taskdeps" : self.rqdata.dataCaches[mc].task_deps, | 1228 | "taskdeps" : self.rqdata.dataCaches[mc].task_deps, |
1233 | "fakerootenv" : self.rqdata.dataCaches[mc].fakerootenv, | 1229 | "fakerootenv" : self.rqdata.dataCaches[mc].fakerootenv, |
1234 | "fakerootdirs" : self.rqdata.dataCaches[mc].fakerootdirs, | 1230 | "fakerootdirs" : self.rqdata.dataCaches[mc].fakerootdirs, |
1235 | "fakerootnoenv" : self.rqdata.dataCaches[mc].fakerootnoenv, | 1231 | "fakerootnoenv" : self.rqdata.dataCaches[mc].fakerootnoenv, |
1236 | "sigdata" : bb.parse.siggen.get_taskdata(), | 1232 | "sigdata" : bb.parse.siggen.get_taskdata(), |
1237 | "runq_hash" : runqhash, | ||
1238 | "logdefaultdebug" : bb.msg.loggerDefaultDebugLevel, | 1233 | "logdefaultdebug" : bb.msg.loggerDefaultDebugLevel, |
1239 | "logdefaultverbose" : bb.msg.loggerDefaultVerbose, | 1234 | "logdefaultverbose" : bb.msg.loggerDefaultVerbose, |
1240 | "logdefaultverboselogs" : bb.msg.loggerVerboseLogs, | 1235 | "logdefaultverboselogs" : bb.msg.loggerVerboseLogs, |
@@ -2031,6 +2026,7 @@ class RunQueueExecuteTasks(RunQueueExecute): | |||
2031 | taskdepdata = self.build_taskdepdata(task) | 2026 | taskdepdata = self.build_taskdepdata(task) |
2032 | 2027 | ||
2033 | taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn] | 2028 | taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn] |
2029 | taskhash = self.rqdata.get_task_hash(task) | ||
2034 | if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not (self.cooker.configuration.dry_run or self.rqdata.setscene_enforce): | 2030 | if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not (self.cooker.configuration.dry_run or self.rqdata.setscene_enforce): |
2035 | if not mc in self.rq.fakeworker: | 2031 | if not mc in self.rq.fakeworker: |
2036 | try: | 2032 | try: |
@@ -2040,10 +2036,10 @@ class RunQueueExecuteTasks(RunQueueExecute): | |||
2040 | self.rq.state = runQueueFailed | 2036 | self.rq.state = runQueueFailed |
2041 | self.stats.taskFailed() | 2037 | self.stats.taskFailed() |
2042 | return True | 2038 | return True |
2043 | self.rq.fakeworker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, False, self.cooker.collection.get_file_appends(taskfn), taskdepdata, self.rqdata.setscene_enforce)) + b"</runtask>") | 2039 | self.rq.fakeworker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, False, self.cooker.collection.get_file_appends(taskfn), taskdepdata, self.rqdata.setscene_enforce)) + b"</runtask>") |
2044 | self.rq.fakeworker[mc].process.stdin.flush() | 2040 | self.rq.fakeworker[mc].process.stdin.flush() |
2045 | else: | 2041 | else: |
2046 | self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, False, self.cooker.collection.get_file_appends(taskfn), taskdepdata, self.rqdata.setscene_enforce)) + b"</runtask>") | 2042 | self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, False, self.cooker.collection.get_file_appends(taskfn), taskdepdata, self.rqdata.setscene_enforce)) + b"</runtask>") |
2047 | self.rq.worker[mc].process.stdin.flush() | 2043 | self.rq.worker[mc].process.stdin.flush() |
2048 | 2044 | ||
2049 | self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True) | 2045 | self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True) |
@@ -2457,13 +2453,14 @@ class RunQueueExecuteScenequeue(RunQueueExecute): | |||
2457 | taskdepdata = self.build_taskdepdata(task) | 2453 | taskdepdata = self.build_taskdepdata(task) |
2458 | 2454 | ||
2459 | taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn] | 2455 | taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn] |
2456 | taskhash = self.rqdata.get_task_hash(task) | ||
2460 | if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not self.cooker.configuration.dry_run: | 2457 | if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not self.cooker.configuration.dry_run: |
2461 | if not mc in self.rq.fakeworker: | 2458 | if not mc in self.rq.fakeworker: |
2462 | self.rq.start_fakeworker(self, mc) | 2459 | self.rq.start_fakeworker(self, mc) |
2463 | self.rq.fakeworker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, True, self.cooker.collection.get_file_appends(taskfn), taskdepdata, False)) + b"</runtask>") | 2460 | self.rq.fakeworker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, True, self.cooker.collection.get_file_appends(taskfn), taskdepdata, False)) + b"</runtask>") |
2464 | self.rq.fakeworker[mc].process.stdin.flush() | 2461 | self.rq.fakeworker[mc].process.stdin.flush() |
2465 | else: | 2462 | else: |
2466 | self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, True, self.cooker.collection.get_file_appends(taskfn), taskdepdata, False)) + b"</runtask>") | 2463 | self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, True, self.cooker.collection.get_file_appends(taskfn), taskdepdata, False)) + b"</runtask>") |
2467 | self.rq.worker[mc].process.stdin.flush() | 2464 | self.rq.worker[mc].process.stdin.flush() |
2468 | 2465 | ||
2469 | self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True) | 2466 | self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True) |