diff options
Diffstat (limited to 'binary/linux-gnu/build-dist')
-rwxr-xr-x | binary/linux-gnu/build-dist | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/binary/linux-gnu/build-dist b/binary/linux-gnu/build-dist new file mode 100755 index 0000000..3dfbd62 --- /dev/null +++ b/binary/linux-gnu/build-dist @@ -0,0 +1,194 @@ +#! /usr/bin/env bash + +# Create ODB compiler Linux distribution. +# +# -rebuild +# -arch +# +trap 'exit 1' ERR + +function error () +{ + echo "$*" 1>&2 +} + +rebuild=n + +arch=x86_64-linux-gnu +rebuild=n + +while [ $# -gt 0 ]; do + case $1 in + -rebuild) + rebuild=y + shift + ;; + -arch) + shift + arch=$1 + shift + ;; + *) + error "unknown option: $1" + exit 1 + ;; + esac +done + +wd=`pwd` +cpu=`echo $arch | sed -e 's/^\([^-]*\)-.*$/\1/'` + +cver=`echo libcutl-?.*.tar.gz | sed -e "s%libcutl-\(.*\).tar.gz%\1%"` +over=`echo odb-?.*.tar.gz | sed -e "s%odb-\(.*\).tar.gz%\1%"` +mver=`echo $over | sed -e 's%\([0-9]*\.[0-9]*\).*%\1%'` + +install_root="/tmp/odb-$over-$cpu-linux-gnu" + +export PATH=/$arch/bin:$PATH + +# Clean everything up if we are rebuilding. +# +if [ $rebuild = y ]; then + rm -rf libcutl + rm -rf odb + rm -rf $install_root + rm -rf libodb + rm -rf libodb-boost + rm -rf libodb-qt + + if [ ! -d ../boost-binary ]; then + error "no boost distribution in ../boost-binary" + exit 1 + fi + + tar xfz libcutl-$cver.tar.gz + mv libcutl-$cver libcutl + + tar xfz odb-$over.tar.gz + mv odb-$over odb + + libodb=`echo libodb-$mver.*.tar.gz | sed -e 's%\(.*\)\.tar\.gz%\1%'` + tar xfz $libodb.tar.gz + mv $libodb libodb + + libodb_boost=`echo libodb-boost-$mver.*.tar.gz | sed -e 's%\(.*\)\.tar\.gz%\1%'` + tar xfz $libodb_boost.tar.gz + mv $libodb_boost libodb-boost + + libodb_qt=`echo libodb-qt-$mver.*.tar.gz | sed -e 's%\(.*\)\.tar\.gz%\1%'` + tar xfz $libodb_qt.tar.gz + mv $libodb_qt libodb-qt +fi + +rm -f /tmp/odb-$over-$cpu-linux-gnu.tar.bz2 + +# Build libcutl +# +cd libcutl + +if [ $rebuild = y ]; then + ../libcutl-configure +fi + +make +cd .. + +# Build odb +# +cd odb + +if [ $rebuild = y ]; then + ../odb-configure $over $arch $install_root +fi + +make +make install-strip +cd .. + +# Build libodb +# +cd libodb + +if [ $rebuild = y ]; then + ../libodb-configure $install_root/lib/odb/$arch +fi + +make +cd odb +make install-data +cd ../.. + +# Build libodb-boost +# +cd libodb-boost + +if [ $rebuild = y ]; then + ../libodb-boost-configure $install_root/lib/odb/$arch +fi + +make +make install-data +cd .. + +# Build libodb-qt +# +cd libodb-qt + +if [ $rebuild = y ]; then + ../libodb-qt-configure $install_root/lib/odb/$arch +fi + +make +make install-data +cd .. + +# Copy /$arch over to installation +# +cp -r /$arch $install_root/lib/odb/ + +# Copy the default options file. +# +mkdir -p $install_root/etc/odb +cp -L ./default.options $install_root/etc/odb/ + +f="$install_root/etc/odb/default.options" + +echo '' >>$f +echo '# Debian/Ubuntu new multiarch support places certain headers into' >>$f +echo '# /usr/include/<arch>. Add that path to the search list but use' >>$f +echo '# -idirafter to make sure it is used as a last resort only.' >>$f +echo '#' >>$f +if [ "$arch" = "x86_64-linux-gnu" ]; then + echo '-idirafter /usr/include/x86_64-linux-gnu' >> $f +else + echo '-idirafter /usr/include/i386-linux-gnu' >> $f +fi + +# Copy manifest and README. +# +cp -L manifest $install_root/lib/odb/$arch/ +cp -L README $install_root/ + +# Move doc and man out of share/ +# +rm -rf $install_root/doc $install_root/man +mv $install_root/share/man $install_root/ +mv $install_root/share/doc/odb $install_root/doc +rm -r $install_root/share + + +# Clean some things up. +# +rm -f `find $install_root -name '*.la'` + +# Remove features.h from include-fixed. This file causes trouble on newer +# distributions. +# +include_fixed=`find $install_root/lib/odb/$arch -type d -name include-fixed` +rm $include_fixed/features.h + +# Pack it up. +# +cd /tmp +tar cfj $wd/test/odb-$over-$cpu-linux-gnu.tar.bz2 odb-$over-$cpu-linux-gnu +cd $wd |