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") | ||