mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 00:20:08 +00:00
bitbake: runqueue: Pass unique hash to task
The unique hash is now passed to the task in the BB_UNIHASH variable [YOCTO #13030] (Bitbake rev: aab80b099f6f259e4b57cba2c26dd385d07c5947) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
57e3c55f6d
commit
3b5bdb227b
@@ -136,7 +136,7 @@ def sigterm_handler(signum, frame):
|
|||||||
os.killpg(0, signal.SIGTERM)
|
os.killpg(0, signal.SIGTERM)
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
def fork_off_task(cfg, data, databuilder, workerdata, fn, task, taskname, taskhash, appends, taskdepdata, extraconfigdata, quieterrors=False, dry_run_exec=False):
|
def fork_off_task(cfg, data, databuilder, workerdata, fn, task, taskname, taskhash, unihash, appends, taskdepdata, extraconfigdata, quieterrors=False, dry_run_exec=False):
|
||||||
# We need to setup the environment BEFORE the fork, since
|
# We need to setup the environment BEFORE the fork, since
|
||||||
# a fork() or exec*() activates PSEUDO...
|
# a fork() or exec*() activates PSEUDO...
|
||||||
|
|
||||||
@@ -235,6 +235,7 @@ def fork_off_task(cfg, data, databuilder, workerdata, fn, task, taskname, taskha
|
|||||||
|
|
||||||
the_data = bb_cache.loadDataFull(fn, appends)
|
the_data = bb_cache.loadDataFull(fn, appends)
|
||||||
the_data.setVar('BB_TASKHASH', taskhash)
|
the_data.setVar('BB_TASKHASH', taskhash)
|
||||||
|
the_data.setVar('BB_UNIHASH', unihash)
|
||||||
|
|
||||||
bb.utils.set_process_name("%s:%s" % (the_data.getVar("PN"), taskname.replace("do_", "")))
|
bb.utils.set_process_name("%s:%s" % (the_data.getVar("PN"), taskname.replace("do_", "")))
|
||||||
|
|
||||||
@@ -425,10 +426,10 @@ class BitbakeWorker(object):
|
|||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
def handle_runtask(self, data):
|
def handle_runtask(self, data):
|
||||||
fn, task, taskname, taskhash, quieterrors, appends, taskdepdata, dry_run_exec = pickle.loads(data)
|
fn, task, taskname, taskhash, unihash, quieterrors, appends, taskdepdata, dry_run_exec = pickle.loads(data)
|
||||||
workerlog_write("Handling runtask %s %s %s\n" % (task, fn, taskname))
|
workerlog_write("Handling runtask %s %s %s\n" % (task, fn, taskname))
|
||||||
|
|
||||||
pid, pipein, pipeout = fork_off_task(self.cookercfg, self.data, self.databuilder, self.workerdata, fn, task, taskname, taskhash, appends, taskdepdata, self.extraconfigdata, quieterrors, dry_run_exec)
|
pid, pipein, pipeout = fork_off_task(self.cookercfg, self.data, self.databuilder, self.workerdata, fn, task, taskname, taskhash, unihash, appends, taskdepdata, self.extraconfigdata, quieterrors, dry_run_exec)
|
||||||
|
|
||||||
self.build_pids[pid] = task
|
self.build_pids[pid] = task
|
||||||
self.build_pipes[pid] = runQueueWorkerPipe(pipein, pipeout)
|
self.build_pipes[pid] = runQueueWorkerPipe(pipein, pipeout)
|
||||||
|
|||||||
@@ -2034,6 +2034,7 @@ class RunQueueExecuteTasks(RunQueueExecute):
|
|||||||
|
|
||||||
taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn]
|
taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn]
|
||||||
taskhash = self.rqdata.get_task_hash(task)
|
taskhash = self.rqdata.get_task_hash(task)
|
||||||
|
unihash = self.rqdata.get_task_unihash(task)
|
||||||
if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not (self.cooker.configuration.dry_run or self.rqdata.setscene_enforce):
|
if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not (self.cooker.configuration.dry_run or self.rqdata.setscene_enforce):
|
||||||
if not mc in self.rq.fakeworker:
|
if not mc in self.rq.fakeworker:
|
||||||
try:
|
try:
|
||||||
@@ -2043,10 +2044,10 @@ class RunQueueExecuteTasks(RunQueueExecute):
|
|||||||
self.rq.state = runQueueFailed
|
self.rq.state = runQueueFailed
|
||||||
self.stats.taskFailed()
|
self.stats.taskFailed()
|
||||||
return True
|
return True
|
||||||
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>")
|
self.rq.fakeworker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, unihash, False, self.cooker.collection.get_file_appends(taskfn), taskdepdata, self.rqdata.setscene_enforce)) + b"</runtask>")
|
||||||
self.rq.fakeworker[mc].process.stdin.flush()
|
self.rq.fakeworker[mc].process.stdin.flush()
|
||||||
else:
|
else:
|
||||||
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>")
|
self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, unihash, False, self.cooker.collection.get_file_appends(taskfn), taskdepdata, self.rqdata.setscene_enforce)) + b"</runtask>")
|
||||||
self.rq.worker[mc].process.stdin.flush()
|
self.rq.worker[mc].process.stdin.flush()
|
||||||
|
|
||||||
self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True)
|
self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True)
|
||||||
@@ -2462,13 +2463,14 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
|
|||||||
|
|
||||||
taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn]
|
taskdep = self.rqdata.dataCaches[mc].task_deps[taskfn]
|
||||||
taskhash = self.rqdata.get_task_hash(task)
|
taskhash = self.rqdata.get_task_hash(task)
|
||||||
|
unihash = self.rqdata.get_task_unihash(task)
|
||||||
if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not self.cooker.configuration.dry_run:
|
if 'fakeroot' in taskdep and taskname in taskdep['fakeroot'] and not self.cooker.configuration.dry_run:
|
||||||
if not mc in self.rq.fakeworker:
|
if not mc in self.rq.fakeworker:
|
||||||
self.rq.start_fakeworker(self, mc)
|
self.rq.start_fakeworker(self, mc)
|
||||||
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>")
|
self.rq.fakeworker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, unihash, True, self.cooker.collection.get_file_appends(taskfn), taskdepdata, False)) + b"</runtask>")
|
||||||
self.rq.fakeworker[mc].process.stdin.flush()
|
self.rq.fakeworker[mc].process.stdin.flush()
|
||||||
else:
|
else:
|
||||||
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>")
|
self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, taskhash, unihash, True, self.cooker.collection.get_file_appends(taskfn), taskdepdata, False)) + b"</runtask>")
|
||||||
self.rq.worker[mc].process.stdin.flush()
|
self.rq.worker[mc].process.stdin.flush()
|
||||||
|
|
||||||
self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True)
|
self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user