diff options
| -rwxr-xr-x | bitbake/bin/toaster-eventreplay | 13 | ||||
| -rw-r--r-- | bitbake/lib/bb/ui/buildinfohelper.py | 5 | ||||
| -rw-r--r-- | bitbake/lib/bb/ui/toasterui.py | 11 | ||||
| -rw-r--r-- | bitbake/lib/toaster/orm/views.py | 8 |
4 files changed, 19 insertions, 18 deletions
diff --git a/bitbake/bin/toaster-eventreplay b/bitbake/bin/toaster-eventreplay index 624829aea0..615a7aed15 100755 --- a/bitbake/bin/toaster-eventreplay +++ b/bitbake/bin/toaster-eventreplay | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | # as a build eventlog, and the ToasterUI is used to process events in the file | 26 | # as a build eventlog, and the ToasterUI is used to process events in the file |
| 27 | # and log data in the database | 27 | # and log data in the database |
| 28 | 28 | ||
| 29 | from __future__ import print_function | ||
| 29 | import os | 30 | import os |
| 30 | import sys, logging | 31 | import sys, logging |
| 31 | 32 | ||
| @@ -39,12 +40,6 @@ from bb.ui import toasterui | |||
| 39 | import sys | 40 | import sys |
| 40 | import logging | 41 | import logging |
| 41 | 42 | ||
| 42 | logger = logging.getLogger(__name__) | ||
| 43 | console = logging.StreamHandler(sys.stdout) | ||
| 44 | format_str = "%(levelname)s: %(message)s" | ||
| 45 | logging.basicConfig(format=format_str) | ||
| 46 | |||
| 47 | |||
| 48 | import json, pickle | 43 | import json, pickle |
| 49 | 44 | ||
| 50 | 45 | ||
| @@ -168,12 +163,12 @@ class MockConfigParameters(): | |||
| 168 | # run toaster ui on our mock bitbake class | 163 | # run toaster ui on our mock bitbake class |
| 169 | if __name__ == "__main__": | 164 | if __name__ == "__main__": |
| 170 | if len(sys.argv) < 2: | 165 | if len(sys.argv) < 2: |
| 171 | logger.error("Usage: %s event.log " % sys.argv[0]) | 166 | print("Usage: %s event.log " % sys.argv[0]) |
| 172 | sys.exit(1) | 167 | sys.exit(1) |
| 173 | 168 | ||
| 174 | file_name = sys.argv[-1] | 169 | file_name = sys.argv[-1] |
| 175 | mock_connection = FileReadEventsServerConnection(file_name) | 170 | mock_connection = FileReadEventsServerConnection(file_name) |
| 176 | configParams = MockConfigParameters() | 171 | configParams = MockConfigParameters() |
| 177 | 172 | ||
| 178 | # run the main program | 173 | # run the main program and set exit code to the returned value |
| 179 | toasterui.main(mock_connection.connection, mock_connection.events, configParams) | 174 | sys.exit(toasterui.main(mock_connection.connection, mock_connection.events, configParams)) |
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 |
diff --git a/bitbake/lib/toaster/orm/views.py b/bitbake/lib/toaster/orm/views.py index 97d792b99e..61d14f9375 100644 --- a/bitbake/lib/toaster/orm/views.py +++ b/bitbake/lib/toaster/orm/views.py | |||
| @@ -55,6 +55,8 @@ def eventfile(request): | |||
| 55 | scriptenv["DATABASE_URL"] = toastermain.settings.getDATABASE_URL() | 55 | scriptenv["DATABASE_URL"] = toastermain.settings.getDATABASE_URL() |
| 56 | 56 | ||
| 57 | # run the data loading process and return the results | 57 | # run the data loading process and return the results |
| 58 | (out, err) = subprocess.Popen([import_script, abstemppath], stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=scriptenv).communicate() | 58 | importer = subprocess.Popen([import_script, abstemppath], stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=scriptenv) |
| 59 | os.remove(abstemppath) | 59 | (out, err) = importer.communicate() |
| 60 | return HttpResponse("%s\n%s" % (out, err), content_type="text/plain;utf8") | 60 | if importer.returncode == 0: |
| 61 | os.remove(abstemppath) | ||
| 62 | return HttpResponse("== Retval %d\n== STDOUT\n%s\n\n== STDERR\n%s" % (importer.returncode, out, err), content_type="text/plain;utf8") | ||
