diff options
Diffstat (limited to 'bitbake/lib/bb/__init__.py')
-rw-r--r-- | bitbake/lib/bb/__init__.py | 115 |
1 files changed, 85 insertions, 30 deletions
diff --git a/bitbake/lib/bb/__init__.py b/bitbake/lib/bb/__init__.py index 768cce84e9..bf4c54d829 100644 --- a/bitbake/lib/bb/__init__.py +++ b/bitbake/lib/bb/__init__.py | |||
@@ -9,11 +9,11 @@ | |||
9 | # SPDX-License-Identifier: GPL-2.0-only | 9 | # SPDX-License-Identifier: GPL-2.0-only |
10 | # | 10 | # |
11 | 11 | ||
12 | __version__ = "2.7.3" | 12 | __version__ = "2.15.1" |
13 | 13 | ||
14 | import sys | 14 | import sys |
15 | if sys.version_info < (3, 8, 0): | 15 | if sys.version_info < (3, 9, 0): |
16 | raise RuntimeError("Sorry, python 3.8.0 or later is required for this version of bitbake") | 16 | raise RuntimeError("Sorry, python 3.9.0 or later is required for this version of bitbake") |
17 | 17 | ||
18 | if sys.version_info < (3, 10, 0): | 18 | if 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" | 19 | # With python 3.8 and 3.9, we see errors of "libgcc_s.so.1 must be installed for pthread_cancel to work" |
@@ -36,6 +36,7 @@ class BBHandledException(Exception): | |||
36 | 36 | ||
37 | import os | 37 | import os |
38 | import logging | 38 | import logging |
39 | from collections import namedtuple | ||
39 | 40 | ||
40 | 41 | ||
41 | class NullHandler(logging.Handler): | 42 | class NullHandler(logging.Handler): |
@@ -103,26 +104,6 @@ class BBLoggerAdapter(logging.LoggerAdapter, BBLoggerMixin): | |||
103 | self.setup_bblogger(logger.name) | 104 | self.setup_bblogger(logger.name) |
104 | super().__init__(logger, *args, **kwargs) | 105 | super().__init__(logger, *args, **kwargs) |
105 | 106 | ||
106 | if sys.version_info < (3, 6): | ||
107 | # These properties were added in Python 3.6. Add them in older versions | ||
108 | # for compatibility | ||
109 | @property | ||
110 | def manager(self): | ||
111 | return self.logger.manager | ||
112 | |||
113 | @manager.setter | ||
114 | def manager(self, value): | ||
115 | self.logger.manager = value | ||
116 | |||
117 | @property | ||
118 | def name(self): | ||
119 | return self.logger.name | ||
120 | |||
121 | def __repr__(self): | ||
122 | logger = self.logger | ||
123 | level = logger.getLevelName(logger.getEffectiveLevel()) | ||
124 | return '<%s %s (%s)>' % (self.__class__.__name__, logger.name, level) | ||
125 | |||
126 | logging.LoggerAdapter = BBLoggerAdapter | 107 | logging.LoggerAdapter = BBLoggerAdapter |
127 | 108 | ||
128 | logger = logging.getLogger("BitBake") | 109 | logger = logging.getLogger("BitBake") |
@@ -148,9 +129,25 @@ sys.modules['bb.fetch'] = sys.modules['bb.fetch2'] | |||
148 | 129 | ||
149 | # Messaging convenience functions | 130 | # Messaging convenience functions |
150 | def plain(*args): | 131 | def plain(*args): |
132 | """ | ||
133 | Prints a message at "plain" level (higher level than a ``bb.note()``). | ||
134 | |||
135 | Arguments: | ||
136 | |||
137 | - ``args``: one or more strings to print. | ||
138 | """ | ||
151 | mainlogger.plain(''.join(args)) | 139 | mainlogger.plain(''.join(args)) |
152 | 140 | ||
153 | def debug(lvl, *args): | 141 | def debug(lvl, *args): |
142 | """ | ||
143 | Prints a debug message. | ||
144 | |||
145 | Arguments: | ||
146 | |||
147 | - ``lvl``: debug level. Higher value increases the debug level | ||
148 | (determined by ``bitbake -D``). | ||
149 | - ``args``: one or more strings to print. | ||
150 | """ | ||
154 | if isinstance(lvl, str): | 151 | if isinstance(lvl, str): |
155 | mainlogger.warning("Passed invalid debug level '%s' to bb.debug", lvl) | 152 | mainlogger.warning("Passed invalid debug level '%s' to bb.debug", lvl) |
156 | args = (lvl,) + args | 153 | args = (lvl,) + args |
@@ -158,33 +155,81 @@ def debug(lvl, *args): | |||
158 | mainlogger.bbdebug(lvl, ''.join(args)) | 155 | mainlogger.bbdebug(lvl, ''.join(args)) |
159 | 156 | ||
160 | def note(*args): | 157 | def note(*args): |
158 | """ | ||
159 | Prints a message at "note" level. | ||
160 | |||
161 | Arguments: | ||
162 | |||
163 | - ``args``: one or more strings to print. | ||
164 | """ | ||
161 | mainlogger.info(''.join(args)) | 165 | mainlogger.info(''.join(args)) |
162 | 166 | ||
163 | # | ||
164 | # A higher prioity note which will show on the console but isn't a warning | ||
165 | # | ||
166 | # Something is happening the user should be aware of but they probably did | ||
167 | # something to make it happen | ||
168 | # | ||
169 | def verbnote(*args): | 167 | def verbnote(*args): |
168 | """ | ||
169 | A higher priority note which will show on the console but isn't a warning. | ||
170 | |||
171 | Use in contexts when something is happening the user should be aware of but | ||
172 | they probably did something to make it happen. | ||
173 | |||
174 | Arguments: | ||
175 | |||
176 | - ``args``: one or more strings to print. | ||
177 | """ | ||
170 | mainlogger.verbnote(''.join(args)) | 178 | mainlogger.verbnote(''.join(args)) |
171 | 179 | ||
172 | # | 180 | # |
173 | # Warnings - things the user likely needs to pay attention to and fix | 181 | # Warnings - things the user likely needs to pay attention to and fix |
174 | # | 182 | # |
175 | def warn(*args): | 183 | def warn(*args): |
184 | """ | ||
185 | Prints a warning message. | ||
186 | |||
187 | Arguments: | ||
188 | |||
189 | - ``args``: one or more strings to print. | ||
190 | """ | ||
176 | mainlogger.warning(''.join(args)) | 191 | mainlogger.warning(''.join(args)) |
177 | 192 | ||
178 | def warnonce(*args): | 193 | def warnonce(*args): |
194 | """ | ||
195 | Prints a warning message like ``bb.warn()``, but only prints the message | ||
196 | once. | ||
197 | |||
198 | Arguments: | ||
199 | |||
200 | - ``args``: one or more strings to print. | ||
201 | """ | ||
179 | mainlogger.warnonce(''.join(args)) | 202 | mainlogger.warnonce(''.join(args)) |
180 | 203 | ||
181 | def error(*args, **kwargs): | 204 | def error(*args, **kwargs): |
205 | """ | ||
206 | Prints an error message. | ||
207 | |||
208 | Arguments: | ||
209 | |||
210 | - ``args``: one or more strings to print. | ||
211 | """ | ||
182 | mainlogger.error(''.join(args), extra=kwargs) | 212 | mainlogger.error(''.join(args), extra=kwargs) |
183 | 213 | ||
184 | def erroronce(*args): | 214 | def erroronce(*args): |
215 | """ | ||
216 | Prints an error message like ``bb.error()``, but only prints the message | ||
217 | once. | ||
218 | |||
219 | Arguments: | ||
220 | |||
221 | - ``args``: one or more strings to print. | ||
222 | """ | ||
185 | mainlogger.erroronce(''.join(args)) | 223 | mainlogger.erroronce(''.join(args)) |
186 | 224 | ||
187 | def fatal(*args, **kwargs): | 225 | def fatal(*args, **kwargs): |
226 | """ | ||
227 | Prints an error message and stops the BitBake execution. | ||
228 | |||
229 | Arguments: | ||
230 | |||
231 | - ``args``: one or more strings to print. | ||
232 | """ | ||
188 | mainlogger.critical(''.join(args), extra=kwargs) | 233 | mainlogger.critical(''.join(args), extra=kwargs) |
189 | raise BBHandledException() | 234 | raise BBHandledException() |
190 | 235 | ||
@@ -213,7 +258,6 @@ def deprecated(func, name=None, advice=""): | |||
213 | # For compatibility | 258 | # For compatibility |
214 | def deprecate_import(current, modulename, fromlist, renames = None): | 259 | def deprecate_import(current, modulename, fromlist, renames = None): |
215 | """Import objects from one module into another, wrapping them with a DeprecationWarning""" | 260 | """Import objects from one module into another, wrapping them with a DeprecationWarning""" |
216 | import sys | ||
217 | 261 | ||
218 | module = __import__(modulename, fromlist = fromlist) | 262 | module = __import__(modulename, fromlist = fromlist) |
219 | for position, objname in enumerate(fromlist): | 263 | for position, objname in enumerate(fromlist): |
@@ -227,3 +271,14 @@ def deprecate_import(current, modulename, fromlist, renames = None): | |||
227 | 271 | ||
228 | setattr(sys.modules[current], newname, newobj) | 272 | setattr(sys.modules[current], newname, newobj) |
229 | 273 | ||
274 | TaskData = namedtuple("TaskData", [ | ||
275 | "pn", | ||
276 | "taskname", | ||
277 | "fn", | ||
278 | "deps", | ||
279 | "provides", | ||
280 | "taskhash", | ||
281 | "unihash", | ||
282 | "hashfn", | ||
283 | "taskhash_deps", | ||
284 | ]) | ||