diff options
| -rw-r--r-- | bitbake/lib/bb/cooker.py | 5 | ||||
| -rw-r--r-- | bitbake/lib/bb/cookerdata.py | 1 | ||||
| -rw-r--r-- | bitbake/lib/bb/utils.py | 26 |
3 files changed, 22 insertions, 10 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 41f70ab95a..e8686475b9 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
| @@ -1454,7 +1454,7 @@ class Parser(multiprocessing.Process): | |||
| 1454 | self.quit = quit | 1454 | self.quit = quit |
| 1455 | self.init = init | 1455 | self.init = init |
| 1456 | multiprocessing.Process.__init__(self) | 1456 | multiprocessing.Process.__init__(self) |
| 1457 | self.context = bb.utils._context.copy() | 1457 | self.context = bb.utils.get_context().copy() |
| 1458 | self.handlers = bb.event._handlers.copy() | 1458 | self.handlers = bb.event._handlers.copy() |
| 1459 | 1459 | ||
| 1460 | def run(self): | 1460 | def run(self): |
| @@ -1490,7 +1490,8 @@ class Parser(multiprocessing.Process): | |||
| 1490 | 1490 | ||
| 1491 | def parse(self, filename, appends, caches_array): | 1491 | def parse(self, filename, appends, caches_array): |
| 1492 | try: | 1492 | try: |
| 1493 | bb.utils._context = self.context.copy() | 1493 | # Reset our environment and handlers to the original settings |
| 1494 | bb.utils.set_context(self.context.copy()) | ||
| 1494 | bb.event._handlers = self.handlers.copy() | 1495 | bb.event._handlers = self.handlers.copy() |
| 1495 | return True, bb.cache.Cache.parse(filename, appends, self.cfg, caches_array) | 1496 | return True, bb.cache.Cache.parse(filename, appends, self.cfg, caches_array) |
| 1496 | except Exception as exc: | 1497 | except Exception as exc: |
diff --git a/bitbake/lib/bb/cookerdata.py b/bitbake/lib/bb/cookerdata.py index c4a28c86c5..de4331050d 100644 --- a/bitbake/lib/bb/cookerdata.py +++ b/bitbake/lib/bb/cookerdata.py | |||
| @@ -173,6 +173,7 @@ class CookerDataBuilder(object): | |||
| 173 | self.postfiles = params.postfile | 173 | self.postfiles = params.postfile |
| 174 | self.tracking = params.tracking | 174 | self.tracking = params.tracking |
| 175 | 175 | ||
| 176 | bb.utils.set_context(bb.utils.clean_context()) | ||
| 176 | self.data = bb.data.init() | 177 | self.data = bb.data.init() |
| 177 | if self.tracking: | 178 | if self.tracking: |
| 178 | self.data.enableTracking() | 179 | self.data.enableTracking() |
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py index 1ecc44a01a..7db6e3862f 100644 --- a/bitbake/lib/bb/utils.py +++ b/bitbake/lib/bb/utils.py | |||
| @@ -36,12 +36,22 @@ from contextlib import contextmanager | |||
| 36 | 36 | ||
| 37 | logger = logging.getLogger("BitBake.Util") | 37 | logger = logging.getLogger("BitBake.Util") |
| 38 | 38 | ||
| 39 | def clean_context(): | ||
| 40 | return { | ||
| 41 | "os": os, | ||
| 42 | "bb": bb, | ||
| 43 | "time": time, | ||
| 44 | } | ||
| 45 | |||
| 46 | def get_context(): | ||
| 47 | return _context | ||
| 48 | |||
| 49 | |||
| 50 | def set_context(ctx): | ||
| 51 | _context = ctx | ||
| 52 | |||
| 39 | # Context used in better_exec, eval | 53 | # Context used in better_exec, eval |
| 40 | _context = { | 54 | _context = clean_context() |
| 41 | "os": os, | ||
| 42 | "bb": bb, | ||
| 43 | "time": time, | ||
| 44 | } | ||
| 45 | 55 | ||
| 46 | def explode_version(s): | 56 | def explode_version(s): |
| 47 | r = [] | 57 | r = [] |
| @@ -343,7 +353,7 @@ def better_exec(code, context, text = None, realfile = "<code>"): | |||
| 343 | if not hasattr(code, "co_filename"): | 353 | if not hasattr(code, "co_filename"): |
| 344 | code = better_compile(code, realfile, realfile) | 354 | code = better_compile(code, realfile, realfile) |
| 345 | try: | 355 | try: |
| 346 | exec(code, _context, context) | 356 | exec(code, get_context(), context) |
| 347 | except Exception as e: | 357 | except Exception as e: |
| 348 | (t, value, tb) = sys.exc_info() | 358 | (t, value, tb) = sys.exc_info() |
| 349 | 359 | ||
| @@ -358,10 +368,10 @@ def better_exec(code, context, text = None, realfile = "<code>"): | |||
| 358 | raise e | 368 | raise e |
| 359 | 369 | ||
| 360 | def simple_exec(code, context): | 370 | def simple_exec(code, context): |
| 361 | exec(code, _context, context) | 371 | exec(code, get_context(), context) |
| 362 | 372 | ||
| 363 | def better_eval(source, locals): | 373 | def better_eval(source, locals): |
| 364 | return eval(source, _context, locals) | 374 | return eval(source, get_context(), locals) |
| 365 | 375 | ||
| 366 | @contextmanager | 376 | @contextmanager |
| 367 | def fileslocked(files): | 377 | def fileslocked(files): |
