From 829d4145e413f75f7e1986d6091859c4b77de563 Mon Sep 17 00:00:00 2001 From: Andreas Maunz Date: Tue, 31 Jul 2012 09:23:03 +0200 Subject: Added 4store install --- 4store-install | 43 ++++++++++++++++++++++++++++++++ base-install | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ base-install.sh | 77 --------------------------------------------------------- config.sh | 1 + install | 23 +++++------------ utils.sh | 49 ++++++++++++++++++++++++++++++++++-- 6 files changed, 170 insertions(+), 96 deletions(-) create mode 100755 4store-install create mode 100755 base-install delete mode 100755 base-install.sh diff --git a/4store-install b/4store-install new file mode 100755 index 0000000..a00a07a --- /dev/null +++ b/4store-install @@ -0,0 +1,43 @@ +#!/bin/sh + +# Installs 4store on Debian and compatible systems. +# Author: Andreas Maunz + +DIR=`pwd` + +# Boot +. ./utils.sh || (echo "Utils could not be loaded, check opentox-ui.sh." 1>&2 && exit 1) +SELF=$(basename $0 -install) +check_log $SELF +[ "`id -u`" = "0" ] && echo "This script must not be run as root" 1>&2 && exit 1 +check_utils "git make" + +# Build +cd $OT_PREFIX/tmp/ +([ -d $SELF ] && cd $SELF && cmd="$GIT pull" && run_cmd "$cmd" "Git pull") || (cmd="$GIT clone https://github.com/garlik/$SELF" && run_cmd "$cmd" "Git clone") +cd $SELF +cmd="./autogen.sh" && run_cmd "$cmd" "Autogen" +export FST=$HOME/4S +cmd="./configure --prefix=$FST --exec-prefix=$FST --with-storage-path=$FST/var/lib --with-config-file=$FST/$SELF.conf -with-http-log=$FST/log" && run_cmd "$cmd" "Configure" +cmd="make" && run_cmd "$cmd" "Make" +cmd="make install" && run_cmd "$cmd" "Make Install" +#cmd="make test" && run_cmd "$cmd" "Make Test" + +# Config +echo "if echo \"\$LD_LIBRARY_PATH\" | grep -v \"$FST/lib\">/dev/null 2>&1; then export LD_LIBRARY_PATH=\"\$LD_LIBRARY_PATH:$FST/lib\"; fi" >> "$FST_CONF" +echo "$SELF configuration has been stored in '$FST_CONF'." +if ! grep "$FST_CONF" $OT_UI_CONF >/dev/null 2>&1; then + echo '. '$FST_CONF >> $OT_UI_CONF +fi + +# Testing code --- unused +#export LD_LIBRARY_PATH=$FST/lib +#cd $FST +#bin/4s-backend-setup test +#bin/4s-backend test +#bin/4s-httpd -D -H localhost -p 8000 test # -D only for testing + +notify + +# return to wd +cd $DIR diff --git a/base-install b/base-install new file mode 100755 index 0000000..7ce7c70 --- /dev/null +++ b/base-install @@ -0,0 +1,73 @@ +#!/bin/sh + +# Installs required packages on Debian and compatible systems. +# Author: Andreas Maunz + +# NOTE: Your installed packages are safe and will not be updated. +# Java configuration is included in '$OT_UI_CONF'. + +DIR=`pwd` + +# Boot +. ./utils.sh || (echo "Utils could not be loaded, check opentox-ui.sh" 1>&2 && exit 1) +# Not logged +# Not logged +[ "`id -u`" = "0" ] && echo "This script must not be run as root" 1>&2 && exit 1 +check_utils "aptitude git apt-cache dpkg" + +# Pkgs +packs="build-essential cmake libgsl0-dev libopenbabel4 libopenbabel-dev libtool openjdk-6-jdk r-base r-base-dev libpcre3-dev librasqal3-dev libtool libraptor1-dev libglib2.0-dev ncurses-dev libreadline-dev uuid-dev" +echo +echo "Base Packages:" +echo +echo "Updating index..." +sudo $APTITUDE update -y >/dev/null 2>&1 + +pack_arr=$packs +if [ -n "$pack_arr" ]; then + echo + echo "Checking availablity:" + for p in $pack_arr; do + if [ -n "`$APT_CACHE search $p`" ] ; then + printf "%30s%50s\n" $p Y + else + printf "%30s%50s\n" $p N + pack_fail="$pack_fail $p" + fi + done +fi + +if [ -n "$pack_fail" ]; then + echo + echo "WARNING: At least one missing package has no suitable installation candidate." + echo "Press to abort (5 sec)." + sleep 5 +fi + +echo +if [ -n "$pack_arr" ]; then + echo + echo "Installing packages" + sudo $APTITUDE -y install $pack_arr +fi + + +if [ ! -f $JAVA_CONF ]; then + + if [ ! -d "$OT_JAVA_HOME" ]; then + echo "Directory '$OT_JAVA_HOME' does not exist! Aborting..." + exit 1 + fi + + echo "if echo \"\$JAVA_HOME\" | grep -v \"$OT_JAVA_HOME\">/dev/null 2>&1; then export JAVA_HOME=\"$OT_JAVA_HOME\"; fi" >> "$JAVA_CONF" + echo "if echo \"\$PATH\" | grep -v \"$OT_JAVA_HOME\">/dev/null 2>&1; then export PATH=\"$OT_JAVA_HOME:\$PATH\"; fi" >> "$JAVA_CONF" + echo "if ! [ -d \"\$JAVA_HOME\" ]; then echo \"\$0: '\$OT_JAVA_HOME' is not a directory!\"; fi" >> "$JAVA_CONF" + + echo "Java configuration has been stored in '$JAVA_CONF'." + if ! grep "$JAVA_CONF" $OT_UI_CONF >/dev/null 2>&1; then + echo '. '$JAVA_CONF >> $OT_UI_CONF + fi +fi + +cd "$DIR" + diff --git a/base-install.sh b/base-install.sh deleted file mode 100755 index c9cebdd..0000000 --- a/base-install.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/sh - -# Installs required packages on Debian and compatible systems. -# Author: Andreas Maunz - -# NOTE: Your installed packages are safe and will not be updated. -# Java configuration is included in '$OT_UI_CONF'. - -. ./utils.sh -DIR=`pwd` - -if [ "$(id -u)" = "0" ]; then - echo "This script must not be run as root" 1>&2 - exit 1 -fi - -# Utils -check_utils "aptitude git apt-cache dpkg" - -touch $OT_UI_CONF - -# Pkgs -packs="binutils build-essential cmake curl gnuplot hostname libcurl4-openssl-dev libgsl0-dev libopenbabel4 libopenbabel-dev libraptor1-dev libreadline6-dev libreadline-dev libsqlite3-dev libssl-dev libyaml-dev libxml2-dev libxslt1-dev lsb-release openjdk-6-jdk psmisc pwgen raptor-utils r-base r-base-core r-base-dev sqlite3 udev wget xsltproc zlib1g-dev" - -echo -echo "Base Packages:" - -echo -echo "Updating index" -sudo $APTITUDE update -y >/dev/null 2>&1 - -pack_arr=$packs -if [ -n "$pack_arr" ]; then - echo - echo "Checking availablity:" - for p in $pack_arr; do - if [ -n "`$APT_CACHE search $p`" ] ; then - printf "%30s%50s\n" $p Y - else - printf "%30s%50s\n" $p N - pack_fail="$pack_fail $p" - fi - done -fi - -if [ -n "$pack_fail" ]; then - echo - echo "WARNING: At least one missing package has no suitable installation candidate." - echo "Press to abort (5 sec)." - sleep 5 -fi - -echo -if [ -n "$pack_arr" ]; then - cmd="sudo $APTITUDE -y install $pack_arr" && run_cmd "$cmd" "Installing packages" -fi - - -if [ ! -f $JAVA_CONF ]; then - - if [ ! -d "$OT_JAVA_HOME" ]; then - echo "Directory '$OT_JAVA_HOME' does not exist! Aborting..." - exit 1 - fi - - echo "if echo \"\$JAVA_HOME\" | grep -v \"$OT_JAVA_HOME\">/dev/null 2>&1; then export JAVA_HOME=\"$OT_JAVA_HOME\"; fi" >> "$JAVA_CONF" - echo "if echo \"\$PATH\" | grep -v \"$OT_JAVA_HOME\">/dev/null 2>&1; then export PATH=\"$OT_JAVA_HOME:\$PATH\"; fi" >> "$JAVA_CONF" - echo "if ! [ -d \"\$JAVA_HOME\" ]; then echo \"\$0: '\$OT_JAVA_HOME' is not a directory!\"; fi" >> "$JAVA_CONF" - - echo "Java configuration has been stored in '$JAVA_CONF'." - if ! grep "$JAVA_CONF" $OT_UI_CONF >/dev/null 2>&1; then - echo '. '$JAVA_CONF >> $OT_UI_CONF - fi -fi - -cd "$DIR" - diff --git a/config.sh b/config.sh index e28d259..eb7a23f 100755 --- a/config.sh +++ b/config.sh @@ -23,6 +23,7 @@ RUBY_DWL="http://ftp.ruby-lang.org/pub/ruby/1.9" ### Nothing to gain from changes below this line. JAVA_CONF="$HOME/.opentox/sh_java" +FST_CONF="$HOME/.opentox/sh_4S" OB_CONF="$HOME/.opentox/sh_OB" R_CONF="$HOME/.opentox/sh_R" OT_UI_CONF="$HOME/.opentox/opentox-ui.sh" diff --git a/install b/install index 5d0f9e3..0a3a1e7 100755 --- a/install +++ b/install @@ -1,11 +1,9 @@ #!/bin/sh + # Main Opentox-ruby install script # Author: Christoph Helma, Andreas Maunz -if [ "$(id -u)" = "0" ]; then - echo "This script must not be run as root" 1>&2 - exit 1 -fi +[ "`id -u`" = "0" ] && echo "This script must not be run as root" 1>&2 && exit 1 echo echo "OpenTox Ruby" @@ -41,7 +39,8 @@ echo [ -f $OT_PREFIX/install/utils.sh ] || (cmd="mkdir -p $OT_PREFIX/install && cp utils.sh $OT_PREFIX/install" && run_cmd "$cmd" "Install utils.sh to OT_PREFIX") [ -f $HOME/.opentox/config/install/config.sh ] || (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 # Debian specific; disable for others. +. ./base-install # Debian specific; disable this for others. +./4store-install # Download, compile and build 4store. Install to OT_PREFIX. if [ ! -d ~/.rbenv ]; then cmd="$GIT clone git://github.com/sstephenson/rbenv.git ~/.rbenv" && run_cmd "$cmd" "rbenv" @@ -56,15 +55,5 @@ fi [ -f $HOME/.opentox/config/ambit_descriptors.yaml ] || (cmd="cp ambit_descriptors.yaml $HOME/.opentox/config/" && run_cmd "$cmd" "Ambit keys file") [ -f $HOME/.opentox/config/jl_keys.yaml ] || (cmd="cp jl_keys.yaml $HOME/.opentox/config/" && run_cmd "$cmd" "Joelib keys file") -echo -echo "Installation finished." -echo "Destination (OT_PREFIX): '$OT_PREFIX'" -echo -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: NOW would be the best time to configure!" -echo -echo "Thank you for your attention." -echo +notify + diff --git a/utils.sh b/utils.sh index 8a41433..d5bbe58 100755 --- a/utils.sh +++ b/utils.sh @@ -6,6 +6,7 @@ # Functions to install ruby and install services with bundler. # Ensures presence of ~/.opentox (CONFIG) and OT_PREFIX. +# create a temporary directory in OT_PREFIX and a log directory in .opentox check_dest() { [ -d "$OT_PREFIX/tmp" ] || mkdir -p "$OT_PREFIX/tmp" @@ -20,11 +21,30 @@ check_dest() fi } +# export a LOG file name +check_log() +{ + local name="$1" + if [ -z "$LOG" ]; then + LOG="$OT_PREFIX/tmp/$name.log" + echo + printf "\033[1m%s\033[m\n" "$name ('$LOG'):" + echo + fi +} + +# run a shell command +# Signal exit status by formatted string +# @param cmd command to execute +# @param title textual description of command +# @example { +# run_cmd "ls" "list dir" +# } run_cmd () { local cmd="$1"; local title="$2" printf "%50s" "$title" - if ! eval $cmd >>$LOG 2>&1 ; then + if ! eval "$cmd" >>$LOG 2>&1 ; then printf " [ \033[31m%s\033[m ]\n" "FAIL" echo "Last 10 lines of log:" tail -10 "$LOG" @@ -34,6 +54,11 @@ run_cmd () } +# stop if required binaries not in path +# @param list of binaries +# @example { +# check_utils "git curl" +# } 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) @@ -41,6 +66,8 @@ check_utils() { } +# install ruby using rbenv +# configure the version in config.sh install_ruby() { printf "\n%50s\n" "RUBY" local DIR=`pwd` @@ -57,7 +84,7 @@ install_ruby() { cmd="$RBENV local $RUBY_NUM_VER" && run_cmd "$cmd" "Rbenv set ruby" } - +# install a ruby gem using bundler install_with_bundler() { printf "\n%50s\n" "INSTALL" check_utils "gem rbenv" @@ -66,7 +93,25 @@ install_with_bundler() { cmd="bundle install" && run_cmd "$cmd" "Install using bundler" } +# emit notification if caller was the shell (the user), see http://goo.gl/grCOk +notify() { + echo + echo "Installation succesful" + echo + if ps -o stat= -p $PPID | grep "s" >/dev/null 2>&1; then + 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: NOW would be the best time to configure!" + echo + echo "Thank you for your attention." + echo + fi +} + +# Force loading configuration from local, if we are installing for the first time if [ -z "$OT_PREFIX" ]; then . ./config.sh else -- cgit v1.2.3