mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-08-29 02:26:59 +08:00
145 lines
5.0 KiB
Bash
Executable File
145 lines
5.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
# If there is a file that defines a shell environment specific to this
|
|
# instance of Galaxy, source the file.
|
|
if [ -z "$GALAXY_LOCAL_ENV_FILE" ];
|
|
then
|
|
GALAXY_LOCAL_ENV_FILE='./config/local_env.sh'
|
|
fi
|
|
|
|
if [ -f $GALAXY_LOCAL_ENV_FILE ];
|
|
then
|
|
. $GALAXY_LOCAL_ENV_FILE
|
|
fi
|
|
|
|
INITIALIZE_TOOL_DEPENDENCIES=1 # Install Conda if needed.
|
|
# Pop args meant for common_startup.sh
|
|
while :
|
|
do
|
|
case "$1" in
|
|
--skip-eggs|--skip-wheels|--skip-samples|--dev-wheels|--no-create-venv|--no-replace-pip|--replace-pip)
|
|
common_startup_args="$common_startup_args $1"
|
|
shift
|
|
;;
|
|
--skip-tool-dependency-initialization)
|
|
INITIALIZE_TOOL_DEPENDENCIES=0
|
|
shift
|
|
;;
|
|
--skip-venv)
|
|
skip_venv=1
|
|
common_startup_args="$common_startup_args $1"
|
|
shift
|
|
;;
|
|
--stop-daemon)
|
|
common_startup_args="$common_startup_args $1"
|
|
paster_args="$paster_args $1"
|
|
stop_daemon_arg_set=1
|
|
shift
|
|
;;
|
|
--daemon|--restart|restart)
|
|
if [ "$1" = "--restart" ]
|
|
then
|
|
paster_args="$paster_args restart"
|
|
else
|
|
paster_args="$paster_args $1"
|
|
fi
|
|
|
|
daemon_or_restart_arg_set=1
|
|
shift
|
|
;;
|
|
--wait)
|
|
wait_arg_set=1
|
|
shift
|
|
;;
|
|
"")
|
|
break
|
|
;;
|
|
*)
|
|
paster_args="$paster_args $1"
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
./scripts/common_startup.sh $common_startup_args || exit 1
|
|
|
|
# If there is a .venv/ directory, assume it contains a virtualenv that we
|
|
# should run this instance in.
|
|
GALAXY_VIRTUAL_ENV="${GALAXY_VIRTUAL_ENV:-.venv}"
|
|
if [ -d "$GALAXY_VIRTUAL_ENV" -a -z "$skip_venv" ];
|
|
then
|
|
[ -n "$PYTHONPATH" ] && { echo 'Unsetting $PYTHONPATH'; unset PYTHONPATH; }
|
|
echo "Activating virtualenv at $GALAXY_VIRTUAL_ENV"
|
|
. "$GALAXY_VIRTUAL_ENV/bin/activate"
|
|
fi
|
|
|
|
# If you are using --skip-venv we assume you know what you are doing but warn
|
|
# in case you don't.
|
|
[ -n "$PYTHONPATH" ] && echo 'WARNING: $PYTHONPATH is set, this can cause problems importing Galaxy dependencies'
|
|
|
|
python ./scripts/check_python.py || exit 1
|
|
|
|
if [ ! -z "$GALAXY_RUN_WITH_TEST_TOOLS" ];
|
|
then
|
|
export GALAXY_CONFIG_OVERRIDE_TOOL_CONFIG_FILE="test/functional/tools/samples_tool_conf.xml"
|
|
export GALAXY_CONFIG_ENABLE_BETA_WORKFLOW_MODULES="true"
|
|
export GALAXY_CONFIG_OVERRIDE_ENABLE_BETA_TOOL_FORMATS="true"
|
|
export GALAXY_CONFIG_OVERRIDE_WEBHOOKS_DIR="test/functional/webhooks"
|
|
fi
|
|
|
|
if [ -n "$GALAXY_UNIVERSE_CONFIG_DIR" ]; then
|
|
python ./scripts/build_universe_config.py "$GALAXY_UNIVERSE_CONFIG_DIR"
|
|
fi
|
|
|
|
if [ -z "$GALAXY_CONFIG_FILE" ]; then
|
|
if [ -f universe_wsgi.ini ]; then
|
|
GALAXY_CONFIG_FILE=universe_wsgi.ini
|
|
elif [ -f config/galaxy.ini ]; then
|
|
GALAXY_CONFIG_FILE=config/galaxy.ini
|
|
else
|
|
GALAXY_CONFIG_FILE=config/galaxy.ini.sample
|
|
fi
|
|
export GALAXY_CONFIG_FILE
|
|
fi
|
|
|
|
if [ $INITIALIZE_TOOL_DEPENDENCIES -eq 1 ]; then
|
|
# Install Conda environment if needed.
|
|
python ./scripts/manage_tool_dependencies.py -c "$GALAXY_CONFIG_FILE" init_if_needed
|
|
fi
|
|
|
|
if [ -n "$GALAXY_RUN_ALL" ]; then
|
|
servers=$(sed -n 's/^\[server:\(.*\)\]/\1/ p' "$GALAXY_CONFIG_FILE" | xargs echo)
|
|
if [ -z "$stop_daemon_arg_set" -a -z "$daemon_or_restart_arg_set" ]; then
|
|
echo "ERROR: \$GALAXY_RUN_ALL cannot be used without the '--daemon', '--stop-daemon' or 'restart' arguments to run.sh"
|
|
exit 1
|
|
fi
|
|
for server in $servers; do
|
|
if [ -n "$wait_arg_set" -a -n "$daemon_or_restart_arg_set" ]; then
|
|
python ./scripts/paster.py serve "$GALAXY_CONFIG_FILE" --server-name="$server" --pid-file="$server.pid" --log-file="$server.log" $paster_args
|
|
while true; do
|
|
sleep 1
|
|
printf "."
|
|
# Grab the current pid from the pid file
|
|
if ! current_pid_in_file=$(cat "$server.pid"); then
|
|
echo "A Galaxy process died, interrupting" >&2
|
|
exit 1
|
|
fi
|
|
# Search for all pids in the logs and tail for the last one
|
|
latest_pid=$(egrep '^Starting server in PID [0-9]+\.$' "$server.log" -o | sed 's/Starting server in PID //g;s/\.$//g' | tail -n 1)
|
|
# If they're equivalent, then the current pid file agrees with our logs
|
|
# and we've succesfully started
|
|
[ -n "$latest_pid" ] && [ "$latest_pid" -eq "$current_pid_in_file" ] && break
|
|
done
|
|
echo
|
|
else
|
|
echo "Handling $server with log file $server.log..."
|
|
python ./scripts/paster.py serve "$GALAXY_CONFIG_FILE" --server-name="$server" --pid-file="$server.pid" --log-file="$server.log" $paster_args
|
|
fi
|
|
done
|
|
else
|
|
# Handle only 1 server, whose name can be specified with --server-name parameter (defaults to "main")
|
|
python ./scripts/paster.py serve "$GALAXY_CONFIG_FILE" $paster_args
|
|
fi
|