#! /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 # -j # -cxx # -cxxp # 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="oracle 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-oracle libodb-pgsql libodb-sqlite libodb-mysql \ 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-. # 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-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