confdiff.sh: A testing script for comparing configs settings
authorDan Nicholson <dbn.lists@gmail.com>
Wed, 24 Oct 2007 01:17:16 +0000 (18:17 -0700)
committerDan Nicholson <dbn.lists@gmail.com>
Wed, 31 Oct 2007 21:59:13 +0000 (14:59 -0700)
This is a simple script that compares the make variables set by two
different configs stubs. The purpose is to highlight differences so
that any unnecessary duplication or divergence can be removed.

For example, on Linux x86:
    $ ./bin/confdiff.sh linux linux-x86

The output isn't very clean, but it should highlight that the only
difference is that the x86 target uses x86 assembler sources.

The script uses bash, mktemp, make, sed and diff. It is probably not
very portable and might only work on GNU make.

bin/confdiff.sh [new file with mode: 0755]

diff --git a/bin/confdiff.sh b/bin/confdiff.sh
new file mode 100755 (executable)
index 0000000..568fcd6
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/bash -e
+
+usage()
+{
+       echo "Usage: $0 <target1> <target2>"
+       echo "Highlight differences between Mesa configs"
+       echo "Example:"
+       echo "  $0 linux linux-x86"
+}
+
+die()
+{
+       echo "$@" >&2
+       return 1
+}
+
+case "$1" in
+-h|--help) usage; exit 0;;
+esac
+
+[ $# -lt 2 ] && die 2 targets needed. See $0 --help
+target1=$1
+target2=$2
+
+topdir=$(cd "`dirname $0`"/..; pwd)
+cd "$topdir"
+
+[ -f "./configs/$target1" ] || die Missing configs/$target1
+[ -f "./configs/$target2" ] || die Missing configs/$target2
+
+trap 'rm -f "$t1" "$t2"' 0
+
+t1=$(mktemp)
+t2=$(mktemp)
+
+make -f- -n -p <<EOF | sed '/^# Not a target/,/^$/d' > $t1
+TOP = .
+include \$(TOP)/configs/$target1
+default:
+EOF
+
+make -f- -n -p <<EOF | sed '/^# Not a target/,/^$/d' > $t2
+TOP = .
+include \$(TOP)/configs/$target2
+default:
+EOF
+
+diff -pu -I'^#' $t1 $t2