summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/__init__.py')
-rw-r--r--bitbake/lib/bb/__init__.py32
1 files changed, 28 insertions, 4 deletions
diff --git a/bitbake/lib/bb/__init__.py b/bitbake/lib/bb/__init__.py
index 84a9051c13..15013540c2 100644
--- a/bitbake/lib/bb/__init__.py
+++ b/bitbake/lib/bb/__init__.py
@@ -9,12 +9,19 @@
9# SPDX-License-Identifier: GPL-2.0-only 9# SPDX-License-Identifier: GPL-2.0-only
10# 10#
11 11
12__version__ = "1.49.2" 12__version__ = "2.9.0"
13 13
14import sys 14import sys
15if sys.version_info < (3, 5, 0): 15if sys.version_info < (3, 8, 0):
16 raise RuntimeError("Sorry, python 3.5.0 or later is required for this version of bitbake") 16 raise RuntimeError("Sorry, python 3.8.0 or later is required for this version of bitbake")
17 17
18if sys.version_info < (3, 10, 0):
19 # With python 3.8 and 3.9, we see errors of "libgcc_s.so.1 must be installed for pthread_cancel to work"
20 # https://stackoverflow.com/questions/64797838/libgcc-s-so-1-must-be-installed-for-pthread-cancel-to-work
21 # https://bugs.ams1.psf.io/issue42888
22 # so ensure libgcc_s is loaded early on
23 import ctypes
24 libgcc_s = ctypes.CDLL('libgcc_s.so.1')
18 25
19class BBHandledException(Exception): 26class BBHandledException(Exception):
20 """ 27 """
@@ -58,8 +65,12 @@ class BBLoggerMixin(object):
58 if not bb.event.worker_pid: 65 if not bb.event.worker_pid:
59 if self.name in bb.msg.loggerDefaultDomains and loglevel > (bb.msg.loggerDefaultDomains[self.name]): 66 if self.name in bb.msg.loggerDefaultDomains and loglevel > (bb.msg.loggerDefaultDomains[self.name]):
60 return 67 return
61 if loglevel > bb.msg.loggerDefaultLogLevel: 68 if loglevel < bb.msg.loggerDefaultLogLevel:
62 return 69 return
70
71 if not isinstance(level, int) or not isinstance(msg, str):
72 mainlogger.warning("Invalid arguments in bbdebug: %s" % repr((level, msg,) + args))
73
63 return self.log(loglevel, msg, *args, **kwargs) 74 return self.log(loglevel, msg, *args, **kwargs)
64 75
65 def plain(self, msg, *args, **kwargs): 76 def plain(self, msg, *args, **kwargs):
@@ -71,6 +82,13 @@ class BBLoggerMixin(object):
71 def verbnote(self, msg, *args, **kwargs): 82 def verbnote(self, msg, *args, **kwargs):
72 return self.log(logging.INFO + 2, msg, *args, **kwargs) 83 return self.log(logging.INFO + 2, msg, *args, **kwargs)
73 84
85 def warnonce(self, msg, *args, **kwargs):
86 return self.log(logging.WARNING - 1, msg, *args, **kwargs)
87
88 def erroronce(self, msg, *args, **kwargs):
89 return self.log(logging.ERROR - 1, msg, *args, **kwargs)
90
91
74Logger = logging.getLoggerClass() 92Logger = logging.getLoggerClass()
75class BBLogger(Logger, BBLoggerMixin): 93class BBLogger(Logger, BBLoggerMixin):
76 def __init__(self, name, *args, **kwargs): 94 def __init__(self, name, *args, **kwargs):
@@ -157,9 +175,15 @@ def verbnote(*args):
157def warn(*args): 175def warn(*args):
158 mainlogger.warning(''.join(args)) 176 mainlogger.warning(''.join(args))
159 177
178def warnonce(*args):
179 mainlogger.warnonce(''.join(args))
180
160def error(*args, **kwargs): 181def error(*args, **kwargs):
161 mainlogger.error(''.join(args), extra=kwargs) 182 mainlogger.error(''.join(args), extra=kwargs)
162 183
184def erroronce(*args):
185 mainlogger.erroronce(''.join(args))
186
163def fatal(*args, **kwargs): 187def fatal(*args, **kwargs):
164 mainlogger.critical(''.join(args), extra=kwargs) 188 mainlogger.critical(''.join(args), extra=kwargs)
165 raise BBHandledException() 189 raise BBHandledException()