From 340ee4f40791d16ab778a473788c1a0645b83993 Mon Sep 17 00:00:00 2001
From: Boris Kolpackov <boris@codesynthesis.com>
Date: Fri, 15 Feb 2013 09:04:02 +0200
Subject: Add binary packaging and test scripts

---
 binary/build-test | 268 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 binary/pack       |  55 +++++++++++
 2 files changed, 323 insertions(+)
 create mode 100755 binary/build-test
 create mode 100755 binary/pack

(limited to 'binary')

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