diff options
author | Alexandru DAMIAN <alexandru.damian@intel.com> | 2013-11-01 15:58:31 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-11-04 09:36:22 +0000 |
commit | 85b9194171a69fd7f161943f88df9c9f625cb4c7 (patch) | |
tree | bb4c12f2b7b218ab7ea56146c4fed452468e130d /bitbake/lib | |
parent | a670859103dab0b28e52a4d91f476d2bccbc85ac (diff) | |
download | poky-85b9194171a69fd7f161943f88df9c9f625cb4c7.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>
Diffstat (limited to 'bitbake/lib')
-rw-r--r-- | bitbake/lib/bb/build.py | 7 | ||||
-rw-r--r-- | bitbake/lib/bb/ui/buildinfohelper.py | 7 | ||||
-rw-r--r-- | bitbake/lib/toaster/orm/models.py | 8 |
3 files changed, 16 insertions, 6 deletions
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py index 2e49a09365..f9aca42b37 100644 --- a/bitbake/lib/bb/build.py +++ b/bitbake/lib/bb/build.py | |||
@@ -91,6 +91,9 @@ class TaskBase(event.Event): | |||
91 | 91 | ||
92 | class TaskStarted(TaskBase): | 92 | class 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 | ||
95 | class TaskSucceeded(TaskBase): | 98 | class 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 5881d136c2..4996b4235d 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 cb6581c9e1..53b9e3a024 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) |