aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Isaac2022-01-03 17:45:14 +0530
committerArun Isaac2022-01-04 12:10:56 +0530
commit9973943adc7cb8f7866f8e18289ae841775dad6f (patch)
treeeafd1cfdc5adb6e7b25b7d2763675e86db22d9eb
parentc5c5de8aa9a8078ba5d955f2fc22dbc2c2494610 (diff)
downloadgenenetwork2-9973943adc7cb8f7866f8e18289ae841775dad6f.tar.gz
bin: Set GN2_PROFILE from GUIX_ENVIRONMENT.
`guix shell' sets the profile path in an environment variable---GUIX_ENVIRONMENT. There is no need to pass it explicity as an input in GN2_PROFILE. * README.md: Remove all references to GN2_PROFILE. * bin/genenetwork2: Set GN2_PROFILE from GUIX_ENVIRONMENT. Do not check the value of GN2_PROFILE now that it is set automatically. Remove all references to GN2_PROFILE in example invocations.
-rw-r--r--README.md17
-rwxr-xr-xbin/genenetwork283
2 files changed, 37 insertions, 63 deletions
diff --git a/README.md b/README.md
index 972d5c50..d5539a9f 100644
--- a/README.md
+++ b/README.md
@@ -30,7 +30,7 @@ genenetwork2
A quick example is
```sh
-env GN2_PROFILE=~/opt/gn-latest SERVER_PORT=5300 \
+env SERVER_PORT=5300 \
GENENETWORK_FILES=~/data/gn2_data/ \
GN_PROXY_URL="http://localhost:8080"\
GN3_LOCAL_URL="http://localhost:8081"\
@@ -69,19 +69,16 @@ We are building 'Mechanical Rob' automated testing using Python
which can be run with:
```sh
-env GN2_PROFILE=~/opt/gn-latest \
- ./bin/genenetwork2 \
+env ./bin/genenetwork2 \
GN_PROXY_URL="http://localhost:8080" \
GN3_LOCAL_URL="http://localhost:8081 "\
./etc/default_settings.py -c \
../test/requests/test-website.py -a http://localhost:5003
```
-The GN2_PROFILE is the Guix profile that contains all
-dependencies. The ./bin/genenetwork2 script sets up the environment
-and executes test-website.py in a Python interpreter. The -a switch
-says to run all tests and the URL points to the running GN2 http
-server.
+The ./bin/genenetwork2 script sets up the environment and executes
+test-website.py in a Python interpreter. The -a switch says to run all
+tests and the URL points to the running GN2 http server.
#### Unit tests
@@ -102,9 +99,9 @@ runcmd coverage html
The `runcmd` and `runpython` are shell aliases defined in the following way:
```sh
-alias runpython="env GN2_PROFILE=~/opt/gn-latest TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ GN_PROXY_URL="http://localhost:8080" GN3_LOCAL_URL="http://localhost:8081" ./bin/genenetwork2
+alias runpython="env TMPDIR=/tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ GN_PROXY_URL="http://localhost:8080" GN3_LOCAL_URL="http://localhost:8081" ./bin/genenetwork2
-alias runcmd="time env GN2_PROFILE=~/opt/gn-latest TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ GN_PROXY_URL="http://localhost:8080" GN3_LOCAL_URL="http://localhost:8081" ./bin/genenetwork2 ./etc/default_settings.py -cli"
+alias runcmd="time env TMPDIR=//tmp SERVER_PORT=5004 GENENETWORK_FILES=/gnu/data/gn2_data/ GN_PROXY_URL="http://localhost:8080" GN3_LOCAL_URL="http://localhost:8081" ./bin/genenetwork2 ./etc/default_settings.py -cli"
```
Replace some of the env variables as per your use case.
diff --git a/bin/genenetwork2 b/bin/genenetwork2
index b5c940a8..93ab02f8 100755
--- a/bin/genenetwork2
+++ b/bin/genenetwork2
@@ -5,55 +5,45 @@
#
# Typical usage
#
-# env GN2_PROFILE=~/opt/genenetwork2-phewas ./bin/genenetwork2 ~/my_settings.py
-#
-# Where GN2_PROFILE points to the GNU Guix profile used for deployment.
+# ./bin/genenetwork2 ~/my_settings.py
#
# This will run the GN2 server (with default settings if none
-# supplied). Typically you need a GNU Guix profile which is set with
-# an environment variable (this profile is dictated by the
-# installation path of genenetwork). Say your profile is in
-# ~/opt/gn-latest-guix
-#
-# env GN2_PROFILE=~/opt/gn-latest ./bin/genenetwork2
-#
-# You can pass in your own settings file, e.g.
-#
-# env GN2_PROFILE=~/opt/gn-latest ./bin/genenetwork2 ~/my_settings.py
+# supplied).
#
# To run a maintenance python script with settings (instead of the
# webserver) run from the base-dir with settings file and add that
# script with a -c switch, e.g.
#
-# env GN2_PROFILE=/usr/local/guix-profiles/gn-latest-20190905 TMPDIR=/export/local/home/zas1024/gn2-zach/tmp WEBSERVER_MODE=DEBUG LOG_LEVEL=DEBUG SERVER_PORT=5002 GENENETWORK_FILES=/export/local/home/zas1024/gn2-zach/genotype_files SQL_URI=mysql://webqtlout:webqtlout@lily.uthsc.edu/db_webqtl ./bin/genenetwork2 ./etc/default_settings.py -c ./maintenance/gen_select_dataset.py
+# env TMPDIR=/export/local/home/zas1024/gn2-zach/tmp WEBSERVER_MODE=DEBUG LOG_LEVEL=DEBUG SERVER_PORT=5002 GENENETWORK_FILES=/export/local/home/zas1024/gn2-zach/genotype_files SQL_URI=mysql://webqtlout:webqtlout@lily.uthsc.edu/db_webqtl ./bin/genenetwork2 ./etc/default_settings.py -c ./maintenance/gen_select_dataset.py
#
# To run any script in the environment
#
-# env GN2_PROFILE=~/opt/gn-latest ./bin/genenetwork2 ./etc/default_settings.py -cli echo "HELLO WORLD"
+# ./bin/genenetwork2 ./etc/default_settings.py -cli echo "HELLO WORLD"
#
# To get a python REPL(!)
#
-# env GN2_PROFILE=~/opt/gn-latest ./bin/genenetwork2 ./etc/default_settings.py -cli python
+# ./bin/genenetwork2 ./etc/default_settings.py -cli python
#
# For development you may want to run
#
-# env GN2_PROFILE=~/opt/gn-latest WEBSERVER_MODE=DEBUG LOG_LEVEL=DEBUG ./bin/genenetwork2
+# env WEBSERVER_MODE=DEBUG LOG_LEVEL=DEBUG ./bin/genenetwork2
#
# For staging and production we use gunicorn. Run with something like
# (note you have to provide the server port). Provide a settings file!
#
-# env GN2_PROFILE=~/opt/gn-latest-guix SERVER_PORT=5003 ./bin/genenetwork2 ./etc/default_settings.py -gunicorn-prod
+# env SERVER_PORT=5003 ./bin/genenetwork2 ./etc/default_settings.py -gunicorn-prod
#
# For development use
#
-# env GN2_PROFILE=~/opt/gn-latest-guix SERVER_PORT=5003 ./bin/genenetwork2 ./etc/default_settings.py -gunicorn-dev
+# env SERVER_PORT=5003 ./bin/genenetwork2 ./etc/default_settings.py -gunicorn-dev
#
# For extra flexibility you can also provide gunicorn parameters yourself with something like
#
-# env GN2_PROFILE=~/opt/gn-latest-guix ./bin/genenetwork2 ./etc/default_settings.py -gunicorn "--bind 0.0.0.0:5003 --workers=1 wsgi"
+# ./bin/genenetwork2 ./etc/default_settings.py -gunicorn "--bind 0.0.0.0:5003 --workers=1 wsgi"
SCRIPT=$(realpath "$0")
echo SCRIPT=$SCRIPT
+export GN2_PROFILE=$GUIX_ENVIRONMENT
echo GN2_PROFILE=$GN2_PROFILE
GN2_BASE_DIR=$(dirname $(dirname "$SCRIPT"))
GN2_ID=$(cat /etc/hostname):$(basename $GN2_BASE_DIR)
@@ -101,40 +91,27 @@ fi
export GN2_SETTINGS=$settings # Python
echo GN2_SETTINGS=$settings
-if [ -z $GN2_PROFILE ] ; then
- echo "WARNING: GN2_PROFILE has not been set - you need the environment, so I hope you know what you are doing!"
- export GN2_PROFILE=$(dirname $(dirname $(which genenetwork2)))
- if [ -d $GN2_PROFILE ]; then
- echo "Best guess is $GN2_PROFILE"
- fi
- echo "ERROR: always set GN2_PROFILE"
- exit 1
-fi
-if [ -z $GN2_PROFILE ]; then
- read -p "PRESS [ENTER] TO CONTINUE..."
-else
- export PATH=$GN2_PROFILE/bin:$PATH
- export PYTHONPATH="$GN2_PROFILE/lib/python3.8/site-packages" # never inject another PYTHONPATH!!
- export R_LIBS_SITE=$GN2_PROFILE/site-library
- export JS_GUIX_PATH=$GN2_PROFILE/share/genenetwork2/javascript
- 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 # FIXME
- export GUIX_GENENETWORK_FILES="$GN2_PROFILE/share/genenetwork2"
- export PLINK_COMMAND="$GN2_PROFILE/bin/plink2"
- export GEMMA_COMMAND="$GN2_PROFILE/bin/gemma"
- if [ -z $GEMMA_WRAPPER_COMMAND ]; then
- export GEMMA_WRAPPER_COMMAND="$GN2_PROFILE/bin/gemma-wrapper"
- fi
- while IFS=":" read -ra PPATH; do
- for PPART in "${PPATH[@]}"; do
- if [ ! -d $PPART ] ; then echo "$PPART in PYTHONPATH not valid $PYTHONPATH" ; exit 1 ; fi
- done
- done <<< "$PYTHONPATH"
- if [ ! -d $R_LIBS_SITE ] ; then echo "R_LIBS_SITE not valid "$R_LIBS_SITE ; exit 1 ; fi
+export PATH=$GN2_PROFILE/bin:$PATH
+export PYTHONPATH="$GN2_PROFILE/lib/python3.8/site-packages" # never inject another PYTHONPATH!!
+export R_LIBS_SITE=$GN2_PROFILE/site-library
+export JS_GUIX_PATH=$GN2_PROFILE/share/genenetwork2/javascript
+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 # FIXME
+export GUIX_GENENETWORK_FILES="$GN2_PROFILE/share/genenetwork2"
+export PLINK_COMMAND="$GN2_PROFILE/bin/plink2"
+export GEMMA_COMMAND="$GN2_PROFILE/bin/gemma"
+if [ -z $GEMMA_WRAPPER_COMMAND ]; then
+ export GEMMA_WRAPPER_COMMAND="$GN2_PROFILE/bin/gemma-wrapper"
fi
+while IFS=":" read -ra PPATH; do
+ for PPART in "${PPATH[@]}"; do
+ if [ ! -d $PPART ] ; then echo "$PPART in PYTHONPATH not valid $PYTHONPATH" ; exit 1 ; fi
+ done
+done <<< "$PYTHONPATH"
+if [ ! -d $R_LIBS_SITE ] ; then echo "R_LIBS_SITE not valid "$R_LIBS_SITE ; exit 1 ; fi
if [ -z $PYTHONPATH ] ; then
echo "ERROR PYTHONPATH has not been set - use GN2_PROFILE!"
exit 1