| 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 |