scripts: Added -U/--undefine as inverse -D/--define to most scripts

This adds -U/--undefine as an inverse -D/--define, allowing you to
select results where a given field does _not_ match a set of
values/globs.

For example, make bench-marks, which need to ignore stack/heap/usage
probes as a special case, can easily filter like so:

  $ ./scripts/csv.py test.csv -Uprobe=stack,heap,usage

---

One thing globbing is pretty bad at is inverse matches. This is
_usually_ easy enough to work around, but has been an annoyance enough
times that I think _some_ option to inverse filter is warranted.

I'm not sure -U/--undefine is the best name for this, since field isn't
really "undefined" as a result (well kinda? if you're relying on
implicit by/field rules?), but it gets the job done.
This commit is contained in:
Christopher Haster
2026-02-07 00:16:00 -06:00
parent 37288fceab
commit ba1f5e730d
14 changed files with 438 additions and 101 deletions
+6 -18
View File
@@ -600,9 +600,7 @@ bench-marks: SUMMARYFLAGS+=-Si
bench-marks: $(BENCH_CSV)
$(strip ./scripts/csv.py \
<(./scripts/csv.py $^ \
-Dprobe=append,remove,create,delete,fetch,lookup,$\
commit,namelookup,$\
write,stat,read \
-Uprobe=stack,heap,usage \
-bprobe='%(case)s+%(probe)s' \
-Fi='min(enumerate())' \
-fn='max(n)' \
@@ -624,18 +622,14 @@ bench-marks-csv: $(BUILDDIR)/lfs3.bench.csv
bench-marks-diff: $(BENCH_CSV)
$(strip ./scripts/csv.py \
<(./scripts/csv.py $^ \
-Dprobe=append,remove,create,delete,fetch,lookup,$\
commit,namelookup,$\
write,stat,read \
-Uprobe=stack,heap,usage \
-bprobe='%(case)s+%(probe)s' \
-Fi='min(enumerate())' \
-fn='max(n)' \
-ft='max(float(bench_simtime)/1.0e9)' \
-o-) \
-d <(./scripts/csv.py $(BUILDDIR)/lfs3.bench.csv \
-Dprobe=append,remove,create,delete,fetch,lookup,$\
commit,namelookup,$\
write,stat,read \
-Uprobe=stack,heap,usage \
-bprobe='%(case)s+%(probe)s' \
-Fi='min(enumerate())' \
-fn='max(n)' \
@@ -652,9 +646,7 @@ bench-bottlenecks: SUMMARYFLAGS+=-Sruntime
bench-bottlenecks: $(BENCH_CSV)
$(strip ./scripts/csv.py \
<(./scripts/csv.py $^ \
-Dprobe=append,remove,create,delete,fetch,lookup,$\
commit,namelookup,$\
write,stat,read \
-Uprobe=stack,heap,usage \
-bprobe='%(case)s+%(probe)s' \
-Fi='min(enumerate())' \
-fn='max(n)' \
@@ -673,9 +665,7 @@ bench-bottlenecks: $(BENCH_CSV)
bench-ops: SUMMARYFLAGS+=-Si
bench-ops: $(BENCH_CSV)
$(strip ./scripts/csv.py $^ \
-Dprobe=append,remove,create,delete,fetch,lookup,$\
commit,namelookup,$\
write,stat,read \
-Uprobe=stack,heap,usage \
-bprobe='%(case)s+%(probe)s' \
-Hprobe=bench+probe \
-Fi='min(enumerate())' \
@@ -692,9 +682,7 @@ bench-ops: $(BENCH_CSV)
bench-widths: SUMMARYFLAGS+=-Si
bench-widths: $(BENCH_CSV)
$(strip ./scripts/csv.py $^ \
-Dprobe=append,remove,create,delete,fetch,lookup,$\
commit,namelookup,$\
write,stat,read \
-Uprobe=stack,heap,usage \
-bprobe='%(case)s+%(probe)s' \
-Hprobe=bench+probe \
-Fi='min(enumerate())' \