mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-12 11:10:07 +00:00
157 lines
2.2 KiB
Awk
157 lines
2.2 KiB
Awk
# Summarize the installation log, printing errors along with
|
|
# enough context to make sense of them.
|
|
|
|
BEGIN {
|
|
# print verbose
|
|
cd = ""
|
|
out = "/dev/stdout"
|
|
statuslen = 0
|
|
debug = 0
|
|
updates = "/dev/stderr"
|
|
if(ENVIRON["winid"] != "") # running in acme window
|
|
updates = ""
|
|
}
|
|
|
|
function myflush(f)
|
|
{
|
|
# fflush is not available on sun, but system("") appears to work everywhere
|
|
system("")
|
|
}
|
|
|
|
function clearstatus(noflush, i)
|
|
{
|
|
if(!updates)
|
|
return
|
|
for(i=0; i<statuslen; i++)
|
|
printf("\b \b") >updates
|
|
statuslen = 0
|
|
if(!noflush)
|
|
myflush(updates)
|
|
}
|
|
|
|
function status(s)
|
|
{
|
|
if(!updates)
|
|
return
|
|
clearstatus(1)
|
|
printf(" %s ", s) >updates
|
|
statuslen = length(s)+5
|
|
myflush(updates)
|
|
}
|
|
|
|
debug!=0 { print "# " $0 }
|
|
|
|
/^$/ { next }
|
|
|
|
/^echo cd / { next }
|
|
/^\+\+ pwd/ { next }
|
|
|
|
/^\* /{
|
|
clearstatus()
|
|
if(debug) print "% mark"
|
|
print >out
|
|
myflush(out)
|
|
if(copy){
|
|
print >copy
|
|
myflush(copy)
|
|
}
|
|
cmd = ""
|
|
printtabs = 1 # print indented lines immediately following
|
|
errors = 0
|
|
next
|
|
}
|
|
|
|
/^ / && printtabs!=0 {
|
|
clearstatus()
|
|
print >out
|
|
myflush(out)
|
|
if(copy){
|
|
print >copy
|
|
myflush(copy)
|
|
}
|
|
next
|
|
}
|
|
|
|
{ printtabs = 0 }
|
|
|
|
/^(9a|9c|9l|9ar|9?install|cat pdf|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 .+; mk .+/ && !verbose {
|
|
dir = $2
|
|
sub(/;$/, "", dir)
|
|
status(dir " mk " $4)
|
|
}
|
|
|
|
/^cd / {
|
|
if(debug) print "% cd"
|
|
errors = 0
|
|
if(verbose){
|
|
print >out
|
|
myflush(out)
|
|
if(copy){
|
|
print >copy
|
|
myflush(copy)
|
|
}
|
|
}
|
|
cd = $0 "\n"
|
|
cmd = ""
|
|
next
|
|
}
|
|
|
|
{
|
|
cmd = cmd $0 "\n"
|
|
}
|
|
|
|
errors != 0 {
|
|
clearstatus()
|
|
if(debug) print "% errors"
|
|
printf "%s", cmd >out
|
|
myflush(out)
|
|
if(copy){
|
|
printf "%s", cmd >copy
|
|
myflush(copy)
|
|
}
|
|
cmd = ""
|
|
next
|
|
}
|
|
|
|
/^( |then|else|fi|done|[ar] - [^ ]*\.o$)/ {
|
|
next
|
|
}
|
|
|
|
/^(conflicts:)/ {
|
|
if(debug) print "% skip1"
|
|
next
|
|
}
|
|
|
|
/(up to date|nothing to see|assuming it will be|loop not entered)/ {
|
|
next
|
|
}
|
|
|
|
/(nodes\(%e\)|packed transitions)/ {
|
|
if(debug) print "% skip2"
|
|
next
|
|
}
|
|
|
|
{
|
|
# unexpected line
|
|
clearstatus()
|
|
if(debug) print "% errors1"
|
|
errors = 1
|
|
printf ">>> %s", cmd >out
|
|
myflush(out)
|
|
if(copy){
|
|
printf ">>> %s", cmd >copy
|
|
myflush(copy)
|
|
}
|
|
cmd = ""
|
|
}
|
|
|