1b02eb5b0SPaul E. McKenney#!/bin/sh 2b02eb5b0SPaul E. McKenney# SPDX-License-Identifier: GPL-2.0+ 3b02eb5b0SPaul E. McKenney# 4b02eb5b0SPaul E. McKenney# Compares .out and .out.new files for each name on standard input, 5b02eb5b0SPaul E. McKenney# one full pathname per line. Outputs comparison results followed by 6b02eb5b0SPaul E. McKenney# a summary. 7b02eb5b0SPaul E. McKenney# 8b02eb5b0SPaul E. McKenney# sh cmplitmushist.sh 9b02eb5b0SPaul E. McKenney 10b02eb5b0SPaul E. McKenneyT=/tmp/cmplitmushist.sh.$$ 11b02eb5b0SPaul E. McKenneytrap 'rm -rf $T' 0 12b02eb5b0SPaul E. McKenneymkdir $T 13b02eb5b0SPaul E. McKenney 14b02eb5b0SPaul E. McKenney# comparetest oldpath newpath 15*02484d82SPaul E. McKenneybadmacnam=0 16b1da11c9SPaul E. McKenneytimedout=0 17b02eb5b0SPaul E. McKenneyperfect=0 18b02eb5b0SPaul E. McKenneyobsline=0 19b02eb5b0SPaul E. McKenneynoobsline=0 20b02eb5b0SPaul E. McKenneyobsresult=0 21b02eb5b0SPaul E. McKenneybadcompare=0 22b02eb5b0SPaul E. McKenneycomparetest () { 23*02484d82SPaul E. McKenney if grep -q ': Unknown macro ' $1 || grep -q ': Unknown macro ' $2 24*02484d82SPaul E. McKenney then 25*02484d82SPaul E. McKenney if grep -q ': Unknown macro ' $1 26*02484d82SPaul E. McKenney then 27*02484d82SPaul E. McKenney badname=`grep ': Unknown macro ' $1 | 28*02484d82SPaul E. McKenney sed -e 's/^.*: Unknown macro //' | 29*02484d82SPaul E. McKenney sed -e 's/ (User error).*$//'` 30*02484d82SPaul E. McKenney echo 'Current LKMM version does not know "'$badname'"' $1 31*02484d82SPaul E. McKenney fi 32*02484d82SPaul E. McKenney if grep -q ': Unknown macro ' $2 33*02484d82SPaul E. McKenney then 34*02484d82SPaul E. McKenney badname=`grep ': Unknown macro ' $2 | 35*02484d82SPaul E. McKenney sed -e 's/^.*: Unknown macro //' | 36*02484d82SPaul E. McKenney sed -e 's/ (User error).*$//'` 37*02484d82SPaul E. McKenney echo 'Current LKMM version does not know "'$badname'"' $2 38*02484d82SPaul E. McKenney fi 39*02484d82SPaul E. McKenney badmacnam=`expr "$badmacnam" + 1` 40*02484d82SPaul E. McKenney return 0 41*02484d82SPaul E. McKenney elif grep -q '^Command exited with non-zero status 124' $1 || 42b1da11c9SPaul E. McKenney grep -q '^Command exited with non-zero status 124' $2 43b1da11c9SPaul E. McKenney then 44b1da11c9SPaul E. McKenney if grep -q '^Command exited with non-zero status 124' $1 && 45b1da11c9SPaul E. McKenney grep -q '^Command exited with non-zero status 124' $2 46b1da11c9SPaul E. McKenney then 47b1da11c9SPaul E. McKenney echo Both runs timed out: $2 48b1da11c9SPaul E. McKenney elif grep -q '^Command exited with non-zero status 124' $1 49b1da11c9SPaul E. McKenney then 50b1da11c9SPaul E. McKenney echo Old run timed out: $2 51b1da11c9SPaul E. McKenney elif grep -q '^Command exited with non-zero status 124' $2 52b1da11c9SPaul E. McKenney then 53b1da11c9SPaul E. McKenney echo New run timed out: $2 54b1da11c9SPaul E. McKenney fi 55b1da11c9SPaul E. McKenney timedout=`expr "$timedout" + 1` 56b1da11c9SPaul E. McKenney return 0 57b1da11c9SPaul E. McKenney fi 58b02eb5b0SPaul E. McKenney grep -v 'maxresident)k\|minor)pagefaults\|^Time' $1 > $T/oldout 59b02eb5b0SPaul E. McKenney grep -v 'maxresident)k\|minor)pagefaults\|^Time' $2 > $T/newout 60b02eb5b0SPaul E. McKenney if cmp -s $T/oldout $T/newout && grep -q '^Observation' $1 61b02eb5b0SPaul E. McKenney then 62b02eb5b0SPaul E. McKenney echo Exact output match: $2 63b02eb5b0SPaul E. McKenney perfect=`expr "$perfect" + 1` 64b02eb5b0SPaul E. McKenney return 0 65b02eb5b0SPaul E. McKenney fi 66b02eb5b0SPaul E. McKenney 67b02eb5b0SPaul E. McKenney grep '^Observation' $1 > $T/oldout 68b02eb5b0SPaul E. McKenney grep '^Observation' $2 > $T/newout 69b02eb5b0SPaul E. McKenney if test -s $T/oldout -o -s $T/newout 70b02eb5b0SPaul E. McKenney then 71b02eb5b0SPaul E. McKenney if cmp -s $T/oldout $T/newout 72b02eb5b0SPaul E. McKenney then 73b02eb5b0SPaul E. McKenney echo Matching Observation result and counts: $2 74b02eb5b0SPaul E. McKenney obsline=`expr "$obsline" + 1` 75b02eb5b0SPaul E. McKenney return 0 76b02eb5b0SPaul E. McKenney fi 77b02eb5b0SPaul E. McKenney else 78*02484d82SPaul E. McKenney echo Missing Observation line "(e.g., syntax error)": $2 79b02eb5b0SPaul E. McKenney noobsline=`expr "$noobsline" + 1` 80b02eb5b0SPaul E. McKenney return 0 81b02eb5b0SPaul E. McKenney fi 82b02eb5b0SPaul E. McKenney 83b02eb5b0SPaul E. McKenney grep '^Observation' $1 | awk '{ print $3 }' > $T/oldout 84b02eb5b0SPaul E. McKenney grep '^Observation' $2 | awk '{ print $3 }' > $T/newout 85b02eb5b0SPaul E. McKenney if cmp -s $T/oldout $T/newout 86b02eb5b0SPaul E. McKenney then 87b02eb5b0SPaul E. McKenney echo Matching Observation Always/Sometimes/Never result: $2 88b02eb5b0SPaul E. McKenney obsresult=`expr "$obsresult" + 1` 89b02eb5b0SPaul E. McKenney return 0 90b02eb5b0SPaul E. McKenney fi 91b02eb5b0SPaul E. McKenney echo ' !!!' Result changed: $2 92b02eb5b0SPaul E. McKenney badcompare=`expr "$badcompare" + 1` 93b02eb5b0SPaul E. McKenney return 1 94b02eb5b0SPaul E. McKenney} 95b02eb5b0SPaul E. McKenney 96b02eb5b0SPaul E. McKenneysed -e 's/^.*$/comparetest &.out &.out.new/' > $T/cmpscript 97b02eb5b0SPaul E. McKenney. $T/cmpscript > $T/cmpscript.out 98b02eb5b0SPaul E. McKenneycat $T/cmpscript.out 99b02eb5b0SPaul E. McKenney 100b02eb5b0SPaul E. McKenneyecho ' ---' Summary: 1>&2 101b02eb5b0SPaul E. McKenneygrep '!!!' $T/cmpscript.out 1>&2 102b02eb5b0SPaul E. McKenneyif test "$perfect" -ne 0 103b02eb5b0SPaul E. McKenneythen 104b02eb5b0SPaul E. McKenney echo Exact output matches: $perfect 1>&2 105b02eb5b0SPaul E. McKenneyfi 106b02eb5b0SPaul E. McKenneyif test "$obsline" -ne 0 107b02eb5b0SPaul E. McKenneythen 108b02eb5b0SPaul E. McKenney echo Matching Observation result and counts: $obsline 1>&2 109b02eb5b0SPaul E. McKenneyfi 110b02eb5b0SPaul E. McKenneyif test "$noobsline" -ne 0 111b02eb5b0SPaul E. McKenneythen 112*02484d82SPaul E. McKenney echo Missing Observation line "(e.g., syntax error)": $noobsline 1>&2 113b02eb5b0SPaul E. McKenneyfi 114b02eb5b0SPaul E. McKenneyif test "$obsresult" -ne 0 115b02eb5b0SPaul E. McKenneythen 116b02eb5b0SPaul E. McKenney echo Matching Observation Always/Sometimes/Never result: $obsresult 1>&2 117b02eb5b0SPaul E. McKenneyfi 118b1da11c9SPaul E. McKenneyif test "$timedout" -ne 0 119b1da11c9SPaul E. McKenneythen 120b1da11c9SPaul E. McKenney echo "!!!" Timed out: $timedout 1>&2 121b1da11c9SPaul E. McKenneyfi 122*02484d82SPaul E. McKenneyif test "$badmacnam" -ne 0 123*02484d82SPaul E. McKenneythen 124*02484d82SPaul E. McKenney echo "!!!" Unknown primitive: $badmacnam 1>&2 125*02484d82SPaul E. McKenneyfi 126b02eb5b0SPaul E. McKenneyif test "$badcompare" -ne 0 127b02eb5b0SPaul E. McKenneythen 128b02eb5b0SPaul E. McKenney echo "!!!" Result changed: $badcompare 1>&2 129b02eb5b0SPaul E. McKenney exit 1 130b02eb5b0SPaul E. McKenneyfi 131b02eb5b0SPaul E. McKenney 132b02eb5b0SPaul E. McKenneyexit 0 133