mirror of
https://git.yoctoproject.org/poky
synced 2026-04-29 18:32:20 +02:00
bitbake: bitbake: cooker: add a new function to retrieve task signatures
adding a new command in cooker to compute and get task signatures this commit also add the associated command and event needed to get the signatures using tinfoil (Bitbake rev: 05c15162de90c41dad67e37a95ec9fdb440a7864) Signed-off-by: Julien Stephan <jstephan@baylibre.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
fc5a15cc64
commit
8eeb58cf4a
@@ -781,3 +781,9 @@ class CommandsAsync:
|
||||
bb.event.fire(bb.event.FindSigInfoResult(res), command.cooker.databuilder.mcdata[mc])
|
||||
command.finishAsyncCommand()
|
||||
findSigInfo.needcache = False
|
||||
|
||||
def getTaskSignatures(self, command, params):
|
||||
res = command.cooker.getTaskSignatures(params[0], params[1])
|
||||
bb.event.fire(bb.event.GetTaskSignatureResult(res), command.cooker.data)
|
||||
command.finishAsyncCommand()
|
||||
getTaskSignatures.needcache = True
|
||||
|
||||
@@ -1442,6 +1442,37 @@ class BBCooker:
|
||||
|
||||
self.idleCallBackRegister(buildFileIdle, rq)
|
||||
|
||||
def getTaskSignatures(self, target, tasks):
|
||||
sig = []
|
||||
getAllTaskSignatures = False
|
||||
|
||||
if not tasks:
|
||||
tasks = ["do_build"]
|
||||
getAllTaskSignatures = True
|
||||
|
||||
for task in tasks:
|
||||
taskdata, runlist = self.buildTaskData(target, task, self.configuration.halt)
|
||||
rq = bb.runqueue.RunQueue(self, self.data, self.recipecaches, taskdata, runlist)
|
||||
rq.rqdata.prepare()
|
||||
|
||||
for l in runlist:
|
||||
mc, pn, taskname, fn = l
|
||||
|
||||
taskdep = rq.rqdata.dataCaches[mc].task_deps[fn]
|
||||
for t in taskdep['tasks']:
|
||||
if t in taskdep['nostamp'] or "setscene" in t:
|
||||
continue
|
||||
tid = bb.runqueue.build_tid(mc, fn, t)
|
||||
|
||||
if t in task or getAllTaskSignatures:
|
||||
try:
|
||||
rq.rqdata.prepare_task_hash(tid)
|
||||
sig.append([pn, t, rq.rqdata.get_task_unihash(tid)])
|
||||
except KeyError:
|
||||
sig.append(self.getTaskSignatures(target, [t])[0])
|
||||
|
||||
return sig
|
||||
|
||||
def buildTargets(self, targets, task):
|
||||
"""
|
||||
Attempt to build the targets specified
|
||||
|
||||
@@ -857,6 +857,14 @@ class FindSigInfoResult(Event):
|
||||
Event.__init__(self)
|
||||
self.result = result
|
||||
|
||||
class GetTaskSignatureResult(Event):
|
||||
"""
|
||||
Event to return results from GetTaskSignatures command
|
||||
"""
|
||||
def __init__(self, sig):
|
||||
Event.__init__(self)
|
||||
self.sig = sig
|
||||
|
||||
class ParseError(Event):
|
||||
"""
|
||||
Event to indicate parse failed
|
||||
|
||||
Reference in New Issue
Block a user