]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
bitbake: toasterui: task data structure in toasterui
authorAlexandru DAMIAN <alexandru.damian@intel.com>
Tue, 18 Feb 2014 18:41:47 +0000 (18:41 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sun, 9 Mar 2014 19:23:58 +0000 (12:23 -0700)
We update the structure used to hold interm task data,
before it is written to the database, to lower the changes
of key collision.

This will also lead to a cleaner data structure and easier
inspection.

(Bitbake rev: 49cb9f543526a161bc4c097f94422ea08b491ef9)

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
bitbake/lib/bb/ui/buildinfohelper.py

index 54f6c4ebe8372374852ef08971e7d1c70d8da352..160cb037439b38bfff1820cf26b7d807b8082704 100644 (file)
@@ -308,6 +308,7 @@ class BuildInfoHelper(object):
     def __init__(self, server, has_build_history = False):
         self._configure_django()
         self.internal_state = {}
+        self.internal_state['taskdata'] = {}
         self.task_order = 0
         self.server = server
         self.orm_wrapper = ORMWrapper()
@@ -444,7 +445,7 @@ class BuildInfoHelper(object):
             self.orm_wrapper.update_build_object(self.internal_state['build'], errors, warnings, taskfailures)
 
     def store_started_task(self, event):
-        identifier = event.taskfile + event.taskname
+        identifier = event.taskfile.split(":")[-1] + ":" + event.taskname
 
         recipe_information = self._get_recipe_information_from_taskfile(event.taskfile)
         recipe = self.orm_wrapper.get_update_recipe_object(recipe_information)
@@ -472,7 +473,7 @@ class BuildInfoHelper(object):
 
         task_obj = self.orm_wrapper.get_update_task_object(task_information)
 
-        self.internal_state[identifier] = {
+        self.internal_state['taskdata'][identifier] = {
                         'start_time': datetime.datetime.now(),
                         'outcome': task_information['outcome'],
                     }
@@ -492,13 +493,15 @@ class BuildInfoHelper(object):
             task_obj = self.orm_wrapper.get_update_task_object(task_information)
 
     def update_and_store_task(self, event):
-        identifier = event.taskfile + event.taskname
+        identifier = event.taskfile.split(":")[-1] + ":" + event.taskname
+        assert identifier in self.internal_state['taskdata']
+
         recipe_information = self._get_recipe_information_from_taskfile(event.taskfile)
         recipe = self.orm_wrapper.get_update_recipe_object(recipe_information)
         task_information = self._get_task_information(event,recipe)
 
-        task_information['start_time'] = self.internal_state[identifier]['start_time']
-        task_information['outcome'] = self.internal_state[identifier]['outcome']
+        task_information['start_time'] = self.internal_state['taskdata'][identifier]['start_time']
+        task_information['outcome'] = self.internal_state['taskdata'][identifier]['outcome']
 
         if 'logfile' in vars(event):
             task_information['logfile'] = event.logfile
@@ -516,11 +519,11 @@ class BuildInfoHelper(object):
         if task_information['outcome'] == Task.OUTCOME_NA:
             if isinstance(event, (bb.runqueue.runQueueTaskCompleted, bb.runqueue.sceneQueueTaskCompleted)):
                 task_information['outcome'] = Task.OUTCOME_SUCCESS
-                del self.internal_state[identifier]
+                del self.internal_state['taskdata'][identifier]
 
             if isinstance(event, (bb.runqueue.runQueueTaskFailed, bb.runqueue.sceneQueueTaskFailed)):
                 task_information['outcome'] = Task.OUTCOME_FAILED
-                del self.internal_state[identifier]
+                del self.internal_state['taskdata'][identifier]
 
         self.orm_wrapper.get_update_task_object(task_information)