summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Maunz <andreas@maunz.de>2012-03-27 14:14:43 +0200
committerAndreas Maunz <andreas@maunz.de>2012-03-27 14:14:43 +0200
commiteed486a71faf10ce1ea32945f28367c6536e1a78 (patch)
treec0d79ddafc4984b4ebd2e51e583c2e4810548dc8
parent75bb51309d2672c19586d4717e8cb7a85a010a6c (diff)
Modular version, loading helpers from base installation
-rwxr-xr-xbase-install.sh4
-rwxr-xr-xconfig.sh8
-rwxr-xr-xinstall32
-rwxr-xr-xopenbabel.sh6
-rwxr-xr-xutils.sh73
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
diff --git a/config.sh b/config.sh
index ecb9442..7f67863 100755
--- a/config.sh
+++ b/config.sh
@@ -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.
diff --git a/install b/install
index 62766a2..fa35845 100755
--- a/install
+++ b/install
@@ -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
diff --git a/utils.sh b/utils.sh
index 04426d9..7f0e387 100755
--- a/utils.sh
+++ b/utils.sh
@@ -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