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"
-INSTPREFIX="/tmp/jens-delme/usr"
-MAKE="dmake -d"
-./configure --prefix="$INSTPREFIX"
-$MAKE dist
-$MAKE install
-
-VERSION="0.1"
-TARFILE="libt2n-$VERSION.tar.gz"
-cp "$TARFILE" "$INSTDIR"
+mkdir "$BUILDDIR"
+INSTPREFIX="$INSTDIR/usr"
+MAKE="dmake"
+DOCLEAN="true"
-# now build example-client using installed libt2n
-cd "$INSTDIR"
-
-function append() {
+function prepend() {
if [ "x$1" = "x" ]; then
echo "$2"
else
- echo "$1:$2"
+ 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
+}
-# adjust some environment variables
-# (this is needed because we installed in non-standard directories)
+# 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=$(append "$PATH" "$INSTPREFIX/bin")
-export LD_LIBRARY_PATH=$(append "$LD_LIBRARY_PATH" "$INSTPREFIX/lib")
-export PKG_CONFIG_PATH=$(append "$PKG_CONFIG_PATH" "$INSTPREFIX/lib/pkgconfig")
+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
-tar xzvf "$TARFILE"
-mv "libt2n-$VERSION/example-codegen" .
-cd example-codegen
-autoreconf -f -i -M "$INSTDIR/usr/share/aclocal"
-./configure
-# todo: at the moment running make dist on clean source does not work
-$MAKE
-$MAKE distcheck
+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