|
|
|
@ -1,5 +1,22 @@ |
|
|
|
|
# -*- bash -*- |
|
|
|
|
# |
|
|
|
|
# BASH support scriplet for environment modules. |
|
|
|
|
# |
|
|
|
|
# Simply "source" this script with "init" argument, |
|
|
|
|
# then you can use "module" command from the batch script. |
|
|
|
|
# |
|
|
|
|
# Example (from within your batch script): |
|
|
|
|
# |
|
|
|
|
# source ~/local/bash-module-env.sh init |
|
|
|
|
# module load gcc |
|
|
|
|
# |
|
|
|
|
# Optional: if you want to restore the modules listed in $LOADEDMODULES |
|
|
|
|
# (which will need to be passed on to the script via "-v LOADEDMODULES" argument |
|
|
|
|
# when qsub-ing, then use "restore" argment instead: |
|
|
|
|
# |
|
|
|
|
# Example (from within your batch script): |
|
|
|
|
# |
|
|
|
|
# source ~/local/bash-module-env.sh restore |
|
|
|
|
# |
|
|
|
|
|
|
|
|
|
# Some cluster defaults (may change over time) |
|
|
|
@ -17,7 +34,7 @@ MODULEPATH_DEFAULT=/cm/local/modulefiles:/cm/shared/modulefiles:/cm/shared/compi |
|
|
|
|
RestoreModuleEnv () { |
|
|
|
|
local LOADEDMODULES_SAVE |
|
|
|
|
: ${MODULESHOME:=$MODULESHOME_DEFAULT} |
|
|
|
|
: ${MODULEPATH:=$MODULEPATH_DEFAULT} |
|
|
|
|
_AppendPaths MODULEPATH "$MODULEPATH_DEFAULT" |
|
|
|
|
export MODULESHOME |
|
|
|
|
export MODULEPATH |
|
|
|
|
|
|
|
|
@ -39,15 +56,44 @@ RestoreModuleEnv () { |
|
|
|
|
InitModuleEnv () { |
|
|
|
|
# Only do the initialization part of the module so "module" command |
|
|
|
|
# is available for the script |
|
|
|
|
local LOADEDMODULES_SAVE |
|
|
|
|
: ${MODULESHOME:=$MODULESHOME_DEFAULT} |
|
|
|
|
: ${MODULEPATH:=$MODULEPATH_DEFAULT} |
|
|
|
|
_AppendPaths MODULEPATH "$MODULEPATH_DEFAULT" |
|
|
|
|
#: ${MODULEPATH:=$MODULEPATH_DEFAULT} |
|
|
|
|
export MODULESHOME |
|
|
|
|
export MODULEPATH |
|
|
|
|
|
|
|
|
|
source "$MODULESHOME/init/bash" |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_AppendPath () { |
|
|
|
|
# Usage: AppendPath VARNAME A_PATH |
|
|
|
|
# Appends a path element if it doesnt exist in current path |
|
|
|
|
local VAR VAL P |
|
|
|
|
VAR=$1 |
|
|
|
|
P=$2 |
|
|
|
|
VAL=$(eval "echo \"\$$VAR\"") # gets the current value of variable ${!VAR} |
|
|
|
|
case ":${VAL}:" in |
|
|
|
|
*:"${P}":*) |
|
|
|
|
;; |
|
|
|
|
*) |
|
|
|
|
VAL="${VAL}:${P}" |
|
|
|
|
eval "$VAR=\$VAL" |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_AppendPaths () { |
|
|
|
|
# Usage: AppendPath VARNAME PATHLIST |
|
|
|
|
# Appends one or more elements from PATHLIST for the elements that don't |
|
|
|
|
# exist in current path |
|
|
|
|
local VAR PATH1 PATHLIST |
|
|
|
|
VAR=$1 |
|
|
|
|
PATHLIST=$2 |
|
|
|
|
for PATH1 in ${PATHLIST//:/" "}; do |
|
|
|
|
_AppendPath "$VAR" "$PATH1" |
|
|
|
|
done |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
# For convenience: |
|
|
|
|
if [ "$1" = restore ]; then |
|
|
|
|
RestoreModuleEnv |
|
|
|
|