From ad32ee8f80fabe4d2da81fa944be3c1aca7269d0 Mon Sep 17 00:00:00 2001
From: Boris Kolpackov <boris@codesynthesis.com>
Date: Mon, 25 Jul 2011 11:30:44 +0200
Subject: Add script for running build/install/test on UNIX

---
 test/unix/build | 256 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 256 insertions(+)
 create mode 100755 test/unix/build

(limited to 'test/unix/build')

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
-- 
cgit v1.1