summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r--bitbake/lib/bb/ui/buildinfohelper.py15
-rw-r--r--bitbake/lib/bb/ui/toasterui.py7
2 files changed, 17 insertions, 5 deletions
diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/buildinfohelper.py
index a907a0337b..a3401ceda9 100644
--- a/bitbake/lib/bb/ui/buildinfohelper.py
+++ b/bitbake/lib/bb/ui/buildinfohelper.py
@@ -381,7 +381,7 @@ class ORMWrapper(object):
381 searchname = pkgpnmap[p]['OPKGN'] 381 searchname = pkgpnmap[p]['OPKGN']
382 382
383 packagedict[p]['object'], created = Package.objects.get_or_create( build = build_obj, name = searchname ) 383 packagedict[p]['object'], created = Package.objects.get_or_create( build = build_obj, name = searchname )
384 if created or package[p]['object'].size == -1: # save the data anyway we can, not just if it was not created here; bug [YOCTO #6887] 384 if created or packagedict[p]['object'].size == -1: # save the data anyway we can, not just if it was not created here; bug [YOCTO #6887]
385 # fill in everything we can from the runtime-reverse package data 385 # fill in everything we can from the runtime-reverse package data
386 try: 386 try:
387 packagedict[p]['object'].recipe = recipes[pkgpnmap[p]['PN']] 387 packagedict[p]['object'].recipe = recipes[pkgpnmap[p]['PN']]
@@ -462,7 +462,7 @@ class ORMWrapper(object):
462 if 'OPKGN' in package_info.keys(): 462 if 'OPKGN' in package_info.keys():
463 pname = package_info['OPKGN'] 463 pname = package_info['OPKGN']
464 464
465 bp_object = Package.objects.create( build = build_obj, 465 bp_object, created = Package.objects.get_or_create( build = build_obj,
466 name = pname ) 466 name = pname )
467 467
468 bp_object.installed_name = package_info['PKG'] 468 bp_object.installed_name = package_info['PKG']
@@ -1043,6 +1043,15 @@ class BuildInfoHelper(object):
1043 mockevent.lineno = -1 1043 mockevent.lineno = -1
1044 self.store_log_event(mockevent) 1044 self.store_log_event(mockevent)
1045 1045
1046 def store_log_exception(self, text, backtrace = ""):
1047 mockevent = MockEvent()
1048 mockevent.levelno = -1
1049 mockevent.msg = text
1050 mockevent.pathname = backtrace
1051 mockevent.lineno = -1
1052 self.store_log_event(mockevent)
1053
1054
1046 def store_log_event(self, event): 1055 def store_log_event(self, event):
1047 if event.levelno < format.WARNING: 1056 if event.levelno < format.WARNING:
1048 return 1057 return
@@ -1078,6 +1087,8 @@ class BuildInfoHelper(object):
1078 log_information['level'] = LogMessage.ERROR 1087 log_information['level'] = LogMessage.ERROR
1079 elif event.levelno == format.WARNING: 1088 elif event.levelno == format.WARNING:
1080 log_information['level'] = LogMessage.WARNING 1089 log_information['level'] = LogMessage.WARNING
1090 elif event.levelno == -1: # toaster self-logging
1091 log_information['level'] = -1
1081 else: 1092 else:
1082 log_information['level'] = LogMessage.INFO 1093 log_information['level'] = LogMessage.INFO
1083 1094
diff --git a/bitbake/lib/bb/ui/toasterui.py b/bitbake/lib/bb/ui/toasterui.py
index b9e8029da1..9bd04df1c6 100644
--- a/bitbake/lib/bb/ui/toasterui.py
+++ b/bitbake/lib/bb/ui/toasterui.py
@@ -299,12 +299,13 @@ def main(server, eventHandler, params ):
299 logger.error(e) 299 logger.error(e)
300 import traceback 300 import traceback
301 exception_data = traceback.format_exc() 301 exception_data = traceback.format_exc()
302 print(exception_data)
302 303
303 # save them to database, if possible; if it fails, we already logged to console. 304 # save them to database, if possible; if it fails, we already logged to console.
304 try: 305 try:
305 buildinfohelper.store_log_error("%s\n%s" % (str(e), exception_data)) 306 buildinfohelper.store_log_exception("%s\n%s" % (str(e), exception_data))
306 except Exception: 307 except Exception as ce:
307 pass 308 print("CRITICAL: failed to to save toaster exception to the database: %s" % str(ce))
308 309
309 pass 310 pass
310 311