From 94416dde06ff0c9ad524732b293639279c4e9a3d Mon Sep 17 00:00:00 2001 From: Jack Rosenthal Date: Wed, 2 Feb 2022 14:17:38 -0700 Subject: zephyr: zmake: Disable traceback suppression As discussed in the logging brainstorming meeting, traceback suppression only makes it more difficult to fix bugs, determine the cause of a failure, or make changes in zmake. This is to the point that much of our documentation has been putting -D everywhere. While there's much work to go to get rid of -D everywhere so that we display the right logs when we need them, we can start at getting rid of the traceback suppression feature and making -D just set --log-level=DEBUG. The two options are placed in a mutually-exclusive group such that specifying --debug/-D and --log-level at the same time is not valid. BUG=b:217423904 BRANCH=none TEST=unit tests pass Signed-off-by: Jack Rosenthal Change-Id: I124b23c307b8b6e82edf4d5e43e2fcff82384a8e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3432911 Reviewed-by: Jeremy Bettis --- zephyr/zmake/README.md | 6 +++--- zephyr/zmake/zmake/__main__.py | 39 +++++++++++++++++---------------------- 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/zephyr/zmake/README.md b/zephyr/zmake/README.md index b6221ee3a7..8db143638e 100644 --- a/zephyr/zmake/README.md +++ b/zephyr/zmake/README.md @@ -6,7 +6,7 @@ ## Usage -**Usage:** `zmake [-h] [--checkout CHECKOUT] [-D] [-j JOBS] [--goma] [-l {DEBUG,INFO,WARNING,ERROR,CRITICAL}] [-L] [--log-label] [--modules-dir MODULES_DIR] [--zephyr-base ZEPHYR_BASE] subcommand ...` +**Usage:** `zmake [-h] [--checkout CHECKOUT] [-j JOBS] [--goma] [-l {DEBUG,INFO,WARNING,ERROR,CRITICAL} | -D] [-L] [--log-label] [--modules-dir MODULES_DIR] [--zephyr-base ZEPHYR_BASE] subcommand ...` Chromium OS's meta-build tool for Zephyr @@ -22,10 +22,10 @@ Chromium OS's meta-build tool for Zephyr |---|---| | `-h`, `--help` | show this help message and exit | | `--checkout CHECKOUT` | Path to ChromiumOS checkout | -| `-D`, `--debug` | Turn on debug features (e.g., stack trace, verbose logging) | | `-j JOBS`, `--jobs JOBS` | Degree of multiprogramming to use | | `--goma` | Enable hyperspeed compilation with Goma! (Googlers only) | -| `-l LOG_LEVEL`, `--log-level LOG_LEVEL` | Set the logging level (default=INFO) | +| `-l {DEBUG,INFO,WARNING,ERROR,CRITICAL}`, `--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}` | Set the logging level (default=INFO) | +| `-D`, `--debug` | Alias for --log-level=DEBUG | | `-L`, `--no-log-label` | Turn off logging labels | | `--log-label` | Turn on logging labels | | `--modules-dir MODULES_DIR` | The path to a directory containing all modules needed. If unspecified, zmake will assume you have a Chrome OS checkout and try locating them in the checkout. | diff --git a/zephyr/zmake/zmake/__main__.py b/zephyr/zmake/zmake/__main__.py index 9136a8aa7a..f2454ec7f3 100644 --- a/zephyr/zmake/zmake/__main__.py +++ b/zephyr/zmake/zmake/__main__.py @@ -106,13 +106,6 @@ def get_argparser(): parser.add_argument( "--checkout", type=pathlib.Path, help="Path to ChromiumOS checkout" ) - parser.add_argument( - "-D", - "--debug", - action="store_true", - default=False, - help=("Turn on debug features (e.g., stack trace, " "verbose logging)"), - ) parser.add_argument( "-j", "--jobs", @@ -129,13 +122,26 @@ def get_argparser(): dest="goma", help="Enable hyperspeed compilation with Goma! (Googlers only)", ) - parser.add_argument( + + log_level_group = parser.add_mutually_exclusive_group() + log_level_group.add_argument( "-l", "--log-level", - choices=list(log_level_map.keys()), - dest="log_level", + choices=log_level_map.values(), + metavar=f"{{{','.join(log_level_map)}}}", + type=lambda x: log_level_map[x], + default=logging.INFO, help="Set the logging level (default=INFO)", ) + log_level_group.add_argument( + "-D", + "--debug", + dest="log_level", + action="store_const", + const=logging.DEBUG, + help="Alias for --log-level=DEBUG", + ) + parser.add_argument( "-L", "--no-log-label", @@ -340,16 +346,8 @@ def main(argv=None): opts = parser.parse_args(argv) # Default logging - log_level = logging.INFO log_label = False - if opts.log_level: - log_level = log_level_map[opts.log_level] - log_label = True - elif opts.debug: - log_level = logging.DEBUG - log_label = True - if opts.log_label is not None: log_label = opts.log_label if log_label: @@ -358,10 +356,7 @@ def main(argv=None): log_format = "%(message)s" multiproc.log_job_names = False - logging.basicConfig(format=log_format, level=log_level) - - if not opts.debug: - sys.tracebacklimit = 0 + logging.basicConfig(format=log_format, level=opts.log_level) try: zmake = call_with_namespace(zm.Zmake, opts) -- cgit v1.2.1