summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru DAMIAN <alexandru.damian@intel.com>2013-11-01 15:58:31 (GMT)
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-11-04 10:53:24 (GMT)
commite1aebfe0180af4d85b85d42b5508aaf52f2fdccb (patch)
tree688b8f62debe27430f785f3673d2c45f74395db4
parentf6847b0cd2bca53147ff74a40ba2a913bc0f7eb0 (diff)
downloadpoky-e1aebfe0180af4d85b85d42b5508aaf52f2fdccb.tar.gz
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>
-rw-r--r--bitbake/lib/bb/build.py7
-rw-r--r--bitbake/lib/bb/ui/buildinfohelper.py7
-rw-r--r--bitbake/lib/toaster/orm/models.py8
3 files changed, 16 insertions, 6 deletions
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py
index 2e49a09..f9aca42 100644
--- a/bitbake/lib/bb/build.py
+++ b/bitbake/lib/bb/build.py
@@ -91,6 +91,9 @@ class TaskBase(event.Event):
91 91
92class TaskStarted(TaskBase): 92class TaskStarted(TaskBase):
93 """Task execution started""" 93 """Task execution started"""
94 def __init__(self, t, logfile, taskflags, d):
95 super(TaskStarted, self).__init__(t, logfile, d)
96 self.taskflags = taskflags
94 97
95class TaskSucceeded(TaskBase): 98class TaskSucceeded(TaskBase):
96 """Task execution completed""" 99 """Task execution completed"""
@@ -422,7 +425,9 @@ def _exec_task(fn, task, d, quieterr):
422 localdata.setVar('BB_LOGFILE', logfn) 425 localdata.setVar('BB_LOGFILE', logfn)
423 localdata.setVar('BB_RUNTASK', task) 426 localdata.setVar('BB_RUNTASK', task)
424 427
425 event.fire(TaskStarted(task, logfn, localdata), localdata) 428 flags = localdata.getVarFlags(task)
429
430 event.fire(TaskStarted(task, logfn, flags, localdata), localdata)
426 try: 431 try:
427 for func in (prefuncs or '').split(): 432 for func in (prefuncs or '').split():
428 exec_func(func, localdata) 433 exec_func(func, localdata)
diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/buildinfohelper.py
index 5881d13..4996b42 100644
--- a/bitbake/lib/bb/ui/buildinfohelper.py
+++ b/bitbake/lib/bb/ui/buildinfohelper.py
@@ -483,6 +483,8 @@ class BuildInfoHelper(object):
483 task_information['outcome'] = Task.OUTCOME_EXISTING 483 task_information['outcome'] = Task.OUTCOME_EXISTING
484 else: 484 else:
485 task_information['task_executed'] = True 485 task_information['task_executed'] = True
486 if 'noexec' in vars(event) and event.noexec == True:
487 task_information['script_type'] = Task.CODING_NOEXEC
486 488
487 self.task_order += 1 489 self.task_order += 1
488 task_information['order'] = self.task_order 490 task_information['order'] = self.task_order
@@ -506,8 +508,9 @@ class BuildInfoHelper(object):
506 if '_message' in vars(event): 508 if '_message' in vars(event):
507 task_information['message'] = event._message 509 task_information['message'] = event._message
508 510
509 if 'ispython' in vars(event): 511 if 'taskflags' in vars(event):
510 if event.ispython: 512 # with TaskStarted, we get even more information
513 if 'python' in event.taskflags.keys() and event.taskflags['python'] == '1':
511 task_information['script_type'] = Task.CODING_PYTHON 514 task_information['script_type'] = Task.CODING_PYTHON
512 else: 515 else:
513 task_information['script_type'] = Task.CODING_SHELL 516 task_information['script_type'] = Task.CODING_SHELL
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index cb6581c..53b9e3a 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -74,10 +74,12 @@ class Task(models.Model):
74 (SSTATE_RESTORED, 'Restored'), # succesfully restored 74 (SSTATE_RESTORED, 'Restored'), # succesfully restored
75 ) 75 )
76 76
77 CODING_PYTHON = 0 77 CODING_NOEXEC = 0
78 CODING_SHELL = 1 78 CODING_PYTHON = 1
79 CODING_SHELL = 2
79 80
80 TASK_CODING = ( 81 TASK_CODING = (
82 (CODING_NOEXEC, 'NoExec'),
81 (CODING_PYTHON, 'Python'), 83 (CODING_PYTHON, 'Python'),
82 (CODING_SHELL, 'Shell'), 84 (CODING_SHELL, 'Shell'),
83 ) 85 )
@@ -108,7 +110,7 @@ class Task(models.Model):
108 task_name = models.CharField(max_length=100) 110 task_name = models.CharField(max_length=100)
109 source_url = models.FilePathField(max_length=255, blank=True) 111 source_url = models.FilePathField(max_length=255, blank=True)
110 work_directory = models.FilePathField(max_length=255, blank=True) 112 work_directory = models.FilePathField(max_length=255, blank=True)
111 script_type = models.IntegerField(choices=TASK_CODING, default=CODING_PYTHON) 113 script_type = models.IntegerField(choices=TASK_CODING, default=CODING_NOEXEC)
112 line_number = models.IntegerField(default=0) 114 line_number = models.IntegerField(default=0)
113 disk_io = models.IntegerField(null=True) 115 disk_io = models.IntegerField(null=True)
114 cpu_usage = models.DecimalField(max_digits=6, decimal_places=2, null=True) 116 cpu_usage = models.DecimalField(max_digits=6, decimal_places=2, null=True)