diff options
Diffstat (limited to 'bitbake/lib')
| -rw-r--r-- | bitbake/lib/bb/event.py | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py index f8acacd80d..4761c86880 100644 --- a/bitbake/lib/bb/event.py +++ b/bitbake/lib/bb/event.py | |||
| @@ -257,14 +257,15 @@ def register(name, handler, mask=None, filename=None, lineno=None, data=None): | |||
| 257 | # handle string containing python code | 257 | # handle string containing python code |
| 258 | if isinstance(handler, str): | 258 | if isinstance(handler, str): |
| 259 | tmp = "def %s(e, d):\n%s" % (name, handler) | 259 | tmp = "def %s(e, d):\n%s" % (name, handler) |
| 260 | # Inject empty lines to make code match lineno in filename | ||
| 261 | if lineno is not None: | ||
| 262 | tmp = "\n" * (lineno-1) + tmp | ||
| 260 | try: | 263 | try: |
| 261 | code = bb.methodpool.compile_cache(tmp) | 264 | code = bb.methodpool.compile_cache(tmp) |
| 262 | if not code: | 265 | if not code: |
| 263 | if filename is None: | 266 | if filename is None: |
| 264 | filename = "%s(e, d)" % name | 267 | filename = "%s(e, d)" % name |
| 265 | code = compile(tmp, filename, "exec", ast.PyCF_ONLY_AST) | 268 | code = compile(tmp, filename, "exec", ast.PyCF_ONLY_AST) |
| 266 | if lineno is not None: | ||
| 267 | ast.increment_lineno(code, lineno-1) | ||
| 268 | code = compile(code, filename, "exec") | 269 | code = compile(code, filename, "exec") |
| 269 | bb.methodpool.compile_cache_add(tmp, code) | 270 | bb.methodpool.compile_cache_add(tmp, code) |
| 270 | except SyntaxError: | 271 | except SyntaxError: |
