1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-31 00:39:46 +00:00

bitbake: build, toaster: record proper task type

Bitbake tasks may be of type 'python' or 'shell',
or they may not be executed at all, which is record
as task type 'noexec'.

In order to record proper task type, this patch:

* creates no exec task type as the default value in
the toaster model definition

* adds full task flags to the bb.build.TaskStarted event
in build.py

* if the task actually starts, the toaster ui will
record the type of the task as either 'python' or 'shell'
based on the task flags.

[YOCTO #5073]
[YOCTO #5075]
[YOCTO #5327]

(Bitbake rev: 6648c57e6d369fc009ea3a9fe939def5d2c67bf5)

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexandru DAMIAN
2013-11-01 15:58:31 +00:00
committed by Richard Purdie
parent f6847b0cd2
commit e1aebfe018
3 changed files with 16 additions and 6 deletions
+6 -1
View File
@@ -91,6 +91,9 @@ class TaskBase(event.Event):
class TaskStarted(TaskBase): class TaskStarted(TaskBase):
"""Task execution started""" """Task execution started"""
def __init__(self, t, logfile, taskflags, d):
super(TaskStarted, self).__init__(t, logfile, d)
self.taskflags = taskflags
class TaskSucceeded(TaskBase): class TaskSucceeded(TaskBase):
"""Task execution completed""" """Task execution completed"""
@@ -422,7 +425,9 @@ def _exec_task(fn, task, d, quieterr):
localdata.setVar('BB_LOGFILE', logfn) localdata.setVar('BB_LOGFILE', logfn)
localdata.setVar('BB_RUNTASK', task) localdata.setVar('BB_RUNTASK', task)
event.fire(TaskStarted(task, logfn, localdata), localdata) flags = localdata.getVarFlags(task)
event.fire(TaskStarted(task, logfn, flags, localdata), localdata)
try: try:
for func in (prefuncs or '').split(): for func in (prefuncs or '').split():
exec_func(func, localdata) exec_func(func, localdata)
+5 -2
View File
@@ -483,6 +483,8 @@ class BuildInfoHelper(object):
task_information['outcome'] = Task.OUTCOME_EXISTING task_information['outcome'] = Task.OUTCOME_EXISTING
else: else:
task_information['task_executed'] = True task_information['task_executed'] = True
if 'noexec' in vars(event) and event.noexec == True:
task_information['script_type'] = Task.CODING_NOEXEC
self.task_order += 1 self.task_order += 1
task_information['order'] = self.task_order task_information['order'] = self.task_order
@@ -506,8 +508,9 @@ class BuildInfoHelper(object):
if '_message' in vars(event): if '_message' in vars(event):
task_information['message'] = event._message task_information['message'] = event._message
if 'ispython' in vars(event): if 'taskflags' in vars(event):
if event.ispython: # with TaskStarted, we get even more information
if 'python' in event.taskflags.keys() and event.taskflags['python'] == '1':
task_information['script_type'] = Task.CODING_PYTHON task_information['script_type'] = Task.CODING_PYTHON
else: else:
task_information['script_type'] = Task.CODING_SHELL task_information['script_type'] = Task.CODING_SHELL
+5 -3
View File
@@ -74,10 +74,12 @@ class Task(models.Model):
(SSTATE_RESTORED, 'Restored'), # succesfully restored (SSTATE_RESTORED, 'Restored'), # succesfully restored
) )
CODING_PYTHON = 0 CODING_NOEXEC = 0
CODING_SHELL = 1 CODING_PYTHON = 1
CODING_SHELL = 2
TASK_CODING = ( TASK_CODING = (
(CODING_NOEXEC, 'NoExec'),
(CODING_PYTHON, 'Python'), (CODING_PYTHON, 'Python'),
(CODING_SHELL, 'Shell'), (CODING_SHELL, 'Shell'),
) )
@@ -108,7 +110,7 @@ class Task(models.Model):
task_name = models.CharField(max_length=100) task_name = models.CharField(max_length=100)
source_url = models.FilePathField(max_length=255, blank=True) source_url = models.FilePathField(max_length=255, blank=True)
work_directory = models.FilePathField(max_length=255, blank=True) work_directory = models.FilePathField(max_length=255, blank=True)
script_type = models.IntegerField(choices=TASK_CODING, default=CODING_PYTHON) script_type = models.IntegerField(choices=TASK_CODING, default=CODING_NOEXEC)
line_number = models.IntegerField(default=0) line_number = models.IntegerField(default=0)
disk_io = models.IntegerField(null=True) disk_io = models.IntegerField(null=True)
cpu_usage = models.DecimalField(max_digits=6, decimal_places=2, null=True) cpu_usage = models.DecimalField(max_digits=6, decimal_places=2, null=True)