#! /usr/bin/env bash # Build and run ODB tests using a precompiled binary. # # Usage: build [options] # # is the script that sets up the configuration. # # -rebuild # -test # -db # -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- # 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