diff options
Diffstat (limited to 'test/unix/build')
-rwxr-xr-x | test/unix/build | 256 |
1 files changed, 256 insertions, 0 deletions
diff --git a/test/unix/build b/test/unix/build new file mode 100755 index 0000000..e6ebf22 --- /dev/null +++ b/test/unix/build @@ -0,0 +1,256 @@ +#! /usr/bin/env bash + +# Build and install ODB on a UNIX environment using all the default +# settings. Things are installed into /usr/local as they are being +# built. +# +# -rebuild +# -test +# -uninstall +# -db <database> +# -j <jobs> +# -cxx <c++-compiler> +# -cxxp <g++-plugin-compiler> +# +trap 'exit 1' ERR + +function error () +{ + echo "$*" 1>&2 +} + +# $1 path +# $2 version +# +function unpack () +{ + bzip2 -dc $1-$2.tar.bz2 | tar xf - + mv `basename $1`-$2 `basename $1` +} + +# $1 module +# +function uninstall () +{ + if [ -f $1/Makefile ]; then + sudo make -C $1 uninstall + fi +} + +rebuild=n +test=n +uninstall=n +db= +jobs=1 +cxx=g++ +cxxp=g++-4.5 + +while [ $# -gt 0 ]; do + case $1 in + -rebuild) + rebuild=y + shift + ;; + -test) + test=y + shift + ;; + -uninstall) + uninstall=y + shift + ;; + -db) + shift + db="$db $1" + shift + ;; + -j) + shift + jobs=$1 + shift + ;; + -cxx) + shift + cxx=$1 + shift + ;; + -cxxp) + shift + cxxp=$1 + shift + ;; + *) + error "unknown option: $1" + exit 1 + ;; + esac +done + +if [ "$db" = "" ]; then + db="pgsql sqlite mysql" +fi + +src=/tmp/pack + +v=`echo $src/libodb-?.*.tar.bz2 | sed -e "s%$src/libodb-\(.*\).tar.bz2%\1%"` +cutl_v=`echo $src/../libcutl-?.*.tar.bz2 | sed -e "s%$src/\.\./libcutl-\(.*\).tar.bz2%\1%"` + +install_packs="libodb libodb-pgsql libodb-sqlite libodb-mysql libodb-tracer \ +libodb-boost libodb-qt odb" + +packs=$install_packs + +if [ $test = y ]; then + packs="$packs odb-tests odb-examples" +fi + +# Uninstall if requested. +# +if [ $uninstall = y ]; then + + uninstall libcutl + + for p in $install_packs; do + uninstall $p + done + + exit 0 +fi + +# Clean everything up and unpack if we are rebuilding. +# +if [ $rebuild = y ]; then + + rm -rf libcutl + rm -rf $packs + for d in $db; do + rm -rf odb-tests-$d + rm -rf odb-examples-$d + done + + unpack $src/../libcutl $cutl_v + + for p in $packs; do + unpack $src/$p $v + done +fi + +# Build libcutl. +# +cd libcutl + +if [ $rebuild = y -o ! -f Makefile ]; then + ./configure CXX=$cxxp +fi + +make -j $jobs +sudo make install +cd .. + +# Build ODB compiler. +# +cd odb + +if [ $rebuild = y -o ! -f Makefile ]; then + ./configure CXX=$cxxp +fi + +make -j $jobs +sudo make install +cd .. + +# Build libodb. +# +cd libodb + +if [ $rebuild = y -o ! -f Makefile ]; then + ./configure CXX=$cxx +fi + +make -j $jobs +sudo make install +cd .. + +# Build libodb-<db>. +# +for d in $db; do + cd libodb-$d + + if [ $rebuild = y -o ! -f Makefile ]; then + ./configure CXX=$cxx + fi + + make -j $jobs + sudo make install + cd .. +done + +# Build libodb-tracer. +# +cd libodb-tracer + +if [ $rebuild = y -o ! -f Makefile ]; then + ./configure CXX=$cxx +fi + +make -j $jobs +sudo make install +cd .. + +# Build libodb-boost. +# +cd libodb-boost + +if [ $rebuild = y -o ! -f Makefile ]; then + ./configure CXX=$cxx +fi + +make -j $jobs +sudo make install +cd .. + +# Build libodb-qt. +# +cd libodb-qt + +if [ $rebuild = y -o ! -f Makefile ]; then + ./configure CXX=$cxx +fi + +make -j $jobs +sudo make install +cd .. + +if [ $test = n ]; then + exit 0 +fi + +# Build odb-tests. +# +for d in $db; do + mkdir -p odb-tests-$d + cd odb-tests-$d + + if [ $rebuild = y -o ! -f Makefile ]; then + ../odb-tests/configure --with-database=$d CXX=$cxx DIFFFLAGS=-ubB + fi + + make -j $jobs + make check + cd .. +done + +# Build odb-examples. +# +for d in $db; do + mkdir -p odb-examples-$d + cd odb-examples-$d + + if [ $rebuild = y -o ! -f Makefile ]; then + ../odb-examples/configure --with-database=$d CXX=$cxx + fi + + make -j $jobs + make check + cd .. +done |