summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb
diff options
context:
space:
mode:
authorAlexandru DAMIAN <alexandru.damian@intel.com>2015-05-01 16:20:33 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-05-08 17:42:05 +0100
commit7759cd4931b2e7af19eea79dfac6738a92687665 (patch)
treee09e11a14b04e02e9902b76505cf3f651d577edc /bitbake/lib/bb
parent4a711028c709d4bb1421e1637ae3fb0ac404fb45 (diff)
downloadpoky-7759cd4931b2e7af19eea79dfac6738a92687665.tar.gz
bitbake: toasterui: proper exit code on toaster errors
This patch modifies the toasterui to properly return the exit code based on the errors found in the toaster itself. The upload event file API call will not delete event logs for which toasterui showed an error. This will facilitate debugging. Minor enhancement in the buildinfohelper to reduce the number of lookups on unknown layer objects (prevented testing of the patch). (Bitbake rev: 1ddd6a9e4280a4adf971132ff1fe7ec9b3252905) Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r--bitbake/lib/bb/ui/buildinfohelper.py5
-rw-r--r--bitbake/lib/bb/ui/toasterui.py11
2 files changed, 10 insertions, 6 deletions
diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/buildinfohelper.py
index 64bd94e5e8..647d663cb5 100644
--- a/bitbake/lib/bb/ui/buildinfohelper.py
+++ b/bitbake/lib/bb/ui/buildinfohelper.py
@@ -718,12 +718,15 @@ class BuildInfoHelper(object):
718 return lvo 718 return lvo
719 719
720 #if we get here, we didn't read layers correctly; dump whatever information we have on the error log 720 #if we get here, we didn't read layers correctly; dump whatever information we have on the error log
721 logger.error("Could not match layer version for recipe path %s : %s" % (path, self.orm_wrapper.layer_version_objects)) 721 logger.warn("Could not match layer version for recipe path %s : %s" % (path, self.orm_wrapper.layer_version_objects))
722 722
723 #mockup the new layer 723 #mockup the new layer
724 unknown_layer, created = Layer.objects.get_or_create(name="__FIXME__unidentified_layer", local_path="/", layer_index_url="") 724 unknown_layer, created = Layer.objects.get_or_create(name="__FIXME__unidentified_layer", local_path="/", layer_index_url="")
725 unknown_layer_version_obj, created = Layer_Version.objects.get_or_create(layer = unknown_layer, build = self.internal_state['build']) 725 unknown_layer_version_obj, created = Layer_Version.objects.get_or_create(layer = unknown_layer, build = self.internal_state['build'])
726 726
727 # append it so we don't run into this error again and again
728 self.orm_wrapper.layer_version_objects.append(unknown_layer_version_obj)
729
727 return unknown_layer_version_obj 730 return unknown_layer_version_obj
728 731
729 def _get_recipe_information_from_taskfile(self, taskfile): 732 def _get_recipe_information_from_taskfile(self, taskfile):
diff --git a/bitbake/lib/bb/ui/toasterui.py b/bitbake/lib/bb/ui/toasterui.py
index f0f853be14..6a7a1cd174 100644
--- a/bitbake/lib/bb/ui/toasterui.py
+++ b/bitbake/lib/bb/ui/toasterui.py
@@ -88,7 +88,7 @@ def main(server, eventHandler, params ):
88 88
89 if not params.observe_only: 89 if not params.observe_only:
90 logger.error("ToasterUI can only work in observer mode") 90 logger.error("ToasterUI can only work in observer mode")
91 return 91 return 1
92 92
93 93
94 main.shutdown = 0 94 main.shutdown = 0
@@ -144,7 +144,6 @@ def main(server, eventHandler, params ):
144 buildinfohelper.store_log_event(event) 144 buildinfohelper.store_log_event(event)
145 if event.levelno >= format.ERROR: 145 if event.levelno >= format.ERROR:
146 errors = errors + 1 146 errors = errors + 1
147 return_value = 1
148 elif event.levelno == format.WARNING: 147 elif event.levelno == format.WARNING:
149 warnings = warnings + 1 148 warnings = warnings + 1
150 # For "normal" logging conditions, don't show note logs from tasks 149 # For "normal" logging conditions, don't show note logs from tasks
@@ -158,7 +157,6 @@ def main(server, eventHandler, params ):
158 157
159 if isinstance(event, bb.build.TaskFailed): 158 if isinstance(event, bb.build.TaskFailed):
160 buildinfohelper.update_and_store_task(event) 159 buildinfohelper.update_and_store_task(event)
161 return_value = 1
162 logfile = event.logfile 160 logfile = event.logfile
163 if logfile and os.path.exists(logfile): 161 if logfile and os.path.exists(logfile):
164 bb.error("Logfile of failure stored in: %s" % logfile) 162 bb.error("Logfile of failure stored in: %s" % logfile)
@@ -188,7 +186,6 @@ def main(server, eventHandler, params ):
188 continue 186 continue
189 187
190 if isinstance(event, bb.event.NoProvider): 188 if isinstance(event, bb.event.NoProvider):
191 return_value = 1
192 errors = errors + 1 189 errors = errors + 1
193 if event._runtime: 190 if event._runtime:
194 r = "R" 191 r = "R"
@@ -316,6 +313,7 @@ def main(server, eventHandler, params ):
316 continue 313 continue
317 314
318 logger.error("Unknown event: %s", event) 315 logger.error("Unknown event: %s", event)
316 return_value += 1
319 317
320 except EnvironmentError as ioerror: 318 except EnvironmentError as ioerror:
321 # ignore interrupted io 319 # ignore interrupted io
@@ -344,10 +342,13 @@ def main(server, eventHandler, params ):
344 except Exception as ce: 342 except Exception as ce:
345 logger.error("CRITICAL - Failed to to save toaster exception to the database: %s" % str(ce)) 343 logger.error("CRITICAL - Failed to to save toaster exception to the database: %s" % str(ce))
346 344
345 # make sure we return with an error
346 return_value += 1
347 pass 347 pass
348 348
349 if interrupted: 349 if interrupted:
350 if return_value == 0: 350 if return_value == 0:
351 return_value = 1 351 return_value += 1
352 352
353 logger.warn("Return value is %d", return_value)
353 return return_value 354 return return_value