diff options
author | Andreas Maunz <andreas@maunz.de> | 2012-03-27 14:14:43 +0200 |
---|---|---|
committer | Andreas Maunz <andreas@maunz.de> | 2012-03-27 14:14:43 +0200 |
commit | eed486a71faf10ce1ea32945f28367c6536e1a78 (patch) | |
tree | c0d79ddafc4984b4ebd2e51e583c2e4810548dc8 | |
parent | 75bb51309d2672c19586d4717e8cb7a85a010a6c (diff) |
Modular version, loading helpers from base installation
-rwxr-xr-x | base-install.sh | 4 | ||||
-rwxr-xr-x | config.sh | 8 | ||||
-rwxr-xr-x | install | 32 | ||||
-rwxr-xr-x | openbabel.sh | 6 | ||||
-rwxr-xr-x | utils.sh | 73 |
5 files changed, 86 insertions, 37 deletions
diff --git a/base-install.sh b/base-install.sh index 105c0ad..336126d 100755 --- a/base-install.sh +++ b/base-install.sh @@ -6,8 +6,8 @@ # Your installed packages are safe and will not be updated. # A Java configuration is created and included in your '$OT_UI_CONF'. -. "`pwd`/utils.sh" -DIR="`pwd`" +. ./utils.sh +DIR=`pwd` if [ "$(id -u)" = "0" ]; then echo "This script must not be run as root" 1>&2 @@ -9,16 +9,14 @@ OT_DIST="debian" # Linux distribution (debian) OT_INSTALL="local" # Type (gem, local, server) OT_BRANCH="development" # Maturity (development -need SSH key at Github-, master) -# 2) Where all binaries are installed. +# 2) Where binaries are installed OT_PREFIX="$HOME/opentox-ruby" OT_JAVA_HOME="/usr/lib/jvm/java-6-openjdk" -# 3) What versions to install. +# 3) What versions to install RUBY_NUM_VER="1.9.3-p125" OB_NUM_VER="2.3.1" - -# 4) Server settings. -SERVERNAME="toxcreate3.in-silico.ch" +RUBY_DWL="http://ftp.ruby-lang.org/pub/ruby/1.9" # Done. @@ -8,15 +8,13 @@ if [ "$(id -u)" = "0" ]; then fi echo -echo "Warning! If all IST services are stoppped press return, else <Ctrl+C> to stop installation." -echo "Note: Your data will be backupped." +echo "Warning! Hit <Return> If all services are stoppped, else <Ctrl+C>." +echo "Note: CONFIG (~/.opentox) will be backupped." read help_var -echo mkdir -p $OT_PREFIX/tmp/ >/dev/null 2>&1 DATE=`date +_%Y%m%d_%H_%M` -echo echo "Backups (if any)." echo backup_targets="$HOME/.opentox $HOME/opentox-ruby" @@ -28,19 +26,28 @@ for bt in $backup_targets; do fi done -LOG="$OT_PREFIX/tmp/`basename $0`-log.txt" -. "./utils.sh" +. ./utils.sh + + +LOG="$OT_PREFIX/tmp/`basename $0`.log" echo -echo "Opentox-ruby installation." +echo "Welcome to base installation for OpenTox compatible services on Ruby and Debian." +echo "This will install:" +echo "- Debian packages" +echo "- OpenBabel (from source)." +echo +echo "IMPORTANT: press Ctrl+C to adjust config.sh first (<Return> to continue)." +read delete_me +echo echo "You may need to give root password for some privileged actions right now and later:" echo cmd="sudo echo -n \"\"" && run_cmd "$cmd" "Acquire privileges" -echo "Cleaning up $OT_PREFIX/tmp files." -rm -rf $OT_PREFIX/tmp/openbabel* $OT_PREFIX/tmp/kernlab* $OT_PREFIX/tmp/ruby* - -. "./base-install.sh" -. "./openbabel.sh" +rm -rf $OT_PREFIX/tmp/openbabel* $OT_PREFIX/tmp/ruby* +cmd="mkdir -p $OT_PREFIX/install && cp utils.sh $OT_PREFIX/install" && run_cmd "$cmd" "Install utils.sh to OT_PREFIX" +cmd="mkdir -p $HOME/.opentox/config/install && cp config.sh $HOME/.opentox/config/install" && run_cmd "$cmd" "Install config.sh to CONFIG (~/.opentox)" +. ./base-install.sh +. ./openbabel.sh echo echo "Installation finished." @@ -50,6 +57,7 @@ echo "IMPORTANT: How to configure your system:" echo "IMPORTANT: a) Include '$OT_UI_CONF' in shell startup (e.g. ~/.bashrc)." echo "IMPORTANT: b) Manually source '$OT_UI_CONF' every time." echo "IMPORTANT: The command in both cases: '. $OT_UI_CONF'" +echo "IMPORTANT: Your system is NOT configured right now." echo echo "Thank you for your attention." echo diff --git a/openbabel.sh b/openbabel.sh index 552851c..93d606c 100755 --- a/openbabel.sh +++ b/openbabel.sh @@ -4,8 +4,8 @@ # Author: Christoph Helma, Andreas Maunz. # A configuration file is created and included in your 'OT_UI_CONF' (see config.sh). -. "`pwd`/utils.sh" -DIR="`pwd`" +. ./utils.sh +DIR=`pwd` OB_DWL="http://downloads.sourceforge.net/sourceforge/openbabel/$OB_NUM_VER/$OB_VER.tar.gz" [ "`id -u`" = "0" ] && echo "This script must be run as non-root." 1>&2 && exit 1 @@ -17,7 +17,7 @@ for u in $utils; do done # check openbabel -LOG="$OT_PREFIX/tmp/`basename $0`-log.txt" +LOG="$OT_PREFIX/tmp/`basename $0`.log" echo echo "Openbabel ('$OB_DEST', '$LOG'):" mkdir "$OB_DEST" >/dev/null 2>&1 @@ -9,37 +9,80 @@ check_dest() fi [ -d "$HOME/.opentox" ] || mkdir -p "$HOME/.opentox" if ! [ -d "$HOME/.opentox" ]; then - echo "Could not create .opentox directory! Aborting..." + echo "Could not create CONFIG (~/.opentox) directory! Aborting..." exit 1 fi } run_cmd () { - local cmd="$1" - local title="$2" - - printf "%30s" "'$title'" + local cmd="$1"; local title="$2" + printf "%50s" "'$title'" if ! eval $cmd >>$LOG 2>&1 ; then - printf "%50s\n" "FAIL" + printf "\033[31m%30s\033[m\n" "FAIL" echo "Last 10 lines of log:" tail -10 "$LOG" exit 1 fi - printf "%50s\n" "DONE" + printf "\033[32m%30s\033[m\n" "DONE" +} + +check_utils() { + for u in $1; do + eval `echo $u | tr "[:lower:]" "[:upper:]" | tr "-" "_"`=`which $u` || (echo "'$u' missing. Install '$u' first." 1>&2 && exit 1) + done } -abs_path() -{ - local path="$1" - case "$path" in - /*) absolute=1 ;; - *) absolute=0 ;; - esac + +install_ruby() { + printf "\n%50s\n" "RUBY" + local DIR=`pwd` + check_utils "rbenv curl make" + if ! $RBENV versions $RUBY_VER | grep $RUBY_VER>/dev/null 2>&1; 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" + 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" } -. "`pwd`/config.sh" + +install_ob_ruby() { + printf "\n%50s\n" "OB RUBY BINDINGS" + local DIR=`pwd` + check_utils "rbenv make" + SRC_DIR=$(dirname $(find $OT_PREFIX -name openbabel-ruby.cpp)) + [ -d "$SRC_DIR" ] || (echo "Sources not found." 1>&2 && exit 1) + cd $SRC_DIR + cmd="$RBENV local $RUBY_VER" && run_cmd "$cmd" "Configure Ruby" + sed -i 's/Init_OpenBabel/Init_openbabel/g' openbabel-ruby.cpp # apply fix + 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_with_bundler() { + printf "\n%50s\n" "INSTALL" + check_utils "gem rbenv" + $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" + cmd="bundle install" && run_cmd "$cmd" "Install using bundler" +} + + +if [ -z "$OT_PREFIX" ]; then + . ./config.sh +else + . $HOME/.opentox/config/install/config.sh +fi check_dest touch "$OT_UI_CONF" . "$OT_UI_CONF" 2>/dev/null |