diff options
Diffstat (limited to 'meta/lib')
| -rw-r--r-- | meta/lib/oe/__init__.py | 6 | ||||
| -rw-r--r-- | meta/lib/oe/qa.py | 16 |
2 files changed, 20 insertions, 2 deletions
diff --git a/meta/lib/oe/__init__.py b/meta/lib/oe/__init__.py index 6eb536ad28..d760481283 100644 --- a/meta/lib/oe/__init__.py +++ b/meta/lib/oe/__init__.py | |||
| @@ -7,6 +7,8 @@ | |||
| 7 | from pkgutil import extend_path | 7 | from pkgutil import extend_path |
| 8 | __path__ = extend_path(__path__, __name__) | 8 | __path__ = extend_path(__path__, __name__) |
| 9 | 9 | ||
| 10 | BBIMPORTS = ["data", "path", "utils", "types", "package", "packagedata", \ | 10 | # Modules with vistorcode need to go first else anything depending on them won't be |
| 11 | # processed correctly (e.g. qa) | ||
| 12 | BBIMPORTS = ["qa", "data", "path", "utils", "types", "package", "packagedata", \ | ||
| 11 | "packagegroup", "sstatesig", "lsb", "cachedpath", "license", \ | 13 | "packagegroup", "sstatesig", "lsb", "cachedpath", "license", \ |
| 12 | "qa", "reproducible", "rust", "buildcfg", "go"] | 14 | "reproducible", "rust", "buildcfg", "go"] |
diff --git a/meta/lib/oe/qa.py b/meta/lib/oe/qa.py index f8ae3c743f..e338ad6439 100644 --- a/meta/lib/oe/qa.py +++ b/meta/lib/oe/qa.py | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | # SPDX-License-Identifier: GPL-2.0-only | 4 | # SPDX-License-Identifier: GPL-2.0-only |
| 5 | # | 5 | # |
| 6 | 6 | ||
| 7 | import ast | ||
| 7 | import os, struct, mmap | 8 | import os, struct, mmap |
| 8 | 9 | ||
| 9 | class NotELFFileError(Exception): | 10 | class NotELFFileError(Exception): |
| @@ -186,6 +187,20 @@ def write_error(type, error, d): | |||
| 186 | with open(logfile, "a+") as f: | 187 | with open(logfile, "a+") as f: |
| 187 | f.write("%s: %s [%s]\n" % (p, error, type)) | 188 | f.write("%s: %s [%s]\n" % (p, error, type)) |
| 188 | 189 | ||
| 190 | def handle_error_visitorcode(name, args): | ||
| 191 | execs = set() | ||
| 192 | contains = {} | ||
| 193 | warn = None | ||
| 194 | if isinstance(args[0], ast.Constant) and isinstance(args[0].value, str): | ||
| 195 | for i in ["ERROR_QA", "WARN_QA"]: | ||
| 196 | if i not in contains: | ||
| 197 | contains[i] = set() | ||
| 198 | contains[i].add(args[0].value) | ||
| 199 | else: | ||
| 200 | warn = args[0] | ||
| 201 | execs.add(name) | ||
| 202 | return contains, execs, warn | ||
| 203 | |||
| 189 | def handle_error(error_class, error_msg, d): | 204 | def handle_error(error_class, error_msg, d): |
| 190 | if error_class in (d.getVar("ERROR_QA") or "").split(): | 205 | if error_class in (d.getVar("ERROR_QA") or "").split(): |
| 191 | write_error(error_class, error_msg, d) | 206 | write_error(error_class, error_msg, d) |
| @@ -198,6 +213,7 @@ def handle_error(error_class, error_msg, d): | |||
| 198 | else: | 213 | else: |
| 199 | bb.note("QA Issue: %s [%s]" % (error_msg, error_class)) | 214 | bb.note("QA Issue: %s [%s]" % (error_msg, error_class)) |
| 200 | return True | 215 | return True |
| 216 | handle_error.visitorcode = handle_error_visitorcode | ||
| 201 | 217 | ||
| 202 | def add_message(messages, section, new_msg): | 218 | def add_message(messages, section, new_msg): |
| 203 | if section not in messages: | 219 | if section not in messages: |
