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>
This commit is contained in:
parent
fe11d18ffd
commit
4fc02c5eaa
|
@ -1068,10 +1068,9 @@ class RunQueue:
|
|||
for mc in self.rqdata.dataCaches:
|
||||
self.worker[mc] = self._start_worker(mc)
|
||||
|
||||
def start_fakeworker(self, rqexec):
|
||||
if not self.fakeworker:
|
||||
for mc in self.rqdata.dataCaches:
|
||||
self.fakeworker[mc] = self._start_worker(mc, True, rqexec)
|
||||
def start_fakeworker(self, rqexec, mc):
|
||||
if not mc in self.fakeworker:
|
||||
self.fakeworker[mc] = self._start_worker(mc, True, rqexec)
|
||||
|
||||
def teardown_workers(self):
|
||||
self.teardown = True
|
||||
|
@ -1804,9 +1803,9 @@ class RunQueueExecuteTasks(RunQueueExecute):
|
|||
|
||||
taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn]
|
||||
if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not (self.cooker.configuration.dry_run or self.rqdata.setscene_enforce):
|
||||
if not self.rq.fakeworker:
|
||||
if not mc in self.rq.fakeworker:
|
||||
try:
|
||||
self.rq.start_fakeworker(self)
|
||||
self.rq.start_fakeworker(self, mc)
|
||||
except OSError as exc:
|
||||
logger.critical("Failed to spawn fakeroot worker to run %s: %s" % (task, str(exc)))
|
||||
self.rq.state = runQueueFailed
|
||||
|
@ -2221,8 +2220,8 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
|
|||
|
||||
taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn]
|
||||
if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not self.cooker.configuration.dry_run:
|
||||
if not self.rq.fakeworker:
|
||||
self.rq.start_fakeworker(self)
|
||||
if not mc in self.rq.fakeworker:
|
||||
self.rq.start_fakeworker(self, mc)
|
||||
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>")
|
||||
self.rq.fakeworker[mc].process.stdin.flush()
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue