#! /usr/bin/env bash # Create ODB source distributions # # -rebuild # -complete package/build libcutl and the ODB compiler; implies -rebuild # -test # -odb # trap 'exit 1' ERR function error () { echo "$*" 1>&2 } wd=`pwd` out_root=/tmp src_root=$HOME/work/odb ver=`cat $src_root/odb/version` test=n rebuild=n complete=n odb=$src_root/odb/odb/odb CXXFLAGS="-W -Wall -Wno-unknown-pragmas" while [ $# -gt 0 ]; do case $1 in -rebuild) rebuild=y shift ;; -complete) rebuild=y complete=y shift ;; -test) test=y shift ;; -odb) shift odb=$1 shift ;; *) error "unknown option: $1" exit 1 ;; esac done # Clean everything up if we are rebuilding. # if [ $rebuild = y ]; then rm -rf $out_root/libodb/* rm -rf $out_root/libodb-mysql/* rm -rf $out_root/libodb-tracer/* rm -rf $out_root/libodb-boost/* rm -rf $out_root/odb-tests/* rm -rf $out_root/odb-examples/* if [ $complete = y ]; then rm -rf $out_root/libcutl/* rm -rf $out_root/odb/* fi rm -rf $out_root/pack fi mkdir -p $out_root/libodb mkdir -p $out_root/libodb-mysql mkdir -p $out_root/libodb-tracer mkdir -p $out_root/libodb-boost mkdir -p $out_root/odb-tests mkdir -p $out_root/odb-examples if [ $complete = y ]; then mkdir -p $out_root/libcutl mkdir -p $out_root/odb fi mkdir -p $out_root/pack # Build libcutl # if [ $complete = y ]; then cd $src_root/../cutl ./dist.sh $out_root/libcutl cd $wd fi # Build ODB compiler # if [ $complete = y ]; then make -C $src_root/odb dist dist_prefix=$out_root/odb cd $out_root/odb ./bootstrap ./configure --with-libcutl=../libcutl CXX=g++-4.5 CXXFLAGS="$CXXFLAGS" make -j 8 make dist cd $wd cp $out_root/odb/odb-$ver.zip $out_root/pack/ cp $out_root/odb/odb-$ver.tar.gz $out_root/pack/ cp $out_root/odb/odb-$ver.tar.bz2 $out_root/pack/ odb=$out_root/odb/odb/odb fi # Build libodb # make -C $src_root/libodb dist dist_prefix=$out_root/libodb cd $out_root/libodb if [ $rebuild = y ]; then ./bootstrap ./configure CXXFLAGS="$CXXFLAGS" fi make -j 8 make dist cd $wd cp $out_root/libodb/libodb-$ver.zip $out_root/pack/ cp $out_root/libodb/libodb-$ver.tar.gz $out_root/pack/ cp $out_root/libodb/libodb-$ver.tar.bz2 $out_root/pack/ # Build libodb-mysql # make -C $src_root/libodb-mysql dist dist_prefix=$out_root/libodb-mysql cd $out_root/libodb-mysql if [ $rebuild = y ]; then ./bootstrap ./configure --with-libodb=../libodb CXXFLAGS="$CXXFLAGS" fi make -j 8 make dist cd $wd cp $out_root/libodb-mysql/libodb-mysql-$ver.zip $out_root/pack/ cp $out_root/libodb-mysql/libodb-mysql-$ver.tar.gz $out_root/pack/ cp $out_root/libodb-mysql/libodb-mysql-$ver.tar.bz2 $out_root/pack/ # Build libodb-tracer # make -C $src_root/libodb-tracer dist dist_prefix=$out_root/libodb-tracer cd $out_root/libodb-tracer if [ $rebuild = y ]; then ./bootstrap ./configure --with-libodb=../libodb CXXFLAGS="$CXXFLAGS" fi make -j 8 make dist cd $wd cp $out_root/libodb-tracer/libodb-tracer-$ver.zip $out_root/pack/ cp $out_root/libodb-tracer/libodb-tracer-$ver.tar.gz $out_root/pack/ cp $out_root/libodb-tracer/libodb-tracer-$ver.tar.bz2 $out_root/pack/ # Build libodb-boost # make -C $src_root/libodb-boost dist dist_prefix=$out_root/libodb-boost cd $out_root/libodb-boost if [ $rebuild = y ]; then ./bootstrap ./configure --with-libodb=../libodb CXXFLAGS="$CXXFLAGS" fi make -j 8 make dist cd $wd cp $out_root/libodb-boost/libodb-boost-$ver.zip $out_root/pack/ cp $out_root/libodb-boost/libodb-boost-$ver.tar.gz $out_root/pack/ cp $out_root/libodb-boost/libodb-boost-$ver.tar.bz2 $out_root/pack/ # Build odb-tests # make -C $src_root/tests dist dist_prefix=$out_root/odb-tests cd $out_root/odb-tests if [ $rebuild = y ]; then ./bootstrap ./configure \ --with-database=mysql \ --with-libodb=../libodb \ --with-libodb-tracer=../libodb-tracer \ --with-libodb-mysql=../libodb-mysql \ --with-libodb-boost=../libodb-boost \ CXXFLAGS="$CXXFLAGS" \ ODB=$odb fi if [ $test = y ]; then make -j 8 check fi make dist cd $wd cp $out_root/odb-tests/odb-tests-$ver.zip $out_root/pack/ cp $out_root/odb-tests/odb-tests-$ver.tar.gz $out_root/pack/ cp $out_root/odb-tests/odb-tests-$ver.tar.bz2 $out_root/pack/ # Build odb-examples # make -C $src_root/examples dist dist_prefix=$out_root/odb-examples cd $out_root/odb-examples if [ $rebuild = y ]; then ./bootstrap ./configure \ --with-database=mysql \ --with-libodb=../libodb \ --with-libodb-mysql=../libodb-mysql \ --with-libodb-boost=../libodb-boost \ CXXFLAGS="$CXXFLAGS" \ ODB=$odb fi if [ $test = y ]; then make -j 8 check fi make dist cd $wd cp $out_root/odb-examples/odb-examples-$ver.zip $out_root/pack/ cp $out_root/odb-examples/odb-examples-$ver.tar.gz $out_root/pack/ cp $out_root/odb-examples/odb-examples-$ver.tar.bz2 $out_root/pack/