summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/ui/buildinfohelper.py28
1 files changed, 22 insertions, 6 deletions
diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/buildinfohelper.py
index f221daca5a..d7b526a2f2 100644
--- a/bitbake/lib/bb/ui/buildinfohelper.py
+++ b/bitbake/lib/bb/ui/buildinfohelper.py
@@ -105,7 +105,8 @@ class ORMWrapper(object):
105 ) 105 )
106 106
107 if must_exist and created: 107 if must_exist and created:
108 raise Exception("Task object created when expected to exist") 108 task_information['debug'] = "build id %d, recipe id %d" % (task_information['build'].pk, task_information['recipe'].pk)
109 raise Exception("Task object created when expected to exist", task_information)
109 110
110 for v in vars(task_object): 111 for v in vars(task_object):
111 if v in task_information.keys(): 112 if v in task_information.keys():
@@ -132,7 +133,7 @@ class ORMWrapper(object):
132 return task_object 133 return task_object
133 134
134 135
135 def get_update_recipe_object(self, recipe_information): 136 def get_update_recipe_object(self, recipe_information, must_exist = False):
136 assert 'layer_version' in recipe_information 137 assert 'layer_version' in recipe_information
137 assert 'file_path' in recipe_information 138 assert 'file_path' in recipe_information
138 139
@@ -140,6 +141,9 @@ class ORMWrapper(object):
140 layer_version=recipe_information['layer_version'], 141 layer_version=recipe_information['layer_version'],
141 file_path=recipe_information['file_path']) 142 file_path=recipe_information['file_path'])
142 143
144 if must_exist and created:
145 raise Exception("Recipe object created when expected to exist", recipe_information)
146
143 for v in vars(recipe_object): 147 for v in vars(recipe_object):
144 if v in recipe_information.keys(): 148 if v in recipe_information.keys():
145 vars(recipe_object)[v] = recipe_information[v] 149 vars(recipe_object)[v] = recipe_information[v]
@@ -539,7 +543,11 @@ class BuildInfoHelper(object):
539 assert localfilepath.startswith("/") 543 assert localfilepath.startswith("/")
540 544
541 recipe_information = self._get_recipe_information_from_taskfile(taskfile) 545 recipe_information = self._get_recipe_information_from_taskfile(taskfile)
542 recipe = self.orm_wrapper.get_update_recipe_object(recipe_information) 546 try:
547 recipe = self.orm_wrapper.get_update_recipe_object(recipe_information, True)
548 except Exception:
549 # we cannot find the recipe information for the task, we move on to the next task
550 continue
543 551
544 task_information = {} 552 task_information = {}
545 task_information['build'] = self.internal_state['build'] 553 task_information['build'] = self.internal_state['build']
@@ -555,10 +563,18 @@ class BuildInfoHelper(object):
555 assert localfilepath.startswith("/") 563 assert localfilepath.startswith("/")
556 564
557 identifier = event.taskfile + ":" + event.taskname 565 identifier = event.taskfile + ":" + event.taskname
558 assert identifier in self.internal_state['taskdata'] 566 if not identifier in self.internal_state['taskdata']:
567 if isinstance(event, bb.build.TaskBase):
568 # we do a bit of guessing
569 candidates = [x for x in self.internal_state['taskdata'].keys() if x.endswith(identifier)]
570 if len(candidates) == 1:
571 identifier = candidates[0]
559 572
560 recipe_information = self._get_recipe_information_from_taskfile(event.taskfile) 573 assert identifier in self.internal_state['taskdata']
561 recipe = self.orm_wrapper.get_update_recipe_object(recipe_information) 574 identifierlist = identifier.split(":")
575 realtaskfile = ":".join(identifierlist[0:len(identifierlist)-1])
576 recipe_information = self._get_recipe_information_from_taskfile(realtaskfile)
577 recipe = self.orm_wrapper.get_update_recipe_object(recipe_information, True)
562 task_information = self._get_task_information(event,recipe) 578 task_information = self._get_task_information(event,recipe)
563 579
564 task_information['start_time'] = self.internal_state['taskdata'][identifier]['start_time'] 580 task_information['start_time'] = self.internal_state['taskdata'][identifier]['start_time']