commit - 1282ec7a2e0345d4a61258e9705fe1844480948a
commit + dc794ede54bb743e3d2ef1c096db38377e3d8b0f
blob - 6b04242a4853312705d666372764a93cc1c77b70
blob + 4f134a2c08a08c538cdf7a9052d0421a87a2df15
--- dist/isum
+++ dist/isum
#!/bin/sh
-# LC_CTYPE=C works around stupidity in GNU grep
-# With LC_CTYPE=en_US.UTF-8 this is MUCH slower.
-LC_CTYPE=C export LC_CTYPE
+awk -f $PLAN9/dist/isum.awk $PLAN9/install.log
-egrep -v '^(\+ )?(9a|9c|9l|9ar|install|cp|cd|rm|mv|mk|9 yacc|9 lex|for i|do|done|if \[|fi|else|then)([ ]|$)|^[ ]+(\(cd|mk|gcc|cpp|cp)( |$)|^[ar] - |up to date|nothing to see here|assuming it will be an archive|loop not entered at top|conflicts:|nodes\(%e\)|packed transitions|Add these|PLAN9=|PATH=|^[ ]*$|^SYSNAME=|^OBJTYPE=|^sh |^cmp |^\./o\.rgb|^rc \./manweb' $PLAN9/install.log
blob - /dev/null
blob + db782c8b586c4c656f06e0c3dc6deda44a199ac2 (mode 644)
--- /dev/null
+++ dist/isum.awk
+# Summarize the installation log, printing errors along with
+# enough context to make sense of them.
+
+BEGIN {
+# print verbose
+ cd = ""
+ out = "/dev/stdout";
+}
+
+debug { print "# " $0 }
+
+/^$/ { next }
+
+/^\* /{
+ if(debug) print "% mark"
+ print >out
+ fflush(out)
+ cmd = ""
+ printtabs = 1 # print indented lines immediately following
+ errors = 0
+ next
+}
+
+/^ / && printtabs {
+ print >out
+ fflush(out)
+ next
+}
+
+{ printtabs = 0 }
+
+/^(9a|9c|9l|9ar|9?install|cp|rm|mv|mk|9 yacc|9 lex|9 rc|do|for i|if|mk|gcc|cpp|cp|sh|cmp|rc|\.\/o)($|[^:])/ {
+ if(debug) print "% start"
+ errors = 0
+ cmd = ""
+ if(!verbose)
+ cmd = cmd cd
+ cmd = cmd $0 "\n"
+ next
+}
+
+/^cd / {
+ if(debug) print "% cd"
+ errors = 0
+ if(verbose){
+ print >out
+ fflush(out)
+ }
+ cd = $0 "\n"
+ cmd = ""
+ next
+}
+
+{
+ cmd = cmd $0 "\n"
+}
+
+errors {
+ if(debug) print "% errors"
+ printf "%s", cmd >out
+ fflush(out)
+ cmd = ""
+ next
+}
+
+/^( |then|else|fi|done|[ar] - [^ ]*\.o$)/ {
+ next
+}
+
+/^(up to date|nothing to see|assuming it will be|loop not entered|conflicts:)/ {
+ if(debug) print "% skip1"
+ next
+}
+
+/is up to date/ {
+ next
+}
+
+/(nodes\(%e\)|packed transitions)/ {
+ if(debug) print "% skip2"
+ next
+}
+
+{
+ # unexpected line
+ if(debug) print "% errors1"
+ errors = 1
+ printf ">>> %s", cmd >out
+ fflush(out)
+ cmd = ""
+}
+