diff options
author | René Widera <r.widera@hzdr.de> | 2018-04-24 22:43:32 +0200 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2018-04-24 13:43:32 -0700 |
commit | caa0c5c68723344e10f41aaac1ef82d0fba1cfb8 (patch) | |
tree | 296f42b20e7f591f439ab343c161aeb90d0d0a23 /share | |
parent | f7da156879328c7b25758db359d2235af9d245e3 (diff) | |
download | spack-caa0c5c68723344e10f41aaac1ef82d0fba1cfb8.tar.gz spack-caa0c5c68723344e10f41aaac1ef82d0fba1cfb8.tar.bz2 spack-caa0c5c68723344e10f41aaac1ef82d0fba1cfb8.tar.xz spack-caa0c5c68723344e10f41aaac1ef82d0fba1cfb8.zip |
environment shell: fix `spack load` (#7747)
Fix `spack load` with extended packe specifications those includes spaces.
Solved by using perfectly parameter forwarding via temporary array.
example:
```
$ spack install zlib
$ spack install zlib cppflags='-O3 -march=native'
$ spack install zlib cppflags='-O2 -march=native'
$ spack find -d -L -f zlib
==> 3 installed packages.
-- linux-linuxmint18-x86_64 / gcc@5.4.0 -------------------------
k5hg4kkxiutkfl6n53ogz5wnlbdrsdtf zlib@1.2.11%gcc
mse2fyzdxciszdhiqi4b5kl6fxkps3fh zlib@1.2.11%gcc cppflags="-O2 -march=native"
vrnvj2fikcbxqxrymctnlpmud7wbuahk zlib@1.2.11%gcc cppflags="-O3 -march=native"
$ spack load zlib cppflags='-O3 -march=native'
==> Error: Unexpected token
['zlib', 'cppflags=-O3', '-march=native']
```
Diffstat (limited to 'share')
-rwxr-xr-x | share/spack/setup-env.sh | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh index 688529491a..1dbc49c8a7 100755 --- a/share/spack/setup-env.sh +++ b/share/spack/setup-env.sh @@ -81,7 +81,7 @@ function spack { fi _sp_subcommand=$1; shift - _sp_spec="$@" + _sp_spec=("$@") # Filter out use and unuse. For any other commands, just run the # command. @@ -113,7 +113,7 @@ function spack { shift done - _sp_spec="$@" + _sp_spec=("$@") # Here the user has run use or unuse with a spec. Find a matching # spec using 'spack module find', then use the appropriate module @@ -121,19 +121,19 @@ function spack { # If spack module command comes back with an error, do nothing. case $_sp_subcommand in "use") - if _sp_full_spec=$(command spack $_sp_flags module loads --input-only $_sp_subcommand_args --module-type dotkit $_sp_spec); then + if _sp_full_spec=$(command spack $_sp_flags module loads --input-only $_sp_subcommand_args --module-type dotkit "${_sp_spec[@]}"); then use $_sp_module_args $_sp_full_spec fi ;; "unuse") - if _sp_full_spec=$(command spack $_sp_flags module loads --input-only $_sp_subcommand_args --module-type dotkit $_sp_spec); then + if _sp_full_spec=$(command spack $_sp_flags module loads --input-only $_sp_subcommand_args --module-type dotkit "${_sp_spec[@]}"); then unuse $_sp_module_args $_sp_full_spec fi ;; "load") - if _sp_full_spec=$(command spack $_sp_flags module loads --input-only $_sp_subcommand_args --module-type tcl $_sp_spec); then + if _sp_full_spec=$(command spack $_sp_flags module loads --input-only $_sp_subcommand_args --module-type tcl "${_sp_spec[@]}"); then module load $_sp_module_args $_sp_full_spec fi ;; "unload") - if _sp_full_spec=$(command spack $_sp_flags module loads --input-only $_sp_subcommand_args --module-type tcl $_sp_spec); then + if _sp_full_spec=$(command spack $_sp_flags module loads --input-only $_sp_subcommand_args --module-type tcl "${_sp_spec[@]}"); then module unload $_sp_module_args $_sp_full_spec fi ;; esac |