diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-12-21 14:11:24 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-12-22 12:36:40 +0000 |
commit | 4fc02c5eaaf7ef70606d06f8c7664ce7e40d166b (patch) | |
tree | 7cad3e394637fc6474325ecfb8dbec78dddc86f8 /bitbake | |
parent | fe11d18ffd2105ea899332415089b4bb122cc4d9 (diff) | |
download | poky-4fc02c5eaaf7ef70606d06f8c7664ce7e40d166b.tar.gz |
bitbake: runqueue: Only start fakeroot workers when needed
Fakeroot workers usually have dependencies that need to be ready before they
can be started. Starting them as a block therefore doesn't work as the
dependencies may or may not have been built. Therefore start the multiconfig
fakeworkers individually upon demand.
[YOCTO #10344]
(Bitbake rev: ab15486c636e451ed5a62e561980946887901c3b)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index ef14347e15..48c6a79ffb 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
@@ -1068,10 +1068,9 @@ class RunQueue: | |||
1068 | for mc in self.rqdata.dataCaches: | 1068 | for mc in self.rqdata.dataCaches: |
1069 | self.worker[mc] = self._start_worker(mc) | 1069 | self.worker[mc] = self._start_worker(mc) |
1070 | 1070 | ||
1071 | def start_fakeworker(self, rqexec): | 1071 | def start_fakeworker(self, rqexec, mc): |
1072 | if not self.fakeworker: | 1072 | if not mc in self.fakeworker: |
1073 | for mc in self.rqdata.dataCaches: | 1073 | self.fakeworker[mc] = self._start_worker(mc, True, rqexec) |
1074 | self.fakeworker[mc] = self._start_worker(mc, True, rqexec) | ||
1075 | 1074 | ||
1076 | def teardown_workers(self): | 1075 | def teardown_workers(self): |
1077 | self.teardown = True | 1076 | self.teardown = True |
@@ -1804,9 +1803,9 @@ class RunQueueExecuteTasks(RunQueueExecute): | |||
1804 | 1803 | ||
1805 | taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn] | 1804 | taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn] |
1806 | if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not (self.cooker.configuration.dry_run or self.rqdata.setscene_enforce): | 1805 | if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not (self.cooker.configuration.dry_run or self.rqdata.setscene_enforce): |
1807 | if not self.rq.fakeworker: | 1806 | if not mc in self.rq.fakeworker: |
1808 | try: | 1807 | try: |
1809 | self.rq.start_fakeworker(self) | 1808 | self.rq.start_fakeworker(self, mc) |
1810 | except OSError as exc: | 1809 | except OSError as exc: |
1811 | logger.critical("Failed to spawn fakeroot worker to run %s: %s" % (task, str(exc))) | 1810 | logger.critical("Failed to spawn fakeroot worker to run %s: %s" % (task, str(exc))) |
1812 | self.rq.state = runQueueFailed | 1811 | self.rq.state = runQueueFailed |
@@ -2221,8 +2220,8 @@ class RunQueueExecuteScenequeue(RunQueueExecute): | |||
2221 | 2220 | ||
2222 | taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn] | 2221 | taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn] |
2223 | if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not self.cooker.configuration.dry_run: | 2222 | if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not self.cooker.configuration.dry_run: |
2224 | if not self.rq.fakeworker: | 2223 | if not mc in self.rq.fakeworker: |
2225 | self.rq.start_fakeworker(self) | 2224 | self.rq.start_fakeworker(self, mc) |
2226 | 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>") | 2225 | 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>") |
2227 | self.rq.fakeworker[mc].process.stdin.flush() | 2226 | self.rq.fakeworker[mc].process.stdin.flush() |
2228 | else: | 2227 | else: |