#!/bin/bash -x set -o errexit set -o nounset # where is the source? (todo: we could checkout from svn) LIBT2NSRC="$PWD" LIBT2N_EXAMPLES="$PWD/examples-codegen" EXAMPLES=2 # general settings # todo: safe temp dir creation INSTDIR="/tmp/jens-delme" BUILDDIR="$INSTDIR/build" mkdir "$INSTDIR" mkdir "$BUILDDIR" INSTPREFIX="$INSTDIR/usr" MAKE="dmake" DOCLEAN="true" function prepend() { if [ "x$1" = "x" ]; then echo "$2" else echo "$2:$1" fi } function build() { # newer autoreconf (autoconf) versions don't have the -M option and no real replacement :-( # (you can only set ACLOCAL_AMFLAGS in the Makefile.am) # todo: this IMHO should be filed as bug against autoconf # ugly workaround autoreconf -f -i $@ || { aclocal --force $(echo "$@"|sed 's,-M,-I,') && libtoolize --copy --force && autoconf --force && automake --add-missing --copy --force-missing; } ./configure --prefix="$INSTPREFIX" if $DOCLEAN; then $MAKE distclean ./configure --prefix="$INSTPREFIX" $MAKE clean # ensure make clean works twice (did not work at some point) $MAKE clean # todo: at the moment distcheck does not work on a distclean source $MAKE $MAKE clean $MAKE distcheck fi $MAKE install } # 1. build and install lib and codegen cd "$LIBT2NSRC" build echo "OK: library and code generator compiled and installed" # prepare environment to use installed libt2n and code generator in non-standard directory # temporarily disable nounset set +o nounset export PATH=$(prepend "$PATH" "$INSTPREFIX/bin") export LD_LIBRARY_PATH=$(prepend "$LD_LIBRARY_PATH" "$INSTPREFIX/lib") export PKG_CONFIG_PATH=$(prepend "$PKG_CONFIG_PATH" "$INSTPREFIX/lib/pkgconfig") set -o nounset for EXAMPLE in $(seq 1 $EXAMPLES); do # 2. build example cp -af "$LIBT2N_EXAMPLES/example$EXAMPLE" "$BUILDDIR" cd "$BUILDDIR/example$EXAMPLE" build -M "$INSTPREFIX/share/aclocal" echo "OK: example $EXAMPLE using installed libt2n works" # 3. compile client using the now installed default lib cp -af "$LIBT2N_EXAMPLES/example$EXAMPLE-client" "$BUILDDIR" cd "$BUILDDIR/example$EXAMPLE-client" build -M "$INSTPREFIX/share/aclocal" echo "OK: example $EXAMPLE using installed example lib works" # 4. test installed server and client libt2n-example$EXAMPLE-server & SPID="$!" # ugly sleep 1 if libt2n-example$EXAMPLE-client; then echo "installed client and server work" RET="0" else echo "installed client and server don't work" RET="1" fi kill "$SPID" if [ "$RET" = "1" ]; then exit 1 fi done echo Everything is fine