| 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="false" |
| 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 | autoreconf -f -i $@ |
| 32 | ./configure --prefix="$INSTPREFIX" |
| 33 | if $DOCLEAN; then |
| 34 | $MAKE distclean |
| 35 | ./configure --prefix="$INSTPREFIX" |
| 36 | $MAKE clean |
| 37 | # ensure make clean works twice (did not work at some point) |
| 38 | $MAKE clean |
| 39 | |
| 40 | # todo: at the moment distcheck does not work on a distclean source |
| 41 | $MAKE |
| 42 | $MAKE clean |
| 43 | $MAKE distcheck |
| 44 | fi |
| 45 | |
| 46 | $MAKE install |
| 47 | } |
| 48 | |
| 49 | # 1. build and install lib and codegen |
| 50 | cd "$LIBT2NSRC" |
| 51 | build |
| 52 | echo "OK: library and code generator compiled and installed" |
| 53 | |
| 54 | # prepare environment to use installed libt2n and code generator in non-standard directory |
| 55 | # temporarily disable nounset |
| 56 | |
| 57 | set +o nounset |
| 58 | export PATH=$(prepend "$PATH" "$INSTPREFIX/bin") |
| 59 | export LD_LIBRARY_PATH=$(prepend "$LD_LIBRARY_PATH" "$INSTPREFIX/lib") |
| 60 | export PKG_CONFIG_PATH=$(prepend "$PKG_CONFIG_PATH" "$INSTPREFIX/lib/pkgconfig") |
| 61 | set -o nounset |
| 62 | |
| 63 | for EXAMPLE in $(seq 1 $EXAMPLES); do |
| 64 | |
| 65 | # 2. build example |
| 66 | |
| 67 | cp -af "$LIBT2N_EXAMPLES/example$EXAMPLE" "$BUILDDIR" |
| 68 | cd "$BUILDDIR/example$EXAMPLE" |
| 69 | build -M "$INSTPREFIX/share/aclocal" |
| 70 | echo "OK: example $EXAMPLE using installed libt2n works" |
| 71 | |
| 72 | # 3. compile client using the now installed default lib |
| 73 | cp -af "$LIBT2N_EXAMPLES/example$EXAMPLE-client" "$BUILDDIR" |
| 74 | cd "$BUILDDIR/example$EXAMPLE-client" |
| 75 | build -M "$INSTPREFIX/share/aclocal" |
| 76 | echo "OK: example $EXAMPLE using installed example lib works" |
| 77 | |
| 78 | # 4. test installed server and client |
| 79 | libt2n-example$EXAMPLE-server & |
| 80 | SPID="$!" |
| 81 | # ugly |
| 82 | sleep 1 |
| 83 | if libt2n-example$EXAMPLE-client; then |
| 84 | echo "installed client and server work" |
| 85 | RET="0" |
| 86 | else |
| 87 | echo "installed client and server don't work" |
| 88 | RET="1" |
| 89 | fi |
| 90 | kill "$SPID" |
| 91 | if [ "$RET" = "1" ]; then |
| 92 | exit 1 |
| 93 | fi |
| 94 | done |
| 95 | |
| 96 | echo Everything is fine |