From f8f2f16d825c1990b877e1802b680810c7bd907d Mon Sep 17 00:00:00 2001 From: Eli Schwartz Date: Sun, 22 Jan 2023 16:40:14 -0500 Subject: mlog: do not squelch console output for errors We have functionality to squelch logging, and we use this for situations where we run a fake interpreter and then emit output. e.g. `introspect`. It's reasonable to avoid logging your bog-standard noisy `mlog.log()` here, but unfortunately, we also avoided logging the output of `mlog.exception()` followed by `sys.exit(2)`, because that went through mlog! :P Special-case this to keep on printing, even if mlog.disable() was used -- in such a case, we really do want to emit log output no matter what. Users need this info to ensure they have any clue why Meson returned a non-zero exit code. --- mesonbuild/mlog.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mesonbuild/mlog.py b/mesonbuild/mlog.py index 2b310ec..e9c4017 100644 --- a/mesonbuild/mlog.py +++ b/mesonbuild/mlog.py @@ -384,7 +384,13 @@ def exception(e: Exception, prefix: T.Optional[AnsiDecorator] = None) -> None: if prefix: args.append(prefix) args.append(str(e)) - log(*args) + + restore = log_disable_stdout + if restore: + enable() + log(*args, is_error=True) + if restore: + disable() # Format a list for logging purposes as a string. It separates # all but the last item with commas, and the last with 'and'. -- cgit v1.1