diff options
-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: |