diff options
Diffstat (limited to 'binary/build-test')
-rwxr-xr-x | binary/build-test | 268 |
1 files changed, 268 insertions, 0 deletions
diff --git a/binary/build-test b/binary/build-test new file mode 100755 index 0000000..daddad2 --- /dev/null +++ b/binary/build-test @@ -0,0 +1,268 @@ +#! /usr/bin/env bash + +# Build and run ODB tests using a precompiled binary. +# +# Usage: build [options] <config> +# +# <config> is the script that sets up the configuration. +# +# -rebuild +# -test +# -db <database> +# -j +# +trap 'exit 1' ERR + +function error () +{ + echo "$*" 1>&2 +} + +function unpack () +{ + rm -rf $1-$mver.*/ + bzip2 -dc $1-$mver.*.tar.bz2 | $tar xf - +} + +# Use gtar if agailable +# +if type -P gtar &>/dev/null; then + tar=gtar +else + tar=tar +fi + +test=n +rebuild=n +jobs=1 +db= + +while [ $# -gt 0 ]; do + case $1 in + -rebuild) + rebuild=y + shift + ;; + -test) + test=y + shift + ;; + -db) + shift + db="$db $1" + shift + ;; + -j) + shift + jobs=$1 + shift + ;; + -*) + error "unknown option: $1" + exit 1 + ;; + *) + break + ;; + esac +done + +if [ "$1" = "" ]; then + error "Usage: $0 [options] config" + exit 1 +fi + +if [ "$db" = "" ]; then + db="oracle pgsql sqlite mysql" + + if [ "`uname`" = "Linux" ]; then + db="mssql $db" + fi +fi + +# Read in the config file. +# +source $1 + +# +# +wd=`pwd` +ver=`echo odb-*-*-*.tar.bz2 | sed -e "s%odb-\([^-]*\).*.tar.bz2%\1%"` +mver=`echo $ver | sed -e 's%\([0-9]*\.[0-9]*\).*%\1%'` +arch=`echo odb-$ver-*.tar.bz2 | sed -e "s%odb-$ver-\(.*\).tar.bz2%\1%"` + +# Clean and unpack everything up if we are rebuilding. +# +if [ $rebuild = y ]; then + unpack libodb + + for d in $db; do + unpack libodb-$d + done + + unpack libodb-boost + unpack libodb-qt + unpack odb-tests + unpack odb-examples + + bzip2 -dc odb-$ver-$arch.tar.bz2 | $tar xf - + + for d in $db; do + rm -rf odb-tests-$d + rm -rf odb-examples-$d + done +fi + +# Build libodb +# +libodb=`echo libodb-$mver.*/` +cd $libodb + +if [ $rebuild = y -o ! -f Makefile ]; then + ./configure \ +CC="$CC" \ +CXX="$CXX" \ +CPPFLAGS="$CPPFLAGS" \ +CXXFLAGS="$CXXFLAGS" \ +LDFLAGS="$LDFLAGS" +fi + +make -j $jobs +cd .. + +# Build libodb-<db> +# +for d in $db; do + cd libodb-$d-$mver.*/ + + optvar=${d}_build_options + + if [ $rebuild = y -o ! -f Makefile ]; then + ./configure \ +--with-libodb=../$libodb \ +${!optvar} \ +CC="$CC" \ +CXX="$CXX" \ +CPPFLAGS="$CPPFLAGS" \ +CXXFLAGS="$CXXFLAGS" \ +LDFLAGS="$LDFLAGS" + fi + + make -j $jobs + cd .. +done + +# Build libodb-boost +# +libodb_boost=`echo libodb-boost-$mver.*/` + +if [ "$with_boost" = "y" ]; then + cd $libodb_boost + + if [ $rebuild = y -o ! -f Makefile ]; then + ./configure \ +--with-libodb=../$libodb \ +CC="$CC" \ +CXX="$CXX" \ +CPPFLAGS="$CPPFLAGS" \ +CXXFLAGS="$CXXFLAGS" \ +LDFLAGS="$LDFLAGS" + fi + + make -j $jobs + cd .. +fi + +# Build libodb-qt +# +libodb_qt=`echo libodb-qt-$mver.*/` + +if [ "$with_qt" = "y" ]; then + cd $libodb_qt + + if [ $rebuild = y -o ! -f Makefile ]; then + ./configure \ +--with-libodb=../$libodb \ +CC="$CC" \ +CXX="$CXX" \ +CPPFLAGS="$CPPFLAGS" \ +CXXFLAGS="$CXXFLAGS" \ +LDFLAGS="$LDFLAGS" + fi + + make -j $jobs + cd .. +fi + +# Build odb-tests +# +for d in $db; do + mkdir -p odb-tests-$d + cd odb-tests-$d + + optvar=${d}_use_options + + if [ $rebuild = y -o ! -f Makefile ]; then + + libodb_db=`echo ../libodb-$d-$mver.*/` + + ../odb-tests-$mver.*/configure \ +--with-database=$d \ +--with-libodb=../$libodb \ +--with-libodb-$d=$libodb_db \ +--with-libodb-boost=../$libodb_boost \ +--with-libodb-qt=../$libodb_qt \ +${!optvar} \ +CC="$CC" \ +CXX="$CXX" \ +CPPFLAGS="$CPPFLAGS" \ +CXXFLAGS="$CXXFLAGS" \ +LDFLAGS="$LDFLAGS" \ +ODB=$wd/odb-$ver-$arch/bin/odb + + fi + + make -j $jobs + + if [ $test = y ]; then + make check + fi + + cd .. +done + +# Build odb-examples +# +for d in $db; do + mkdir -p odb-examples-$d + cd odb-examples-$d + + optvar=${d}_use_options + + if [ $rebuild = y -o ! -f Makefile ]; then + + libodb_db=`echo ../libodb-$d-$mver.*/` + + ../odb-examples-$mver.*/configure \ +--with-database=$d \ +--with-libodb=../$libodb \ +--with-libodb-$d=$libodb_db \ +--with-libodb-boost=../$libodb_boost \ +--with-libodb-qt=../$libodb_qt \ +${!optvar} \ +CC="$CC" \ +CXX="$CXX" \ +CPPFLAGS="$CPPFLAGS" \ +CXXFLAGS="$CXXFLAGS" \ +LDFLAGS="$LDFLAGS" \ +ODB=$wd/odb-$ver-$arch/bin/odb + fi + + make -j $jobs + + if [ $test = y ]; then + make check + fi + + cd .. +done |