libt2n: (reinhard) compile fixes.
[libt2n] / test-build-install-use
1 #!/bin/bash -x
2 set -o errexit
3 set -o nounset
4
5 # where is the source? (todo: we could checkout from svn)
6
7 LIBT2NSRC="$PWD"
8 LIBT2N_EXAMPLES="$PWD/examples-codegen"
9 EXAMPLES=2
10
11 # general settings
12
13 # todo: safe temp dir creation
14 INSTDIR="/tmp/jens-delme"
15 BUILDDIR="$INSTDIR/build"
16 mkdir "$INSTDIR"
17 mkdir "$BUILDDIR"
18 INSTPREFIX="$INSTDIR/usr"
19 MAKE="dmake"
20 DOCLEAN="true"
21
22 function prepend() {
23         if [ "x$1" = "x" ]; then
24                 echo "$2"
25         else
26                 echo "$2:$1"
27         fi
28 }
29
30 function build() {
31     # newer autoreconf (autoconf) versions don't have the -M option and no real replacement :-(
32     # (you can only set ACLOCAL_AMFLAGS in the Makefile.am)
33     # todo: this IMHO should be filed as bug against autoconf
34     # ugly workaround
35     autoreconf -f -i $@ || { aclocal --force $(echo "$@"|sed 's,-M,-I,') && libtoolize --copy --force && autoconf --force  && automake --add-missing --copy --force-missing; }
36     ./configure --prefix="$INSTPREFIX"
37     if $DOCLEAN; then
38         $MAKE distclean
39         ./configure --prefix="$INSTPREFIX"
40         $MAKE clean
41         # ensure make clean works twice (did not work at some point)
42         $MAKE clean
43
44         # todo: at the moment distcheck does not work on a distclean source
45         $MAKE
46         $MAKE clean
47         $MAKE distcheck
48     fi
49
50     $MAKE install
51 }
52
53 # 1. build and install lib and codegen
54 cd "$LIBT2NSRC"
55 build
56 echo "OK: library and code generator compiled and installed"
57
58 # prepare environment to use installed libt2n and code generator in non-standard directory
59 # temporarily disable nounset
60
61 set +o nounset
62 export PATH=$(prepend "$PATH" "$INSTPREFIX/bin")
63 export LD_LIBRARY_PATH=$(prepend "$LD_LIBRARY_PATH" "$INSTPREFIX/lib")
64 export PKG_CONFIG_PATH=$(prepend "$PKG_CONFIG_PATH" "$INSTPREFIX/lib/pkgconfig")
65 set -o nounset
66
67 for EXAMPLE in $(seq 1 $EXAMPLES); do
68
69     # 2. build example
70
71     cp -af "$LIBT2N_EXAMPLES/example$EXAMPLE" "$BUILDDIR"
72     cd "$BUILDDIR/example$EXAMPLE"
73     build -M "$INSTPREFIX/share/aclocal"
74     echo "OK: example $EXAMPLE using installed libt2n works"
75
76     # 3. compile client using the now installed default lib
77     cp -af "$LIBT2N_EXAMPLES/example$EXAMPLE-client" "$BUILDDIR"
78     cd "$BUILDDIR/example$EXAMPLE-client"
79     build -M "$INSTPREFIX/share/aclocal"
80     echo "OK: example $EXAMPLE using installed example lib works"
81
82     # 4. test installed server and client
83     libt2n-example$EXAMPLE-server &
84     SPID="$!"
85     # ugly
86     sleep 1
87     if libt2n-example$EXAMPLE-client; then
88         echo "installed client and server work"
89         RET="0"
90     else
91         echo "installed client and server don't work"
92         RET="1"
93     fi
94     kill "$SPID"
95     if [ "$RET" = "1" ]; then
96         exit 1
97     fi
98 done
99
100 echo Everything is fine