Mercurial > repos > bcclaywell > argo_navis
diff env/envbootstrap.sh @ 0:d67268158946 draft
planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
author | bcclaywell |
---|---|
date | Mon, 12 Oct 2015 17:43:33 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/env/envbootstrap.sh Mon Oct 12 17:43:33 2015 -0400 @@ -0,0 +1,120 @@ +#!/bin/bash +# Usage: envbootstrap.sh [Options] + +# Create a virtualenv, and install requirements to it. + +# Requirements: wget, tar, git + + +#set -e + + +# Vars/options +SCRIPT_LOCATION=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd) +VENV_VERSION=1.11.6 + +# options configurable from the command line +VENV=$(basename $(cd $SCRIPT_LOCATION/.. && pwd))-env +PYTHON=$(which python) +PY_VERSION=$($PYTHON -c 'import sys; print "{}.{}.{}".format(*sys.version_info[:3])') +REQFILE=$SCRIPT_LOCATION/requirements.txt + +if [[ $1 == '-h' || $1 == '--help' ]]; then + echo "Create a virtualenv and install all pipeline dependencies" + echo "Options:" + echo "--venv - path of virtualenv [$VENV]" + echo "--python - path to an alternative python interpreter [$PYTHON]" + echo "--requirements - an alternative requiremets file [$REQFILE]" + exit 0 +fi + +while true; do + case "$1" in + --venv ) VENV="$2"; shift 2 ;; + --python ) PYTHON="$2"; shift 2 ;; + --requirements ) REQFILE="$2"; shift 2 ;; + * ) break ;; + esac +done + +mkdir -p src + +# Create the virtualenv using a specified version of the virtualenv +# source. This also provides setuptools and pip. Inspired by +# http://eli.thegreenplace.net/2013/04/20/bootstrapping-virtualenv/ + +# create virtualenv if necessary +if [ ! -f ${VENV:?}/bin/activate ]; then + # download virtualenv source if necessary + if [ ! -f src/virtualenv-${VENV_VERSION}/virtualenv.py ]; then + VENV_URL='https://pypi.python.org/packages/source/v/virtualenv' + (cd src && \ + wget -N ${VENV_URL}/virtualenv-${VENV_VERSION}.tar.gz && \ + tar -xf virtualenv-${VENV_VERSION}.tar.gz) + fi + $PYTHON src/virtualenv-${VENV_VERSION}/virtualenv.py $VENV + $PYTHON src/virtualenv-${VENV_VERSION}/virtualenv.py --relocatable $VENV +else + echo "found existing virtualenv $VENV" +fi + +# Activate our new (or existing) virtual env +source $VENV/bin/activate +# contains the absolute path +VENV=$VIRTUAL_ENV + +# Start an env.sh file +echo ". $VENV/bin/activate" > $VENV/env.sh + +venv_abspath=$(readlink -f $VENV) + +# First install all python requirements +pip install numpy +pip install scipy +pip install biopython +pip install lxml +pip install -r $REQFILE + +# Next install R requirements, and set up R_LIBS export in env.sh +R_LIBS=$VENV/lib/R +mkdir -p $R_LIBS +R_LIBS=$R_LIBS $SCRIPT_LOCATION/rdeps.R + +echo "R_LIBS=$R_LIBS ; export R_LIBS" >> $VENV/env.sh + + +# For everything else, we'll try to use encapish setup +ENCAP=$VENV/encap +mkdir -p $ENCAP + + +# Next install BEAST +if [[ ! -f $VENV/bin/beast ]]; then + (cd $ENCAP && \ + rm -rf BEAST.v2.1.3.tgz BEAST && \ + wget -N https://github.com/CompEvol/beast2/releases/download/v2.1.3/BEAST.v2.1.3.tgz && \ + tar -zxf BEAST.v2.1.3.tgz && \ + (ln -s ../encap/BEAST/bin/* ../bin/ & \ + ln -s ../encap/BEAST/lib/* ../lib)) +fi + +# Add the BEAST_CLASSIC package +addonmanager -add BEASTlabs +addonmanager -add BEAST_CLASSIC + + +# Next install PACT +if [[ ! -f $VENV/bin/pact ]]; then + (cd $ENCAP && \ + rm -rf PACT && \ + git clone https://github.com/trvrb/PACT.git && \ + cd PACT && \ + make && \ + cd .. && \ + ln -s ../encap/PACT/pact ../bin/pact + ) +fi + +# correct any more shebang lines +virtualenv --relocatable $VENV +