aboutsummaryrefslogtreecommitdiff
path: root/bin/genenetwork2
diff options
context:
space:
mode:
Diffstat (limited to 'bin/genenetwork2')
-rwxr-xr-xbin/genenetwork2110
1 files changed, 89 insertions, 21 deletions
diff --git a/bin/genenetwork2 b/bin/genenetwork2
index d3bf3299..52d3155c 100755
--- a/bin/genenetwork2
+++ b/bin/genenetwork2
@@ -1,44 +1,112 @@
#! /bin/bash
#
-# This will run the GN2 server (with default settings if none supplied).
+# This will run the GN2 server (with default settings if none
+# supplied). Pass in your own settings file, e.g.
+#
+# ./bin/genenetwork2 ~/my_settings.py
+#
+# But better is to retain the defaults and override them with
+# JSON file (see the deploy docs).
+#
+# ./bin/genenetwork2 ~/my_overrides.json
+#
+# To run a maintenance script with settings (instead of the webserver) add that with
+# a -c switch, e.g.
+#
+# ./bin/genenetwork2 ~/my_overrides.json -c ./wqflask/maintenance/gen_select_dataset.py
#
# Environment settings can be used to preconfigure as well as a
# settings.py file.
+#
+# GN2_BASE_PATH is base directory of wqflask source code
+#
-# Absolute path to this script, e.g. /home/user/bin/foo.sh
SCRIPT=$(readlink -f "$0")
-# Absolute path this script is in, thus /home/user/bin
-GN2_BASE_PATH=$(dirname $(dirname "$SCRIPT"))
+GN2_BASE_DIR=$(dirname $(dirname "$SCRIPT"))
-GN2_GUIX_PATH=$GN2_BASE_PATH/lib/python2.7/site-packages/genenetwork2-2.0-py2.7.egg
-if [ -d $GN2_GUIX_PATH ]; then
- GN2_BASE_PATH=$GN2_GUIX_PATH
-fi
-echo $GN2_BASE_PATH
+echo GN2_BASE_DIR=$GN2_BASE_DIR
+
+GIT_HASH=$(git rev-parse HEAD)
+GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
+export GN_VERSION=$(cat $GN2_BASE_DIR/VERSION)-$GIT_BRANCH-${GIT_HASH:0:9}
+echo GN_VERSION=$GN_VERSION
-# Handle settings parameter
+# Handle settings parameter (can be .py or .json)
settings=$1
-if [ -z $settings ]; then settings=$GN2_BASE_PATH/etc/default_settings.py ; fi
+ext="${settings##*.}"
+if [ -z "$settings" -o "$ext" = "json" -o "$ext" = "JSON" ]; then
+ overrides=$settings
+ settings=$GN2_BASE_DIR/etc/default_settings.py
+else
+ shift
+fi
if [ ! -e $settings ]; then
- echo "ERROR: can not locate settings file - pass it in the command line"
- exit 1
+ GUIX_ETC=$GN2_BASE_DIR/lib/python2.7/site-packages/genenetwork2-2.0-py2.7.egg
+ if [ -d $GUIX_ETC ]; then
+ echo INFO: GN2 is actually running from GNU Guix
+ else
+ echo "ERROR: can not locate settings file - pass it in the command line"
+ exit 1
+ fi
+fi
+export WQFLASK_SETTINGS=$settings # Python
+export WQFLASK_OVERRIDES=$overrides # JSON
+
+echo WQFLASK_SETTINGS=$settings
+echo WQFLASK_OVERRIDES=$overrides
+
+# ---- Checks and balances
+if [ -z $GUIX_ETC ]; then
+ if [ -z $GN2_PROFILE ] ; then
+ echo "WARNING: GN2_PROFILE has not been set - I hope you know what you are doing!"
+ else
+ export PATH=$GN2_PROFILE/bin:$PATH
+ export PYTHONPATH=$GN2_PROFILE/lib/python2.7/site-packages
+ export R_LIBS_SITE=$GN2_PROFILE/site-library
+ export GUIX_GTK3_PATH="$GN2_PROFILE/lib/gtk-3.0"
+ export GI_TYPELIB_PATH="$GN2_PROFILE/lib/girepository-1.0"
+ export XDG_DATA_DIRS="$GN2_PROFILE/share"
+ export GIO_EXTRA_MODULES="$GN2_PROFILE/lib/gio/modules"
+ export LC_ALL=C
+ fi
+ if [ -z $PYTHONPATH ] ; then
+ echo "WARNING PYTHONPATH has not been set - use GN2_PROFILE!"
+ fi
+ if [ ! -d $R_LIBS_SITE ] ; then
+ echo "ERROR: R_LIBS_SITE has not been set correctly (we only allow one path) - use GN2_PROFILE!"
+ echo "Paste into your shell the output of (for example)"
+ echo "guix package -p \$GN2_PROFILE --search-paths"
+ exit 1
+ fi
fi
-export WQFLASK_SETTINGS=$settings
# We may change this one:
-export PYTHONPATH=$GN2_BASE_PATH/wqflask:$PYTHONPATH
+export PYTHONPATH=$GN2_BASE_DIR/wqflask:$PYTHONPATH
-# TEMPDIR defaults to /tmp if nothing else
-if [ -z $TEMPDIR ]; then
- TEMPDIR="/tmp"
+# Our UNIX TMPDIR defaults to /tmp - change this on a shared server
+if [ -z $TMPDIR ]; then
+ TMPDIR="/tmp"
fi
-
+
+set|grep $GN2_PROFILE
+set|grep TMPDIR
+
+# Now handle command parameter -c
+if [ "$1" = '-c' ] ; then
+ cd $GN2_BASE_DIR/wqflask
+ cmd=${2#wqflask/}
+ echo PYTHONPATH=$PYTHONPATH
+ echo RUNNING COMMAND $cmd
+ /usr/bin/env python $cmd
+ exit 0
+fi
+
echo "Starting the redis server:"
-echo -n "dir $TEMPDIR
+echo -n "dir $TMPDIR
dbfilename gn2.rdb
" | redis-server - &
# Start the flask server running GN2
-cd $GN2_BASE_PATH/wqflask
+cd $GN2_BASE_DIR/wqflask
echo "Starting with $settings"
/usr/bin/env python runserver.py