diff options
Diffstat (limited to 'bitbake/lib')
-rw-r--r-- | bitbake/lib/bb/ui/buildinfohelper.py | 28 |
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'] |