diff options
-rwxr-xr-x | binary/build-test | 268 | ||||
-rwxr-xr-x | binary/pack | 55 |
2 files changed, 323 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 diff --git a/binary/pack b/binary/pack new file mode 100755 index 0000000..57cce4e --- /dev/null +++ b/binary/pack @@ -0,0 +1,55 @@ +#! /usr/bin/env bash + +# Pack ODB compiler sources and build scripts for building and testing a +# binary. +# +# Usage: pack <platform> +# +# <platforms> is one of: linux-gnu, darwin, solaris +# +# +trap 'exit 1' ERR + +function error () +{ + echo "$*" 1>&2 +} + +if [ "$1" = "" ]; then + error "Usage: $0 platform" + exit 1 +fi + +platform=$1 + +src=/tmp + +cver=`echo $src/libcutl-?.*.tar.gz | sed -e "s%$src/libcutl-\(.*\).tar.gz%\1%"` +over=`echo $src/pack/odb-?.*.tar.gz | sed -e "s%$src/pack/odb-\(.*\).tar.gz%\1%"` +mver=`echo $over | sed -e 's%\([0-9]*\.[0-9]*\).*%\1%'` + +out=/tmp/pack-$platform-$over + +# Clean everything up. +# +rm -rf $out +mkdir -p $out + +# Copy scripts. +# +cp -rL $platform/* $out/ + +# Copy sources for binary build. +# +cp $src/libcutl-$cver.tar.gz $out/ +cp $src/pack/odb-$over.tar.gz $out/ +cp $src/pack/libodb-$mver.*.tar.gz $out/ +cp $src/pack/libodb-boost-$mver.*.tar.gz $out/ +cp $src/pack/libodb-qt-$mver.*.tar.gz $out/ + +# Copy sources for testing. +# +cp $src/pack/lib*-$mver.*.tar.bz2 $out/test/ +cp $src/pack/odb-examples-$mver.*.tar.bz2 $out/test/ +cp $src/pack/odb-tests-$mver.*.tar.bz2 $out/test/ +cp ./build-test $out/test/ |