summaryrefslogtreecommitdiff
path: root/bin/algorithm-install
diff options
context:
space:
mode:
Diffstat (limited to 'bin/algorithm-install')
-rwxr-xr-xbin/algorithm-install150
1 files changed, 95 insertions, 55 deletions
diff --git a/bin/algorithm-install b/bin/algorithm-install
index 20bf847..157eeb6 100755
--- a/bin/algorithm-install
+++ b/bin/algorithm-install
@@ -2,90 +2,130 @@
#
# Installs Opentox Webservices.
# Author: Christoph Helma, Andreas Maunz.
-#
-
+SELF=$(basename $0 -install)
OT_PREFIX="$HOME/opentox-ruby"
+OT_CONFIG="$HOME/.opentox"
RUBY_VER="1.9.3-p125"
RUBY_DWL="http://ftp.ruby-lang.org/pub/ruby/1.9"
+RUBY_DIR="$HOME/.rbenv/versions/$RUBY_VER"
FMINER_BRANCH="development"
-if [ "$(id -u)" = "0" ]; then
- echo "This script must be run as non-root." 1>&2
- exit 1
-fi
+[ "`id -u`" = "0" ] && echo "This script must be run as non-root." 1>&2 && exit 1
-# Enforce main directory
+# check wd is root of service
DIR=`pwd`
if echo $DIR | grep "algorithm/bin" >/dev/null 2>&1 ; then cd ..; fi
+# check main directories present
+([ -d $OT_PREFIX ] && [ -d $OT_CONFIG ]) || (echo "Main directories missing." 1>&2 && exit 1)
+[ -d $OT_PREFIX/opentox-server ] || (echo "Warning: opentox-server missing." 1>&2)
-# Ruby
-. $HOME/.opentox/opentox-ui.sh
-utils="git rbenv curl"
+# load main config
+! [ -f $OT_CONFIG/opentox-ui.sh ] && echo "Main config file missing." 1>&2 && exit 1 || . $OT_CONFIG/opentox-ui.sh
+
+# check utils
+utils="git rbenv curl gem make"
for u in $utils; do
- eval `echo $u | tr "[:lower:]" "[:upper:]"`=`which $u` || (echo "'$u' missing. Install '$u' first." && exit 1)
+ eval `echo $u | tr "[:lower:]" "[:upper:]"`=`which $u` || (echo "'$u' missing. Install '$u' first." 1>&2 && exit 1)
done
-
-LOG="$OT_PREFIX/tmp/`basename $0`.log"
-echo
-echo "Installation ('$LOG'):"
-
+# util functions
run_cmd ()
{
local cmd="$1"; local title="$2"
- printf "%30s" "'$title'"
+ printf "%50s" "'$title'"
if ! eval $cmd >>$LOG 2>&1 ; then
- printf "%50s\n" "FAIL"
+ printf "%30s\n" "FAIL"
echo "Last 10 lines of log:"
tail -10 "$LOG"
exit 1
fi
- printf "%50s\n" "DONE"
+ printf "%30s\n" "DONE"
}
-
install_ruby() {
+ printf "\n%50s\n" "RUBY"
local DIR=`pwd`
- [ -d $DIR/tmp ] || mkdir -p $DIR/tmp && cd $DIR/tmp
- ([ -d $DIR/tmp/ruby-$RUBY_VER ] || $CURL $RUBY_DWL/ruby-$RUBY_VER.tar.gz 2>/dev/null | tar xz) && cd ruby-$RUBY_VER
- cmd="./configure --prefix=$HOME/.rbenv/versions/$RUBY_VER" && run_cmd "$cmd" "Configure"
- cmd="make -j2" && run_cmd "$cmd" "Make"
- cmd="make install" && run_cmd "$cmd" "Install"
- $RBENV rehash
+ if ! [ $RBENV versions $RUBY_VER | grep $RUBY_VER>/dev/null ]; then
+ [ -d $DIR/tmp ] || mkdir -p $DIR/tmp && cd $DIR/tmp
+ ([ -d $DIR/tmp/ruby-$RUBY_VER ] || $CURL $RUBY_DWL/ruby-$RUBY_VER.tar.gz 2>/dev/null | tar xz) && cd ruby-$RUBY_VER
+ cmd="./configure --prefix=$RUBY_DIR" && run_cmd "$cmd" "Configure"
+ cmd="make -j2" && run_cmd "$cmd" "Make"
+ [ -d $RUBY_DIR ] && rm -rf $RUBY_DIR
+ cmd="make install" && run_cmd "$cmd" "Install"
+ fi
cd $DIR
+ cmd="$RBENV rehash" && run_cmd "$cmd" "rbenv rehash"
+ cmd="$RBENV local $RUBY_VER" && run_cmd "$cmd" "rbenv set ruby"
+}
+install_ob_ruby() {
+ printf "\n%50s\n" "OB RUBY BINDINGS"
+ local DIR=`pwd`
+ SRC_DIR=$(dirname $(find $OT_PREFIX -name openbabel-ruby.cpp))
+ [ -d "$SRC_DIR" ] || (echo "Sources not found." 1>&2 && exit 1)
+ cd $SRC_DIR
+ sed -i 's/Init_OpenBabel/Init_openbabel/g' openbabel-ruby.cpp # apply fix
+ RUBY=`which ruby`
+ cmd="$RUBY extconf.rb --with-openbabel-include=../../include --with-openbabel-lib=../../src/.libs" && run_cmd "$cmd" "Extconf ruby bindings"
+ cmd="$MAKE" && run_cmd "$cmd" "Make OB ruby bindings"
+ cmd="$MAKE install" && run_cmd "$cmd" "Install OB ruby bindings"
+ cd $DIR
+ cmd="$RBENV rehash" && run_cmd "$cmd" "rbenv rehash"
+}
+install_fminer() {
+ printf "\n%50s\n" "FMINER"
+ local DIR=`pwd`
+ eval RUBY_INC="-I`dirname $RUBY_DIR/include/ruby*/*linux/ruby`\ -I`dirname $RUBY_DIR/include/ruby*/ruby`"
+ eval OPBB_INC="-I`dirname $OT_PREFIX/openbabel*/include/openbabel*/openbabel`"
+ cmd="$GIT submodule init" && run_cmd "$cmd" "Fminer Init"
+ cmd="$GIT submodule update" && run_cmd "$cmd" "Fminer Update"
+ cd "libfminer/libbbrc">>$LOG 2>&1
+ $GIT checkout $FMINER_BRANCH>>$LOG 2>&1
+ $GIT pull >>$LOG 2>&1
+ cd - >>$LOG 2>&1
+ cd "libfminer/liblast">>$LOG 2>&1
+ $GIT checkout $FMINER_BRANCH>>$LOG 2>&1
+ $GIT pull >>$LOG 2>&1
+ cd - >>$LOG 2>&1
+ for mylib in bbrc last; do
+ cmd="sed -i 's,^INCLUDE_OB.*,INCLUDE_OB\ =\ $OPBB_INC,g' `pwd`/libfminer/lib$mylib/Makefile" && run_cmd "$cmd" "Makefile $mylib (OB)"
+ cmd="sed -i 's,^INCLUDE_RB.*,INCLUDE_RB\ =\ $RUBY_INC,g' `pwd`/libfminer/lib$mylib/Makefile" && run_cmd "$cmd" "Makefile $mylib (RB)"
+ done
+ cd "libfminer/libbbrc">>$LOG 2>&1
+ cmd="make ruby" && run_cmd "$cmd" "Make BBRC"
+ cd - >>$LOG 2>&1
+ cd "libfminer/liblast">>$LOG 2>&1
+ cmd="make ruby" && run_cmd "$cmd" "Make LAST"
+ cd - >>$LOG 2>&1
+ cd "last-utils">>$LOG 2>&1
+ $GIT checkout $FMINER_BRANCH>>$LOG 2>&1
+ $GIT pull >>$LOG 2>&1
+ cd $DIR
+}
+install_bundler() {
+ $GEM list | grep bundler >/dev/null 2>&1 || (cmd="$GEM install bundler" && run_cmd "$cmd" "Install bundler")
+ cmd="$RBENV rehash" && run_cmd "$cmd" "rbenv rehash"
+ BUNDLER=`which bundle`
+ cmd="$BUNDLER install" && run_cmd "$cmd" "Bundle install"
}
-[ "`$RBENV local`" = "$RUBY_VER" ] || install_ruby
-$RBENV local $RUBY_VER
+# # # Install
-# fminer etc
-eval RUBY_INC="-I`dirname $HOME/.rbenv/versions/$RUBY_VER/include/ruby*/*linux/ruby`\ -I`dirname $HOME/.rbenv/versions/$RUBY_VER/include/ruby*/ruby`"
-eval OPBB_INC="-I`dirname $OT_PREFIX/openbabel*/include/openbabel*/openbabel`"
-cmd="$GIT submodule init" && run_cmd "$cmd" "Fminer Init"
-cmd="$GIT submodule update" && run_cmd "$cmd" "Fminer Update"
-cd "libfminer/libbbrc">>$LOG 2>&1
-$GIT checkout $FMINER_BRANCH>>$LOG 2>&1
-$GIT pull >>$LOG 2>&1
-cd - >>$LOG 2>&1
-cd "libfminer/liblast">>$LOG 2>&1
-$GIT checkout $FMINER_BRANCH>>$LOG 2>&1
-$GIT pull >>$LOG 2>&1
-cd - >>$LOG 2>&1
-for mylib in bbrc last; do
- cmd="sed -i 's,^INCLUDE_OB.*,INCLUDE_OB\ =\ $OPBB_INC,g' `pwd`/libfminer/lib$mylib/Makefile" && run_cmd "$cmd" "Makefile $mylib (OB)"
- cmd="sed -i 's,^INCLUDE_RB.*,INCLUDE_RB\ =\ $RUBY_INC,g' `pwd`/libfminer/lib$mylib/Makefile" && run_cmd "$cmd" "Makefile $mylib (RB)"
-done
-cd "libfminer/libbbrc">>$LOG 2>&1
-cmd="make ruby" && run_cmd "$cmd" "Make BBRC"
-cd - >>$LOG 2>&1
-cd "libfminer/liblast">>$LOG 2>&1
-cmd="make ruby" && run_cmd "$cmd" "Make LAST"
-cd - >>$LOG 2>&1
-cd "last-utils">>$LOG 2>&1
-$GIT checkout $FMINER_BRANCH>>$LOG 2>&1
-$GIT pull >>$LOG 2>&1
+LOG="$OT_PREFIX/tmp/`basename $0`.log"
+echo
+echo "Installation ('$LOG'):"
+echo
-cd "$DIR"
+[ -d $OT_CONFIG/log ] || cmd="mkdir -p $OT_CONFIG/log" && run_cmd "$cmd" "Main log directory"
+[ -d $OT_CONFIG/config/$SELF ] || cmd="mkdir -p $OT_CONFIG/config/$SELF" && run_cmd "$cmd" "$SELF config directory"
+
+[ "`$RBENV local`" = "$RUBY_VER" ] || install_ruby
+[ -z `find $RUBY_DIR -name openbabel.so 2>/dev/null` ] && install_ob_ruby
+( [ -z `find libfminer/ -name bbrc.so 2>/dev/null` ] || [ -z `find libfminer/ -name last.so 2>/dev/null` ] ) && install_fminer
+echo
+install_bundler
+
+# return to wd
+cd "$DIR"