aos/tools/harness/debug.py
Daniel Schwyn 6d444bf552 Main handout
Signed-off-by: Daniel Schwyn <daniel.schwyn@inf.ethz.ch>
2022-03-03 14:57:51 +01:00

67 lines
2.0 KiB
Python

##########################################################################
# Copyright (c) 2009-2011, ETH Zurich.
# All rights reserved.
#
# This file is distributed under the terms in the attached LICENSE file.
# If you do not find this file, copies can be found by writing to:
# ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
##########################################################################
import subprocess, os, sys
QUIET = 0
NORMAL = 1
VERBOSE = 2
DEBUG = 3
current_level = NORMAL
def message(level, message):
if level <= current_level:
sys.stdout.write(message + '\n')
sys.stdout.flush()
def warning(s):
message(QUIET, 'Warning: ' + s)
def error(s):
message(QUIET, 'Error: ' + s)
def log(s):
message(NORMAL, s)
def verbose(s):
message(VERBOSE, s)
def debug(s):
message(DEBUG, s)
def checkcmd(*args, **kwargs):
"""Run a command as with subprocess.check_call, but either discard or
display the output, depending on the current debug level."""
# display verbose message saying what we do
verbose('executing ' + ' '.join(args[0]))
# if non-debug mode, discard stdout
# if non-verbose mode, discard stderr as well (hides noise from cmake etc.)
devnull = None
if current_level < VERBOSE:
devnull = open(os.devnull, 'w')
kwargs['stderr'] = devnull
if current_level < DEBUG:
kwargs['stdout'] = devnull
subprocess.check_call(*args, **kwargs)
if devnull:
devnull.close()
def addopts(p, dest):
p.add_option('-q', '--quiet', action='store_const', dest=dest, const=QUIET,
help='quiet output, only error messages and warnings')
p.add_option('-v', '--verbose', action='store_const', dest=dest,
const=VERBOSE, help='more verbose output')
p.add_option('--debug', action='store_const', dest=dest, const=DEBUG,
help='debug output, results of all commands')