diff options
-rwxr-xr-x | share/spack/setup-env.csh | 10 | ||||
-rwxr-xr-x | share/spack/setup-env.fish | 9 | ||||
-rwxr-xr-x | share/spack/setup-env.sh | 10 |
3 files changed, 29 insertions, 0 deletions
diff --git a/share/spack/setup-env.csh b/share/spack/setup-env.csh index edbf51e8e2..1985e023de 100755 --- a/share/spack/setup-env.csh +++ b/share/spack/setup-env.csh @@ -12,6 +12,13 @@ # setenv SPACK_ROOT /path/to/spack # source $SPACK_ROOT/share/spack/setup-env.csh # + +# prevent infinite recursion when spack shells out (e.g., on cray for modules) +if ($?_sp_initializing) then + exit 0 +endif +setenv _sp_initializing true + if ($?SPACK_ROOT) then set _spack_source_file = $SPACK_ROOT/share/spack/setup-env.csh set _spack_share_dir = $SPACK_ROOT/share/spack @@ -38,3 +45,6 @@ else echo "ERROR: Sourcing spack setup-env.csh requires setting SPACK_ROOT to " echo " the root of your spack installation." endif + +# done: unset sentinel variable as we're no longer initializing +unsetenv _sp_initializing diff --git a/share/spack/setup-env.fish b/share/spack/setup-env.fish index a534f09ee9..dd2a17f74f 100755 --- a/share/spack/setup-env.fish +++ b/share/spack/setup-env.fish @@ -36,6 +36,12 @@ # to come up with a user-friendly naming scheme for spack dotfiles. ################################################################################# +# prevent infinite recursion when spack shells out (e.g., on cray for modules) +if test -n "$_sp_initializing" + exit 0 +end +set -x _sp_initializing true + # # Test for STDERR-NOCARET feature: if this is off, fish will redirect stderr to @@ -721,3 +727,6 @@ sp_multi_pathadd MODULEPATH $_sp_tcl_roots # [3]: When the test in the if statement fails, the `status` flag is set to 1. # `true` here manuallt resets the value of `status` to 0. Since `set` # passes `status` along, we thus avoid the function returning 1 by mistake. + +# done: unset sentinel variable as we're no longer initializing +set -e _sp_initializing diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index 032247cd8f..9d984ae199 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -39,6 +39,12 @@ # spack module files. ######################################################################## +# prevent infinite recursion when spack shells out (e.g., on cray for modules) +if [ -n "${_sp_initializing:-}" ]; then + exit 0 +fi +export _sp_initializing=true + spack() { # Store LD_LIBRARY_PATH variables from spack shell function # This is necessary because MacOS System Integrity Protection clears @@ -357,3 +363,7 @@ _sp_multi_pathadd MODULEPATH "$_sp_tcl_roots" if [ "$_sp_shell" = bash ]; then source $_sp_share_dir/spack-completion.bash fi + +# done: unset sentinel variable as we're no longer initializing +unset _sp_initializing +export _sp_initializing |