<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Sep 16, 2013 at 3:24 PM, Richard Purdie <span dir="ltr"><<a href="mailto:richard.purdie@linuxfoundation.org" target="_blank">richard.purdie@linuxfoundation.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Mon, 2013-09-16 at 14:33 +0100, Alex DAMIAN wrote:<br>
> From: Alexandru DAMIAN <<a href="mailto:alexandru.damian@intel.com">alexandru.damian@intel.com</a>><br>
><br>
> Adding a runQueueTaskSkipped to notify all listeners<br>
> about the tasks that are not run either because they<br>
> are set-scened or they don't need an update (timestamps<br>
> are ok)<br>
><br>
> Adds RunQueueData functions to get the task name and task<br>
> file for usage with the runQueue* events.<br>
><br>
> Signed-off-by: Alexandru DAMIAN <<a href="mailto:alexandru.damian@intel.com">alexandru.damian@intel.com</a>><br>
> ---<br>
> bitbake/lib/bb/build.py | 3 +++<br>
> bitbake/lib/bb/runqueue.py | 27 ++++++++++++++++++++++++---<br>
> 2 files changed, 27 insertions(+), 3 deletions(-)<br>
><br>
> diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py<br>
> index a53aba9..1265bdc 100644<br>
> --- a/bitbake/lib/bb/build.py<br>
> +++ b/bitbake/lib/bb/build.py<br>
> @@ -72,6 +72,9 @@ class TaskBase(event.Event):<br>
> def __init__(self, t, d ):<br>
> self._task = t<br>
> self._package = d.getVar("PF", True)<br>
> + self._file = d.getVar("FILE", True)<br>
> + self.taskfile = self._file<br>
> + self.taskname = self._task<br>
> event.Event.__init__(self)<br>
> self._message = "recipe %s: task %s: %s" % (d.getVar("PF", True), t, self.getDisplayName())<br>
><br>
> diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py<br>
> index aa2f147..2ab4405 100644<br>
> --- a/bitbake/lib/bb/runqueue.py<br>
> +++ b/bitbake/lib/bb/runqueue.py<br>
> @@ -217,6 +217,12 @@ class RunQueueData:<br>
> ret.extend([nam])<br>
> return ret<br>
><br>
> + def get_task_name(self, task):<br>
> + return self.runq_task[task]<br>
> +<br>
> + def get_task_file(self, task):<br>
> + return self.taskData.fn_index[self.runq_fnid[task]]<br>
> +<br>
> def get_user_idstring(self, task, task_name_suffix = ""):<br>
> fn = self.taskData.fn_index[self.runq_fnid[task]]<br>
> taskname = self.runq_task[task] + task_name_suffix<br>
> @@ -1328,9 +1334,10 @@ class RunQueueExecuteTasks(RunQueueExecute):<br>
> if self.rqdata.taskData.abort:<br>
> self.rq.state = runQueueCleanUp<br>
><br>
> - def task_skip(self, task):<br>
> + def task_skip(self, task, skip_reason = ""):<br>
> self.runq_running[task] = 1<br>
> self.runq_buildable[task] = 1<br>
> + bb.event.fire(runQueueTaskSkipped(task, self.stats, self.rq, skip_reason), self.cfgData)<br>
> self.task_completeoutright(task)<br>
> self.stats.taskCompleted()<br>
> self.stats.taskSkipped()<br>
> @@ -1355,13 +1362,13 @@ class RunQueueExecuteTasks(RunQueueExecute):<br>
> if task in self.rq.scenequeue_covered:<br>
> logger.debug(2, "Setscene covered task %s (%s)", task,<br>
> self.rqdata.get_user_idstring(task))<br>
> - self.task_skip(task)<br>
> + self.task_skip(task, "covered")<br>
> return True<br>
><br>
> if self.rq.check_stamp_task(task, taskname, cache=self.stampcache):<br>
> logger.debug(2, "Stamp current task %s (%s)", task,<br>
> self.rqdata.get_user_idstring(task))<br>
> - self.task_skip(task)<br>
> + self.task_skip(task, "existing")<br>
> return True<br>
><br>
> taskdep = self.rqdata.dataCache.task_deps[fn]<br>
> @@ -1783,6 +1790,8 @@ class runQueueEvent(bb.event.Event):<br>
> def __init__(self, task, stats, rq):<br>
> self.taskid = task<br>
> self.taskstring = rq.rqdata.get_user_idstring(task)<br>
> + self.taskname = rq.rqdata.get_task_name(task)<br>
> + self.taskfile = rq.rqdata.get_task_file(task)<br>
> self.stats = stats.copy()<br>
> bb.event.Event.__init__(self)<br>
><br>
> @@ -1794,6 +1803,8 @@ class sceneQueueEvent(runQueueEvent):<br>
> runQueueEvent.__init__(self, task, stats, rq)<br>
> realtask = rq.rqdata.runq_setscene[task]<br>
> self.taskstring = rq.rqdata.get_user_idstring(realtask, "_setscene")<br>
> + self.taskname = rq.rqdata.get_task_name(realtask) + "_setscene"<br>
> + self.taskfile = rq.rqdata.get_task_file(realtask)<br>
><br>
> class runQueueTaskStarted(runQueueEvent):<br>
> """<br>
> @@ -1837,6 +1848,16 @@ class sceneQueueTaskCompleted(sceneQueueEvent):<br>
> Event notifing a setscene task completed<br>
> """<br>
><br>
> +class runQueueTaskSkipped(runQueueEvent):<br>
> + """<br>
> + Event notifing a task was skipped<br>
> + """<br>
> + def __init__(self, task, stats, rq, skip_reason):<br>
> + runQueueEvent.__init__(self, task, stats, rq)<br>
> + self._file = rq.rqdata.get_task_file(task)<br>
> + self._task = rq.rqdata.get_task_name(task)<br>
> + self._skip = skip_reason<br>
> +<br>
> class runQueuePipe():<br>
> """<br>
> Abstraction for a pipe between a worker thread and the server<br>
<br>
<br>
</div></div>Please rebase this one off<br>
<a href="http://git.yoctoproject.org/cgit.cgi/poky/commit/?h=master-next&id=39c70d0ad00afa05d343dc19aa557a092db7c963" target="_blank">http://git.yoctoproject.org/cgit.cgi/poky/commit/?h=master-next&id=39c70d0ad00afa05d343dc19aa557a092db7c963</a><br>
<br>
since we should do one thing in a commit, not three. I renamed _skip -><br>
reason since its not internal and its a skip event, we know this, the<br>
field is the reason.<br>
<br>
You need to separate out the runQueueEvent changes from the TaskBase<br>
changes.<br>
<br>
Why add self._file to TaskBase? Surely just taskfile would be enough?<br>
The _ is meant to indicate internal use only and aren't the above events<br>
inconsistent with each other?<br></blockquote><div><br></div><div>[Alex] This is the idea - I actually tried to make TaskBase-derived events consistent with runQueueEvents in terms of class fields, so the code that reads them is easier to follow - I just have to look up for the same named field regardless of the event type.</div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Cheers,<br>
<br>
Richard<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Alex Damian<div>Yocto Project<br></div><div>SSG / OTC </div></div>
</div></div>