!/bin/bash
# set API key API_KEY=${GALAXY_DEFAULT_ADMIN_KEY:-fakekey}
# Enable Test Tool Shed echo “.. Setting up conda” export GALAXY_CONFIG_TOOL_SHEDS_CONFIG_FILE=$GALAXY_HOME/tool_sheds_conf.xml
. /tool_deps/_conda/etc/profile.d/conda.sh conda activate base
if pgrep “supervisord” > /dev/null then
echo ".. System is up and running. Starting with the installation." export PORT=80
else
# start Database echo ".. Starting database" export PORT=8080 service postgresql start install_log='galaxy_install.log' # wait for database to finish starting up STATUS=$(psql 2>&1) while [[ ${STATUS} =~ "starting up" ]] do echo ".. Waiting for database: $STATUS" STATUS=$(psql 2>&1) sleep 1 done # start Galaxy echo ".. Starting Galaxy" # Unset SUDO_* vars otherwise conda run chown based on that sudo -E -u galaxy -- bash -c "unset SUDO_UID; \ unset SUDO_GID; \ unset SUDO_COMMAND; \ unset SUDO_USER; \ ./run.sh -d $install_log --pidfile galaxy_install.pid --http-timeout 3000" galaxy_install_pid=`cat galaxy_install.pid` galaxy-wait -g http://localhost:$PORT -v --timeout 120 echo ".. Galaxy is running"
fi
# Create the admin user if not already done # Starting with 20.05 this user is only created at first startup of galaxy # We need to create it here for Galaxy Flavors = installing from Dockerfile if [[ ! -z $GALAXY_DEFAULT_ADMIN_USER ]]
then ( cd $GALAXY_ROOT . $GALAXY_VIRTUAL_ENV/bin/activate echo ".. Creating admin user $GALAXY_DEFAULT_ADMIN_USER with key $GALAXY_DEFAULT_ADMIN_KEY and password $GALAXY_DEFAULT_ADMIN_PASSWORD if not existing" python /usr/local/bin/create_galaxy_user.py --user "$GALAXY_DEFAULT_ADMIN_EMAIL" --password "$GALAXY_DEFAULT_ADMIN_PASSWORD" \ -c "$GALAXY_CONFIG_FILE" --username "$GALAXY_DEFAULT_ADMIN_USER" --key "$GALAXY_DEFAULT_ADMIN_KEY" )
fi
# install tutorial materials echo “.. Starting installation of the tutorials.” for tutdir in $topicdir/tutorials/* do
echo "-------------------------------------------------------------" tut=$(basename $tutdir) echo "Installing tutorial: $tut" # install tools and workflows if [ -d $tutdir/workflows/ ]; then echo " - Extracting tools from workflows" for w in $tutdir/workflows/*.ga do workflow-to-tools -w $w -o $tutdir/workflows/wftools.yaml -l $tut echo " - Installing tools from workflow $(basename $w)" n=0 until [ $n -ge 3 ] do shed-tools install -t $tutdir/workflows/wftools.yaml -g "http://localhost:$PORT" -a $API_KEY && break n=$[$n+1] sleep 5 echo " - Retrying shed-tools install " done rm $tutdir/workflows/wftools.yaml done echo " - Installing workflows" workflow-install --publish_workflows --workflow_path $tutdir/workflows/ -g "http://localhost:$PORT" -a $API_KEY else echo " - No workflows to install (no directory named workflows present)" fi # install reference data? (discussion: do this at build or run time?) # We are using CVMFS for the moment. #if [ -f $dir/data-manager.yaml ] #then # echo " - Installing reference data" # run-data-managers --config $dir/data-manager.yaml -g $galaxy_instance -u $GALAXY_DEFAULT_ADMIN_USER -p $GALAXY_DEFAULT_ADMIN_PASSWORD #else # echo " - No reference data to install (no file named data-manager.yaml present)" #fi # install tours if [ -d $tutdir/tours/ ]; then echo " - Installing tours" for t in $tutdir/tours/* do fname=$tut-$(basename $t) echo " - Installing tour: $t as $fname" cp $t $GALAXY_ROOT/config/plugins/tours/$fname done else echo " - No tours to install (no directory named tours present)" fi echo " - Finished installation of $tut tutorial"
done
echo “————————————————————-” echo “.. Generating data-library_all.yaml file” cd /tutorials/ python /mergeyaml.py > ./data-library_all.yaml
exit_code=$?
if [ $exit_code != 0 ] ; then
if [ "$2" == "-v" ] ; then echo ".. Installation failed, Galaxy server log:" cat $install_log fi exit $exit_code
fi
if ! pgrep “supervisord” > /dev/null then
echo ".. Shutting down Galaxy and postgresql" # stop everything sudo -E -u galaxy /galaxy-central/run.sh --stop --pidfile /galaxy-central/galaxy_install.pid rm /galaxy-central/$install_log service postgresql stop
fi
echo “.. Installation is finished”