mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
from PyPI even when a package exists (but the correct version or architecture does not exist) on wheels.galaxyproject.org. Previously, PyPI was only checked after wheels.galaxyproject.org because pypiserver performs an automatic redirect to PyPI for any packages that do not exist in its index.
151 lines
5.6 KiB
Bash
Executable File
151 lines
5.6 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}" --extra-index-url https://pypi.python.org/pypi
|
|
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}" --extra-index-url https://pypi.python.org/pypi
|
|
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
|