diff options
Diffstat (limited to 'bin/algorithm-install')
-rwxr-xr-x | bin/algorithm-install | 150 |
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" |