Files
galaxy/scripts/common_startup.sh
T
John Chilton 1a463f1688 Pull build_sites out of datatypes conf.
So deployers may modify these paths and stil use the default datatypes config.

This should speed up set_metadata also since each of these config files won't be loaded as part of that.
2017-01-30 20:43:29 -05:00

151 lines
5.5 KiB
Bash
Executable File

#!/bin/sh
set -e
SET_VENV=1
for arg in "$@"; do
[ "$arg" = "--skip-venv" ] && SET_VENV=0
done
# Conda Python is in use, do not use virtualenv
if python -V 2>&1 | grep -q -e 'Anaconda' -e 'Continuum Analytics' ; then
CONDA_ALREADY_INSTALLED=1
else
CONDA_ALREADY_INSTALLED=0
fi
DEV_WHEELS=0
FETCH_WHEELS=1
CREATE_VENV=1
REPLACE_PIP=$SET_VENV
COPY_SAMPLE_FILES=1
for arg in "$@"; do
[ "$arg" = "--skip-eggs" ] && FETCH_WHEELS=0
[ "$arg" = "--skip-wheels" ] && FETCH_WHEELS=0
[ "$arg" = "--dev-wheels" ] && DEV_WHEELS=1
[ "$arg" = "--no-create-venv" ] && CREATE_VENV=0
[ "$arg" = "--no-replace-pip" ] && REPLACE_PIP=0
[ "$arg" = "--replace-pip" ] && REPLACE_PIP=1
[ "$arg" = "--stop-daemon" ] && FETCH_WHEELS=0
[ "$arg" = "--skip-samples" ] && COPY_SAMPLE_FILES=0
done
SAMPLES="
config/migrated_tools_conf.xml.sample
config/shed_tool_conf.xml.sample
config/shed_tool_data_table_conf.xml.sample
config/shed_data_manager_conf.xml.sample
lib/tool_shed/scripts/bootstrap_tool_shed/user_info.xml.sample
tool-data/shared/ucsc/builds.txt.sample
tool-data/shared/ucsc/manual_builds.txt.sample
static/welcome.html.sample
"
RMFILES="
lib/pkg_resources.pyc
"
if [ $COPY_SAMPLE_FILES -eq 1 ]; then
# Create any missing config/location files
for sample in $SAMPLES; do
file=${sample%.sample}
if [ ! -f "$file" -a -f "$sample" ]; then
echo "Initializing $file from $(basename "$sample")"
cp "$sample" "$file"
fi
done
fi
# remove problematic cached files
for rmfile in $RMFILES; do
[ -f "$rmfile" ] && rm -f "$rmfile"
done
: ${GALAXY_CONFIG_FILE:=config/galaxy.ini}
if [ ! -f "$GALAXY_CONFIG_FILE" ]; then
GALAXY_CONFIG_FILE=universe_wsgi.ini
fi
if [ ! -f "$GALAXY_CONFIG_FILE" ]; then
GALAXY_CONFIG_FILE=config/galaxy.ini.sample
fi
: ${GALAXY_VIRTUAL_ENV:=.venv}
if [ $SET_VENV -eq 1 -a $CREATE_VENV -eq 1 ]; then
if [ ! -d "$GALAXY_VIRTUAL_ENV" ]
then
if [ $CONDA_ALREADY_INSTALLED -eq 1 ]; then
echo "There is no existing Galaxy virtualenv and Conda is available, so we are skipping virtualenv creation. Please be aware that this may cause missing dependencies."
SET_VENV=0
else
# If .venv does not exist, and there is no conda available, attempt to create it.
# Ensure Python is a supported version before creating .venv
python ./scripts/check_python.py || exit 1
if command -v virtualenv >/dev/null; then
virtualenv -p python2.7 "$GALAXY_VIRTUAL_ENV"
else
vvers=13.1.2
vurl="https://pypi.python.org/packages/source/v/virtualenv/virtualenv-${vvers}.tar.gz"
vsha="aabc8ef18cddbd8a2a9c7f92bc43e2fea54b1147330d65db920ef3ce9812e3dc"
vtmp=$(mktemp -d -t galaxy-virtualenv-XXXXXX)
vsrc="$vtmp/$(basename $vurl)"
# SSL certificates are not checked to prevent problems with messed
# up client cert environments. We verify the download using a known
# good sha256 sum instead.
echo "Fetching $vurl"
if command -v curl >/dev/null; then
curl --insecure -L -o "$vsrc" "$vurl"
elif command -v wget >/dev/null; then
wget --no-check-certificate -O "$vsrc" "$vurl"
else
python -c "import urllib; urllib.urlretrieve('$vurl', '$vsrc')"
fi
echo "Verifying $vsrc checksum is $vsha"
python -c "import hashlib; assert hashlib.sha256(open('$vsrc', 'rb').read()).hexdigest() == '$vsha', '$vsrc: invalid checksum'"
tar zxf "$vsrc" -C "$vtmp"
python "$vtmp/virtualenv-$vvers/virtualenv.py" "$GALAXY_VIRTUAL_ENV"
rm -rf "$vtmp"
fi
fi
fi
fi
if [ $SET_VENV -eq 1 ]; then
# If there is a .venv/ directory, assume it contains a virtualenv that we
# should run this instance in.
if [ -d "$GALAXY_VIRTUAL_ENV" ];
then
echo "Activating virtualenv at $GALAXY_VIRTUAL_ENV"
. "$GALAXY_VIRTUAL_ENV/bin/activate"
# Because it's a virtualenv, we assume $PYTHONPATH is unnecessary for
# anything in the venv to work correctly, and having it set can cause
# problems when there are conflicts with Galaxy's dependencies outside
# the venv (e.g. virtualenv-burrito's pip and six).
#
# If you are skipping the venv setup we shall assume you know what
# you're doing and will deal with any conflicts.
unset PYTHONPATH
fi
if [ -z "$VIRTUAL_ENV" ]; then
echo "ERROR: A virtualenv cannot be found. Please create a virtualenv in $GALAXY_VIRTUAL_ENV, or activate one."
exit 1
fi
fi
: ${GALAXY_WHEELS_INDEX_URL:="https://wheels.galaxyproject.org/simple"}
if [ $REPLACE_PIP -eq 1 ]; then
pip install 'pip>=8.1'
fi
if [ $FETCH_WHEELS -eq 1 ]; then
pip install -r requirements.txt --index-url "${GALAXY_WHEELS_INDEX_URL}"
GALAXY_CONDITIONAL_DEPENDENCIES=$(PYTHONPATH=lib python -c "import galaxy.dependencies; print '\n'.join(galaxy.dependencies.optional('$GALAXY_CONFIG_FILE'))")
[ -z "$GALAXY_CONDITIONAL_DEPENDENCIES" ] || echo "$GALAXY_CONDITIONAL_DEPENDENCIES" | pip install -r /dev/stdin --index-url "${GALAXY_WHEELS_INDEX_URL}"
fi
if [ $FETCH_WHEELS -eq 1 -a $DEV_WHEELS -eq 1 ]; then
dev_requirements='./lib/galaxy/dependencies/dev-requirements.txt'
[ -f $dev_requirements ] && pip install -r $dev_requirements --index-url "${GALAXY_WHEELS_INDEX_URL}"
fi