~linaro-toolchain-dev/cbuild/tools

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
#!/bin/bash
#
# Take all of the .sum files from two directories and generate the differences
#
# Example:
#  difftests.sh \ 
#   build/gcc-4.6+svn173209/logs/armv7l-maverick-cbuild113-ursa3-cortexa9r1 \
#   build/gcc-4.6+svn173722/logs/armv7l-maverick-cbuild114-ursa4-cortexa9r1
#

set -e

base=$1
next=$2

dir=`mktemp -d difftests.XXXXXXXXXX`
trap "rm -rf $dir" EXIT

mkdir -p $dir/base
mkdir -p $dir/next

# Copy across all logs
cp $base/*.sum* $dir/base
cp $next/*.sum* $dir/next
unxz -f $dir/base/*.xz $dir/next/*.xz

# Pull out jus the PASS/FAIL/etc lines and sort by test name
#  * Change absolute path names to .../
#  * Drop all limits tests
#
for i in `find $dir -name "*.sum"`; do
    grep -E '^[A-Z]+:' $i \
        | grep -Ev limits- \
        | grep -Ev /guality/ \
        | sed -r 's#/scratch/\w+/\w+/\w+/\w+/[^/]+#...#g' \
        | sed -r "s#UNSUPPORTED: .+/testsuite/#UNSUPPORTED: #" \
        | sort -k 2 > $i.tmp
    mv $i.tmp $i
done

# diff returns non-zero if there is a difference
set +e
(cd $dir && diff -U 0 -r base next) > $dir/diff.txt
# Drop anything but changes in test lines
grep -E '^[+-][A-Z]' $dir/diff.txt || true