chiark / gitweb /
Merge subdirmk
[secnet.git] / comprehensive-test
1 #!/bin/bash
2 set -e
3 set -o pipefail
4
5 oot_rel=oot-rel.tmp~
6 oot_abs=$(cd .. && pwd)/oot-comprehensive-test.tmp~
7
8 nproc=$(nproc || echo 1)
9 mflags=-j$nproc
10
11 for arg in "$@"; do
12     case "$arg" in
13         --oot-abs=*) oot_abs=${arg%*=} ;;
14         *) echo >&2 "unknown arg/option $1"; exit 1;;
15     esac
16 done
17
18 x () { echo >&2 "x $*"; "$@"; }
19
20 srcdir=$(pwd)
21
22 build_and_test () {
23     cd "$srcdir"
24     x git clean -xdff
25     if [ "x$1" != x. ]; then
26         rm -rf "$1"
27         mkdir "$1"
28     fi
29     x ./autogen.sh
30     x cd "$1"
31     x "$srcdir/configure" CFLAGS='-O0 -g'
32     x make $mflags all check
33     for t in mtest/check stest/check; do
34         x make $mflags clean
35         x make $mflags $t
36     done
37     x make $mflags clean
38     if [ "x$1" != x. ]; then
39          find -type f
40      else
41          git-ls-files -o
42     fi | perl -ne '
43         s{^\./}{};
44         s{^}{/};
45         next if m{^/ct-files$};
46         next if m{^/autom4te\.cache/};
47         next if m{/Makefile$};
48         next if m{\.mk$};
49         next if m{^/common\.make$};
50         next if m{^/(?:config|\.makefiles)\.stamp$};
51         next if m{^/config\.(?:log|status|h)$};
52         warn "clean in '"$1"' missed $_";
53         $bad=1;
54         END { exit $bad; }
55     '
56     cd "$srcdir"
57 }
58
59 build_and_test .
60 build_and_test "$oot_rel"
61 build_and_test "$oot_abs"
62
63 echo "----- $0 ok -----"