From 1e4d4cfdcfe9bb0e86cf8c97e7ca3a2cffac3326 Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Sat, 4 Nov 2023 20:54:00 -0500 Subject: [PATCH] Tried to write errors to stderr consistently in scripts --- scripts/amor.py | 3 ++- scripts/avg.py | 3 ++- scripts/bench.py | 17 ++++++++++------- scripts/code.py | 9 +++++---- scripts/cov.py | 5 +++-- scripts/data.py | 9 +++++---- scripts/dbgblock.py | 3 ++- scripts/dbgbmap.py | 3 ++- scripts/perf.py | 15 +++++++++------ scripts/perfbd.py | 7 ++++--- scripts/plot.py | 3 ++- scripts/plotmpl.py | 3 ++- scripts/stack.py | 3 ++- scripts/structs.py | 7 ++++--- scripts/summary.py | 15 ++++++++++----- scripts/tailpipe.py | 3 ++- scripts/teepipe.py | 3 ++- scripts/test.py | 17 ++++++++++------- scripts/tracebd.py | 6 ++++-- 19 files changed, 82 insertions(+), 52 deletions(-) diff --git a/scripts/amor.py b/scripts/amor.py index 131f53a1..cbac7a69 100755 --- a/scripts/amor.py +++ b/scripts/amor.py @@ -100,7 +100,8 @@ def main(csv_paths, output, *, fields = [k for k, _ in fields] if by is None and fields is None: - print("error: needs --by or --fields to figure out fields") + print("error: needs --by or --fields to figure out fields", + file=sys.stderr) sys.exit(-1) # collect results from csv files diff --git a/scripts/avg.py b/scripts/avg.py index 1d78f5d9..b917bb35 100755 --- a/scripts/avg.py +++ b/scripts/avg.py @@ -118,7 +118,8 @@ def main(csv_paths, output, *, fields = [k for k, _ in fields] if by is None and fields is None: - print("error: needs --by or --fields to figure out fields") + print("error: needs --by or --fields to figure out fields", + file=sys.stderr) sys.exit(-1) # collect results from csv files diff --git a/scripts/bench.py b/scripts/bench.py index 0816cb9c..65c6a67b 100755 --- a/scripts/bench.py +++ b/scripts/bench.py @@ -293,7 +293,8 @@ def compile(bench_paths, **args): print('%serror:%s cycle detected in suite ordering: {%s}' % ( '\x1b[01;31m' if args['color'] else '', '\x1b[m' if args['color'] else '', - ', '.join(suite.name for suite in pending.values()))) + ', '.join(suite.name for suite in pending.values())), + file=sys.stderr) sys.exit(-1) pending = pending_ @@ -332,7 +333,8 @@ def compile(bench_paths, **args): print('%serror:%s compiling more than one bench suite? (%r)' % ( '\x1b[01;31m' if args['color'] else '', '\x1b[m' if args['color'] else '', - bench_paths)) + bench_paths), + file=sys.stderr) sys.exit(-1) suite = suites[0] @@ -708,7 +710,7 @@ def find_perms(runner, bench_ids=[], **args): if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) sys.exit(-1) # get which suite each case belongs to via paths @@ -738,7 +740,7 @@ def find_perms(runner, bench_ids=[], **args): if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) sys.exit(-1) # figure out expected suite perms @@ -782,7 +784,7 @@ def find_path(runner, id, **args): if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) sys.exit(-1) return path @@ -811,7 +813,7 @@ def find_defines(runner, id, **args): if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) sys.exit(-1) return defines @@ -863,7 +865,8 @@ def find_ids(runner, bench_ids=[], **args): print('%serror:%s no benches match id %r?' % ( '\x1b[01;31m' if args['color'] else '', '\x1b[m' if args['color'] else '', - id)) + id), + file=sys.stderr) sys.exit(-1) bench_ids_.extend(bench_ids__) diff --git a/scripts/code.py b/scripts/code.py index f8787dc6..43f032a2 100755 --- a/scripts/code.py +++ b/scripts/code.py @@ -187,7 +187,7 @@ def collect(obj_paths, *, if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) sys.exit(-1) @@ -226,7 +226,7 @@ def collect(obj_paths, *, if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) # do nothing on error, we don't need objdump to work, source files # may just be inaccurate pass @@ -268,7 +268,7 @@ def collect(obj_paths, *, if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) # do nothing on error, we don't need objdump to work, source files # may just be inaccurate pass @@ -321,7 +321,8 @@ def fold(Result, results, by=None, defines=[]): for k in it.chain(by or [], (k for k, _ in defines)): if k not in Result._by and k not in Result._fields: - print("error: could not find field %r?" % k) + print("error: could not find field %r?" % k, + file=sys.stderr) sys.exit(-1) # filter by matching defines diff --git a/scripts/cov.py b/scripts/cov.py index cbea75e7..da6c63dc 100755 --- a/scripts/cov.py +++ b/scripts/cov.py @@ -233,7 +233,7 @@ def collect(gcda_paths, *, if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) sys.exit(-1) # collect line/branch coverage @@ -303,7 +303,8 @@ def fold(Result, results, by=None, defines=[]): for k in it.chain(by or [], (k for k, _ in defines)): if k not in Result._by and k not in Result._fields: - print("error: could not find field %r?" % k) + print("error: could not find field %r?" % k, + file=sys.stderr) sys.exit(-1) # filter by matching defines diff --git a/scripts/data.py b/scripts/data.py index 3077f6a0..b8d2f66f 100755 --- a/scripts/data.py +++ b/scripts/data.py @@ -187,7 +187,7 @@ def collect(obj_paths, *, if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) sys.exit(-1) @@ -226,7 +226,7 @@ def collect(obj_paths, *, if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) # do nothing on error, we don't need objdump to work, source files # may just be inaccurate pass @@ -268,7 +268,7 @@ def collect(obj_paths, *, if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) # do nothing on error, we don't need objdump to work, source files # may just be inaccurate pass @@ -321,7 +321,8 @@ def fold(Result, results, by=None, defines=[]): for k in it.chain(by or [], (k for k, _ in defines)): if k not in Result._by and k not in Result._fields: - print("error: could not find field %r?" % k) + print("error: could not find field %r?" % k, + file=sys.stderr) sys.exit(-1) # filter by matching defines diff --git a/scripts/dbgblock.py b/scripts/dbgblock.py index 783e3ec8..9bee9d75 100755 --- a/scripts/dbgblock.py +++ b/scripts/dbgblock.py @@ -89,7 +89,8 @@ def main(disk, block=None, *, block = [0] if len(block) > 1: - print("error: More than one block address?") + print("error: more than one block address?", + file=sys.stderr) sys.exit(-1) block = block[0] diff --git a/scripts/dbgbmap.py b/scripts/dbgbmap.py index 86b9b366..1b5dd12c 100755 --- a/scripts/dbgbmap.py +++ b/scripts/dbgbmap.py @@ -1363,7 +1363,8 @@ def main(disk, mroots=None, *, size = None if any(isinstance(b, list) and len(b) > 1 for b in block): - print("error: More than one block address?") + print("error: more than one block address?", + file=sys.stderr) sys.exit(-1) if isinstance(block[0], list): block = (block[0][0], *block[1:]) diff --git a/scripts/perf.py b/scripts/perf.py index a0cd323f..3019bf15 100755 --- a/scripts/perf.py +++ b/scripts/perf.py @@ -291,7 +291,7 @@ def collect_syms_and_lines(obj_path, *, if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) # assume no debug-info on failure pass @@ -361,7 +361,7 @@ def collect_syms_and_lines(obj_path, *, if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) # assume no debug-info on failure pass @@ -567,7 +567,7 @@ def collect_decompressed(path, *, if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) sys.exit(-1) # rearrange results into result type @@ -633,7 +633,8 @@ def fold(Result, results, by=None, defines=[]): for k in it.chain(by or [], (k for k, _ in defines)): if k not in Result._by and k not in Result._fields: - print("error: could not find field %r?" % k) + print("error: could not find field %r?" % k, + file=sys.stderr) sys.exit(-1) # filter by matching defines @@ -1361,10 +1362,12 @@ if __name__ == "__main__": args.command = args.perf_paths if args.record: if not args.command: - print('error: no command specified?') + print('error: no command specified?', + file=sys.stderr) sys.exit(-1) if not args.output: - print('error: no output file specified?') + print('error: no output file specified?', + file=sys.stderr) sys.exit(-1) sys.exit(main(**{k: v diff --git a/scripts/perfbd.py b/scripts/perfbd.py index 4912587e..ec8c9624 100755 --- a/scripts/perfbd.py +++ b/scripts/perfbd.py @@ -199,7 +199,7 @@ def collect_syms_and_lines(obj_path, *, if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) # assume no debug-info on failure pass @@ -269,7 +269,7 @@ def collect_syms_and_lines(obj_path, *, if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) # assume no debug-info on failure pass @@ -599,7 +599,8 @@ def fold(Result, results, by=None, defines=[]): for k in it.chain(by or [], (k for k, _ in defines)): if k not in Result._by and k not in Result._fields: - print("error: could not find field %r?" % k) + print("error: could not find field %r?" % k, + file=sys.stderr) sys.exit(-1) # filter by matching defines diff --git a/scripts/plot.py b/scripts/plot.py index da1f2e8d..7b7d0cea 100755 --- a/scripts/plot.py +++ b/scripts/plot.py @@ -903,7 +903,8 @@ def main(csv_paths, *, all_y = [k for k, _ in all_y] if not all_by and not all_y: - print("error: needs --by or -y to figure out fields") + print("error: needs --by or -y to figure out fields", + file=sys.stderr) sys.exit(-1) # create a grid of subplots diff --git a/scripts/plotmpl.py b/scripts/plotmpl.py index bd98e595..12af43c8 100755 --- a/scripts/plotmpl.py +++ b/scripts/plotmpl.py @@ -745,7 +745,8 @@ def main(csv_paths, output, *, all_y = [k for k, _ in all_y] if not all_by and not all_y: - print("error: needs --by or -y to figure out fields") + print("error: needs --by or -y to figure out fields", + file=sys.stderr) sys.exit(-1) # first collect results from CSV files diff --git a/scripts/stack.py b/scripts/stack.py index e0b36e19..4487f604 100755 --- a/scripts/stack.py +++ b/scripts/stack.py @@ -279,7 +279,8 @@ def fold(Result, results, by=None, defines=[]): for k in it.chain(by or [], (k for k, _ in defines)): if k not in Result._by and k not in Result._fields: - print("error: could not find field %r?" % k) + print("error: could not find field %r?" % k, + file=sys.stderr) sys.exit(-1) # filter by matching defines diff --git a/scripts/structs.py b/scripts/structs.py index 450cd502..efe90326 100755 --- a/scripts/structs.py +++ b/scripts/structs.py @@ -183,7 +183,7 @@ def collect(obj_paths, *, if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) sys.exit(-1) # collect structs as we parse dwarf info @@ -230,7 +230,7 @@ def collect(obj_paths, *, if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) sys.exit(-1) for r in results_: @@ -270,7 +270,8 @@ def fold(Result, results, by=None, defines=[]): for k in it.chain(by or [], (k for k, _ in defines)): if k not in Result._by and k not in Result._fields: - print("error: could not find field %r?" % k) + print("error: could not find field %r?" % k, + file=sys.stderr) sys.exit(-1) # filter by matching defines diff --git a/scripts/summary.py b/scripts/summary.py index 5c60e65e..608081a0 100755 --- a/scripts/summary.py +++ b/scripts/summary.py @@ -324,7 +324,8 @@ def infer(fields_, results, types_[k] = t break else: - print("error: no type matches field %r?" % k) + print("error: no type matches field %r?" % k, + file=sys.stderr) sys.exit(-1) types = types_ @@ -376,7 +377,8 @@ def fold(Result, results, by=None, defines=[]): for k in it.chain(by or [], (k for k, _ in defines)): if k not in Result._by and k not in Result._fields: - print("error: could not find field %r?" % k) + print("error: could not find field %r?" % k, + file=sys.stderr) sys.exit(-1) # filter by matching defines @@ -593,7 +595,8 @@ def main(csv_paths, *, for t in TYPES.keys(): for k in args.get(t, []): if k in types: - print("error: conflicting type for field %r?" % k) + print("error: conflicting type for field %r?" % k, + file=sys.stderr) sys.exit(-1) types[k] = TYPES[t] # rename types? @@ -609,7 +612,8 @@ def main(csv_paths, *, for o in OPS.keys(): for k in args.get(o, []): if k in ops: - print("error: conflicting op for field %r?" % k) + print("error: conflicting op for field %r?" % k, + file=sys.stderr) sys.exit(-1) ops[k] = OPS[o] # rename ops? @@ -621,7 +625,8 @@ def main(csv_paths, *, ops.update(ops_) if by is None and fields is None: - print("error: needs --by or --fields to figure out fields") + print("error: needs --by or --fields to figure out fields", + file=sys.stderr) sys.exit(-1) # find CSV files diff --git a/scripts/tailpipe.py b/scripts/tailpipe.py index bda1ff04..9bd9d1d0 100755 --- a/scripts/tailpipe.py +++ b/scripts/tailpipe.py @@ -131,7 +131,8 @@ def main(path='-', *, lines=5, cat=False, sleep=None, keep_open=False): # don't just flood open calls time.sleep(sleep or 0.1) except FileNotFoundError as e: - print("error: file not found %r" % path) + print("error: file not found %r" % path, + file=sys.stderr) sys.exit(-1) except KeyboardInterrupt: pass diff --git a/scripts/teepipe.py b/scripts/teepipe.py index 07801f6d..3ba40320 100755 --- a/scripts/teepipe.py +++ b/scripts/teepipe.py @@ -44,7 +44,8 @@ def main(in_path, out_paths, *, keep_open=False): except BrokenPipeError: pass except FileNotFoundError as e: - print("error: file not found %r" % in_path) + print("error: file not found %r" % in_path, + file=sys.stderr) sys.exit(-1) except KeyboardInterrupt: pass diff --git a/scripts/test.py b/scripts/test.py index 77225eda..b6b5d7c6 100755 --- a/scripts/test.py +++ b/scripts/test.py @@ -298,7 +298,8 @@ def compile(test_paths, **args): print('%serror:%s cycle detected in suite ordering: {%s}' % ( '\x1b[01;31m' if args['color'] else '', '\x1b[m' if args['color'] else '', - ', '.join(suite.name for suite in pending.values()))) + ', '.join(suite.name for suite in pending.values())), + file=sys.stderr) sys.exit(-1) pending = pending_ @@ -337,7 +338,8 @@ def compile(test_paths, **args): print('%serror:%s compiling more than one test suite? (%r)' % ( '\x1b[01;31m' if args['color'] else '', '\x1b[m' if args['color'] else '', - test_paths)) + test_paths), + file=sys.stderr) sys.exit(-1) suite = suites[0] @@ -717,7 +719,7 @@ def find_perms(runner, test_ids=[], **args): if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) sys.exit(-1) # get which suite each case belongs to via paths @@ -747,7 +749,7 @@ def find_perms(runner, test_ids=[], **args): if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) sys.exit(-1) # figure out expected suite perms @@ -791,7 +793,7 @@ def find_path(runner, id, **args): if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) sys.exit(-1) return path @@ -820,7 +822,7 @@ def find_defines(runner, id, **args): if proc.returncode != 0: if not args.get('verbose'): for line in proc.stderr: - sys.stdout.write(line) + sys.stderr.write(line) sys.exit(-1) return defines @@ -872,7 +874,8 @@ def find_ids(runner, test_ids=[], **args): print('%serror:%s no tests match id %r?' % ( '\x1b[01;31m' if args['color'] else '', '\x1b[m' if args['color'] else '', - id)) + id), + file=sys.stderr) sys.exit(-1) test_ids_.extend(test_ids__) diff --git a/scripts/tracebd.py b/scripts/tracebd.py index f8069e87..f87c8cf3 100755 --- a/scripts/tracebd.py +++ b/scripts/tracebd.py @@ -717,7 +717,8 @@ def main(path='-', *, size = None if any(isinstance(b, list) and len(b) > 1 for b in block): - print("error: More than one block address?") + print("error: more than one block address?", + file=sys.stderr) sys.exit(-1) if isinstance(block[0], list): block = (block[0][0], *block[1:]) @@ -1013,7 +1014,8 @@ def main(path='-', *, # don't just flood open calls time.sleep(sleep or 0.1) except FileNotFoundError as e: - print("error: file not found %r" % path) + print("error: file not found %r" % path, + file=sys.stderr) sys.exit(-1) except KeyboardInterrupt: pass