aboutsummaryrefslogtreecommitdiff
path: root/dist/isum.awk
blob: 64f89efee508829c646fd29c95141f369dcaaa47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# 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 }

/^echo cd / { next }
/^\+\+ pwd/ { 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 = ""
}