|
Packit |
46375d |
#!/bin/sh
|
|
Packit |
46375d |
# Compares the output of two repo-font-audit runs and print test score changes
|
|
Packit |
46375d |
|
|
Packit |
46375d |
DATADIR="$(dirname $0)/../private"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
usage() {
|
|
Packit |
46375d |
cat >&2 << EOF_USAGE
|
|
Packit |
46375d |
Usage: $0 <resultset1> <resultset2>
|
|
Packit |
46375d |
<resultsetx>: “Extracted data” archive produced by repo-font-audit
|
|
Packit |
46375d |
|
|
Packit |
46375d |
Example:
|
|
Packit |
46375d |
$0 repo-font-audit-fedora-12-20091121T110127Z.tar.xz repo-font-audit-rawhide-20091121T110127Z.tar.xz
|
|
Packit |
46375d |
EOF_USAGE
|
|
Packit |
46375d |
exit 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
find_package_changes() {
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
FNR==1 {
|
|
Packit |
46375d |
filenames = filenames FILENAME "|"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
(FNR>1) && ($15!="") {
|
|
Packit |
46375d |
rpm[$3] = rpm[$3] FILENAME "|" $1 "|" $2 "|" $7 "|" $10 "|" $11 "|" $12 "|" $15 "#"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
sub("\\|$","",filenames)
|
|
Packit |
46375d |
split(filenames,filenamest,"|")
|
|
Packit |
46375d |
|
|
Packit |
46375d |
print "B. Font package changes:"
|
|
Packit |
46375d |
nr = asorti(rpm,rpms)
|
|
Packit |
46375d |
for ( r = 1 ; r <= nr ; r++ ) {
|
|
Packit |
46375d |
sub("#$","",rpm[rpms[r]])
|
|
Packit |
46375d |
na = split(rpm[rpms[r]],rpma,"#")
|
|
Packit |
46375d |
delete rpmv
|
|
Packit |
46375d |
for ( a = 1 ; a <= na ; a++ ) {
|
|
Packit |
46375d |
if (rpmv[rpma[a]]) {
|
|
Packit |
46375d |
delete rpma[a]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
else {
|
|
Packit |
46375d |
rpmv[rpma[a]] = 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
for (i in minus) {
|
|
Packit |
46375d |
delete minus[i]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
for (i in plus) {
|
|
Packit |
46375d |
delete plus[i]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
for (i in changed) {
|
|
Packit |
46375d |
delete changed[i]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
infom = ""
|
|
Packit |
46375d |
infop = ""
|
|
Packit |
46375d |
na = asort(rpma)
|
|
Packit |
46375d |
for ( a = 1 ; a <= na ; a++ ) {
|
|
Packit |
46375d |
ni = split(rpma[a],rpmi,"|")
|
|
Packit |
46375d |
if ( rpmi[1] == filenamest[1] ) {
|
|
Packit |
46375d |
infom = rpmi[2] "|" rpmi[3] "|" rpmi[4]
|
|
Packit |
46375d |
minus[rpmi[5]] = rpmi[6] "|" rpmi[7] "|" rpmi[8]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
if ( rpmi[1] == filenamest[2] ) {
|
|
Packit |
46375d |
infop = rpmi[2] "|" rpmi[3] "|" rpmi[4]
|
|
Packit |
46375d |
plus[rpmi[5]] = rpmi[6] "|" rpmi[7] "|" rpmi[8]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
for ( file in minus ) {
|
|
Packit |
46375d |
if ( plus[file] == minus[file] ) {
|
|
Packit |
46375d |
delete plus[file]
|
|
Packit |
46375d |
delete minus[file]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
else {
|
|
Packit |
46375d |
changed[file] = 1
|
|
Packit |
46375d |
if ( plus[file] == "" ) {
|
|
Packit |
46375d |
delete plus[file]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
for ( file in plus ) {
|
|
Packit |
46375d |
changed[file] = 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
change = 0
|
|
Packit |
46375d |
if ( length(minus) > 0 ) {
|
|
Packit |
46375d |
change = 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
if ( length(plus) > 0 ) {
|
|
Packit |
46375d |
change = change + 2
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
if ( change > 0 ) {
|
|
Packit |
46375d |
split(infom, infomt, "|")
|
|
Packit |
46375d |
split(infop, infopt, "|")
|
|
Packit |
46375d |
if ( infomt[3] == "M" ) {
|
|
Packit |
46375d |
infomt[3] = ", M"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
if ( infopt[3] == "M" ) {
|
|
Packit |
46375d |
infopt[3] = ", M"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
if ( change == 1 ) {
|
|
Packit |
46375d |
print "— " rpms[r] ".rpm (" infomt[2] ".src.rpm , " infomt[1] infomt[3] ")"
|
|
Packit |
46375d |
rpmcount = rpmcount - 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
if ( change == 2 ) {
|
|
Packit |
46375d |
print "+ " rpms[r] ".rpm (" infopt[2] ".src.rpm, " infopt[1] infopt[3] ")"
|
|
Packit |
46375d |
rpmcount = rpmcount + 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
if ( change == 3 ) {
|
|
Packit |
46375d |
print "= " rpms[r] ".rpm (" infomt[2] ".src.rpm, " infomt[1] infomt[3] ")"
|
|
Packit |
46375d |
print " ⇒ " infopt[2] ".src.rpm, " infopt[1] infopt[3]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
nc = asorti(changed)
|
|
Packit |
46375d |
for (i in out) {
|
|
Packit |
46375d |
delete out[i]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
for ( c = 1 ; c <= nc ; c++ ) {
|
|
Packit |
46375d |
if ( minus[changed[c]] ) {
|
|
Packit |
46375d |
split(minus[changed[c]], infoc, "|")
|
|
Packit |
46375d |
sig = infoc[1] ", " infoc[2]
|
|
Packit |
46375d |
out[sig] = out [sig] infoc[3] "|−|" changed[c] "#"
|
|
Packit |
46375d |
formatcount[infoc[3]] = formatcount[infoc[3]] - 1
|
|
Packit |
46375d |
maintcount[infomt[1]] = maintcount[infomt[1]] - 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
if ( plus[changed[c]] ) {
|
|
Packit |
46375d |
split(plus[changed[c]], infoc, "|")
|
|
Packit |
46375d |
sig = infoc[1] ", " infoc[2]
|
|
Packit |
46375d |
out[sig] = out [sig] infoc[3] "|+|" changed[c] "#"
|
|
Packit |
46375d |
formatcount[infoc[3]] = formatcount[infoc[3]] + 1
|
|
Packit |
46375d |
maintcount[infopt[1]] = maintcount[infopt[1]] + 1
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
no = asorti(out, outs)
|
|
Packit |
46375d |
for ( o = 1 ; o <= no ; o++ ) {
|
|
Packit |
46375d |
font = outs[o]
|
|
Packit |
46375d |
sub("#$", "", out[font])
|
|
Packit |
46375d |
nf = split(out[font],fs, "#")
|
|
Packit |
46375d |
asort(fs)
|
|
Packit |
46375d |
for ( f = 1 ; f <= nf ; f++ ) {
|
|
Packit |
46375d |
split(fs[f], oi, "|")
|
|
Packit |
46375d |
print " " oi[2] " " font ", " oi[1] "\t" oi[3]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
nf = asorti (formatcount, fcs)
|
|
Packit |
46375d |
for ( f = 1 ; f <= nf ; f++ ) {
|
|
Packit |
46375d |
if ( formatcount[fcs[f]] > 0 ) {
|
|
Packit |
46375d |
total = total "+" formatcount[fcs[f]] " " fcs[f] ", "
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
if ( formatcount[fcs[f]] < 0 ) {
|
|
Packit |
46375d |
total = total formatcount[fcs[f]] " " fcs[f] ", "
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
sub(", $", ".", total)
|
|
Packit |
46375d |
if ( total == "" ) {
|
|
Packit |
46375d |
total = "—"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
print ""
|
|
Packit |
46375d |
print "C. Font count changes: " total
|
|
Packit |
46375d |
print ""
|
|
Packit |
46375d |
print "D. Packager activity: "
|
|
Packit |
46375d |
for ( m in maintcount ) {
|
|
Packit |
46375d |
score = maintcount[m]
|
|
Packit |
46375d |
if ( score < 0 ) { score = - score }
|
|
Packit |
46375d |
score = score / 10000
|
|
Packit |
46375d |
rmaintcount[score] = rmaintcount[score] m "|"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
nc = asorti(rmaintcount, rmcs)
|
|
Packit |
46375d |
for ( c = nc ; c >= 1 ; c-- ) {
|
|
Packit |
46375d |
sub("\\|$", "", rmaintcount[rmcs[c]])
|
|
Packit |
46375d |
split(rmaintcount[rmcs[c]], maint, "|")
|
|
Packit |
46375d |
nm = asort(maint)
|
|
Packit |
46375d |
for ( m = 1 ; m <= nm ; m++ ) {
|
|
Packit |
46375d |
print maint[m]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}' "$1" "$2"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
compare_tests() {
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
BEGIN {
|
|
Packit |
46375d |
lh = 7
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
FNR==1 {
|
|
Packit |
46375d |
filenames = filenames FILENAME "|"
|
|
Packit |
46375d |
for (i = lh ; i <= NF ; i++) {
|
|
Packit |
46375d |
testid[ FILENAME "|" i ] = $i
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
FNR>1 {
|
|
Packit |
46375d |
for (i = lh ; i <= NF ; i++) {
|
|
Packit |
46375d |
score[ FILENAME "|" $1 "|" $2 "|" $3 "|" i ] += $i
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
sub("\\|$","",filenames)
|
|
Packit |
46375d |
split(filenames,filenamest,"|")
|
|
Packit |
46375d |
for ( sig in score ) {
|
|
Packit |
46375d |
split(sig,sigt,"|")
|
|
Packit |
46375d |
nsig = sigt[2] "|" sigt[3] "|" sigt[4] "|" testid[ sigt[1] "|" sigt[5] ]
|
|
Packit |
46375d |
if ( sigt[1] == filenamest[1] ) {
|
|
Packit |
46375d |
total_score[nsig] = total_score[nsig] - score[sig]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
if ( sigt[1] == filenamest[2] ) {
|
|
Packit |
46375d |
total_score[nsig] = total_score[nsig] + score[sig]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
for ( sig in total_score ) {
|
|
Packit |
46375d |
split(sig,sigt,"|")
|
|
Packit |
46375d |
if ( total_score[sig] != 0 ) {
|
|
Packit |
46375d |
test_diff[ sigt[4] ] = 1
|
|
Packit |
46375d |
pk_diff[ sigt[1] "|" sigt[2] "|" sigt[3] ] = 1
|
|
Packit |
46375d |
total_score_diff[sig] = total_score[sig]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
line = "Maintainer|SRPM|RPM|"
|
|
Packit |
46375d |
nt = asorti(test_diff)
|
|
Packit |
46375d |
for ( t = 1 ; t <= nt ; t++ ) {
|
|
Packit |
46375d |
line = line test_diff[t] "|"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
sub("\\|$","",line)
|
|
Packit |
46375d |
print line
|
|
Packit |
46375d |
np = asorti(pk_diff)
|
|
Packit |
46375d |
for ( p = 1 ; p <= np ; p++ ) {
|
|
Packit |
46375d |
line = pk_diff[p] "|"
|
|
Packit |
46375d |
for ( t = 1 ; t <= nt ; t++ ) {
|
|
Packit |
46375d |
line = line total_score_diff[ pk_diff[p] "|" test_diff[t] ] "|"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
sub("\\|$","",line)
|
|
Packit |
46375d |
print line
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}' "$1" "$2"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
|
|
Packit |
46375d |
pretty_print() {
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
BEGIN {
|
|
Packit |
46375d |
lh = 4
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
NR==1 {
|
|
Packit |
46375d |
max = NF
|
|
Packit |
46375d |
headline = "P#"
|
|
Packit |
46375d |
for ( i = lh ; i < max ; i++ ) {
|
|
Packit |
46375d |
headline = headline "|t" i+1-lh
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
print headline
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
NR>1 {
|
|
Packit |
46375d |
line = NR - 1
|
|
Packit |
46375d |
for ( i = lh ; i < max ; i++ ) {
|
|
Packit |
46375d |
if ( $i ) { line = line "|" $i }
|
|
Packit |
46375d |
else { line = line "|‧" }
|
|
Packit |
46375d |
total[i] = total[i] + $i
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
print line
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
END {
|
|
Packit |
46375d |
totalline = "Balance"
|
|
Packit |
46375d |
for ( i = lh ; i < max ; i++ ) {
|
|
Packit |
46375d |
totalline = totalline "|" total[i]
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
print totalline
|
|
Packit |
46375d |
}' "$1" | column -t -s '|'
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
BEGIN {
|
|
Packit |
46375d |
lh = 4
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
NR==1 {
|
|
Packit |
46375d |
print "P#|Maintainer|RPM|SRPM"
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
NR>1 {
|
|
Packit |
46375d |
line = NR - 1
|
|
Packit |
46375d |
for ( i = 1 ; i < lh ; i++ ) {
|
|
Packit |
46375d |
if ( $i ) { line = line "|" $i }
|
|
Packit |
46375d |
else { line = line "| " }
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
print line
|
|
Packit |
46375d |
}' "$1" | column -t -s '|'
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
|
|
Packit |
46375d |
awk -F '|' '
|
|
Packit |
46375d |
BEGIN { lh = 4 }
|
|
Packit |
46375d |
NR==1 {
|
|
Packit |
46375d |
for ( i = lh ; i < NF ; i++ ) {
|
|
Packit |
46375d |
print "t" i+1-lh "|" $i
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
}' "$1" \
|
|
Packit |
46375d |
| while read line ; do
|
|
Packit |
46375d |
testnumber=$(echo $line | cut -d "|" -f 1)
|
|
Packit |
46375d |
testid=$(echo $line | cut -d "|" -f 2)
|
|
Packit |
46375d |
echo -n "$testnumber. "
|
|
Packit |
46375d |
"$DATADIR/test-info" $testid title
|
|
Packit |
46375d |
done
|
|
Packit |
46375d |
}
|
|
Packit |
46375d |
|
|
Packit |
46375d |
[ "$#" -lt "2" ] && usage
|
|
Packit |
46375d |
|
|
Packit |
46375d |
TIMESTAMP=$(date -u +%Y%m%dT%H%M%SZ)
|
|
Packit |
46375d |
|
|
Packit |
46375d |
FL="consolidated-data.csv"
|
|
Packit |
46375d |
TSUM="test-summary.csv"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
TMPDIR=$(mktemp -d --tmpdir=/tmp "$(basename $0)-$TIMESTAMP-XXXXXXXXXX")
|
|
Packit |
46375d |
|
|
Packit |
46375d |
tar xf "$1" "*/$TSUM" -O > "$TMPDIR/1-$TSUM"
|
|
Packit |
46375d |
tar xf "$1" "*/$FL" -O > "$TMPDIR/1-$FL"
|
|
Packit |
46375d |
tar xf "$2" "*/$TSUM" -O > "$TMPDIR/2-$TSUM"
|
|
Packit |
46375d |
tar xf "$2" "*/$FL" -O > "$TMPDIR/2-$FL"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo "A. Test result changes:"
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
|
|
Packit |
46375d |
compare_tests "$TMPDIR/1-$TSUM" "$TMPDIR/2-$TSUM" > "$TMPDIR/D-$TSUM"
|
|
Packit |
46375d |
[ $(cat "$TMPDIR/D-$TSUM" | wc -l) -gt 1 ] && pretty_print "$TMPDIR/D-$TSUM"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
echo ""
|
|
Packit |
46375d |
find_package_changes "$TMPDIR/1-$FL" "$TMPDIR/2-$FL"
|
|
Packit |
46375d |
|
|
Packit |
46375d |
rm -fr "$TMPDIR"
|