summaryrefslogtreecommitdiff
path: root/lib/spack/docs/tutorial_modules.rst
diff options
context:
space:
mode:
Diffstat (limited to 'lib/spack/docs/tutorial_modules.rst')
-rw-r--r--lib/spack/docs/tutorial_modules.rst693
1 files changed, 363 insertions, 330 deletions
diff --git a/lib/spack/docs/tutorial_modules.rst b/lib/spack/docs/tutorial_modules.rst
index 21e1e5e886..31fb1cd749 100644
--- a/lib/spack/docs/tutorial_modules.rst
+++ b/lib/spack/docs/tutorial_modules.rst
@@ -1,3 +1,8 @@
+.. Copyright 2013-2018 Lawrence Livermore National Security, LLC and other
+ Spack Project Developers. See the top-level COPYRIGHT file for details.
+
+ SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
.. _modules-tutorial:
============
@@ -144,77 +149,16 @@ how Spack can help with similar situations, as they will happen on real HPC clus
For instance, it's often preferable for Spack to use vendor-provided MPI
implementations than to build one itself.
-The best way to follow along is to use a Docker image, which comes
-with Spack and all the software used in the following parts already
-pre-installed. If you want to proceed this way, read :ref:`module_file_tutorial_use_docker`.
-
-If you don't have Docker installed or for any other reason you
-prefer to work locally, follow instead :ref:`module_file_tutorial_work_locally`
-to know how to clone Spack and install the software.
-Be aware that the set-up will take longer and that the details of the snippets
-below assume the Docker image and may need changes to work in your particular
-environment.
+To keep the set of software we're dealing with manageable, we're going
+to uninstall everything from earlier in the tutorial.
-.. _module_file_tutorial_use_docker:
-
-^^^^^^^^^^^^^^^^^^
-Use a Docker image
-^^^^^^^^^^^^^^^^^^
+.. code-block: console
-The fastest way to set-up your environment is to :ref:`use a Docker image <workflow_create_docker_image>`:
+ $ spack uninstall -ay
-.. code-block:: console
-
- $ docker pull alalazo/spack:module_tutorial
- $ docker run --rm -h module-file-tutorial -it alalazo/spack:module_tutorial
- root@module-file-tutorial:/#
-
-If you arrived at this point you should be ready to start, as all the software needed is
-pre-installed in the image:
-
-.. code-block:: console
-
- root@module-file-tutorial:/# which spack
- /usr/local/bin/spack
- root@module-file-tutorial:/# spack find
- ==> 46 installed packages.
- -- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
- autoconf@2.69 gcc@7.2.0 git@2.9.4 isl@0.18 libtool@2.4.6 lua@5.3.4 lua-luaposix@33.4.0 mpc@1.0.3 ncurses@6.0 pkg-config@0.29.2 tcl@8.6.6
- automake@1.15.1 gdbm@1.13 gmp@6.1.2 libsigsegv@2.11 lmod@7.7 lua-luafilesystem@1_6_3 m4@1.4.18 mpfr@3.1.5 perl@5.24.1 readline@7.0 zlib@1.2.11
-
- -- linux-ubuntu16.04-x86_64 / gcc@7.2.0 -------------------------
- bzip2@1.0.6 ncurses@6.0 netlib-scalapack@2.0.2 openblas@0.2.20 pkg-config@0.29.2 py-packaging@16.8 py-setuptools@35.0.2 readline@7.0
- cmake@3.9.4 netlib-lapack@3.6.1 netlib-scalapack@2.0.2 openmpi@1.10.2 py-appdirs@1.4.3 py-pyparsing@2.2.0 py-six@1.10.0 sqlite@3.20.0
- mpich@3.2 netlib-scalapack@2.0.2 netlib-scalapack@2.0.2 openssl@1.0.2k py-numpy@1.13.1 py-scipy@0.19.1 python@2.7.14 zlib@1.2.11
-
-Go to :ref:`module_file_tutorial_non_hierarchical` to proceed with the tutorial.
-
-.. note::
- Dockerfile for this image
- Those of you that want to build a similar container themselves can find the
- ``Dockerfile`` and the other resources in Spack's ``share/spack/docs/docker``
- folder.
-
-.. _module_file_tutorial_work_locally:
-
-^^^^^^^^^^^^^^^^^^^^^^
-Work in a local folder
-^^^^^^^^^^^^^^^^^^^^^^
-
-If you don't feel like using a container, you can set-up your environment
-locally. Let's start by cloning the Spack repository and moving to the directory
-where it was checked out:
-
-.. code-block:: console
-
- $ git clone https://github.com/spack/spack.git
- $ cd spack
-
-From here we'll be building the required stack of software.
-
-"""""""""""""""""""
+^^^^^^^^^^^^^^^^^^^
Build a module tool
-"""""""""""""""""""
+^^^^^^^^^^^^^^^^^^^
The first thing that we need is the module tool. In this case we
choose ``lmod`` as it can work with both hierarchical and non-hierarchical
@@ -233,7 +177,8 @@ to remember, we'll employ the command ``spack location`` to retrieve the
$ . $(spack location -i lmod)/lmod/lmod/init/bash
-Now we can source the setup file and activate the :ref:`shell support <shell-support>`:
+Now we can re-source the setup file and Spack modules will be put in
+our module path.
.. code-block:: console
@@ -246,26 +191,15 @@ Now we can source the setup file and activate the :ref:`shell support <shell-sup
to the documentation :ref:`here <InstallEnvironmentModules>`.
-""""""""""""""""""
+^^^^^^^^^^^^^^^^^^
Add a new compiler
-""""""""""""""""""
+^^^^^^^^^^^^^^^^^^
The second step is to build a recent compiler. On first use, Spack
-scans the environment and automatically locates the
-compiler(s) already available on the system. This is what you'll see
-on Ubuntu 14.04:
-
-.. code-block:: console
-
- $ uname -a
- Linux nuvolari 4.4.0-45-generic #66~14.04.1-Ubuntu SMP Wed Oct 19 15:05:38 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
+scans the environment and automatically locates the compiler(s)
+already available on the system. For this tutorial, however, we want
+to use ``gcc@7.2.0``.
- $ spack compilers
- ==> Available compilers
- -- gcc ----------------------------------------------------------
- gcc@4.8
-
-Let's bootstrap a more recent compiler with the one that was automatically detected:
.. code-block:: console
@@ -294,7 +228,7 @@ You can use this command to double check:
$ module list
Currently Loaded Modules:
- 1) lmod-7.7-gcc-4.8-okcwjgw 2) gcc-7.2.0-gcc-4.8-twd5nqg
+ 1) gcc-7.2.0-gcc-5.4.0-b7smjjc
Note that the 7-digit hash at the end of the generated module may vary depending
on architecture or package version. Now that we have ``gcc@7.2.0`` in ``PATH`` we
@@ -303,38 +237,23 @@ can finally add it to the list of compilers known to Spack:
.. code-block:: console
$ spack compiler add
- ==> Added 1 new compiler to ~/.spack/linux/compilers.yaml
+ ==> Added 1 new compiler to /home/spack1/.spack/linux/compilers.yaml
gcc@7.2.0
+ ==> Compilers are defined in the following files:
+ /home/spack1/.spack/linux/compilers.yaml
- $ spack compilers
+ $ spack compiler list
==> Available compilers
- -- gcc ----------------------------------------------------------
- gcc@7.2.0 gcc@4.8
-
-
-""""""""""""""""""""""""""""""""""""""""""""""""""""
-Build the software that will be used in the tutorial
-""""""""""""""""""""""""""""""""""""""""""""""""""""
-
-The last step is to install the software stack needed later on. To mimic
-an external installation of an MPI provider we'll install ``openmpi`` on
-the system we are working on. On Ubuntu 14.04 it boils down to:
-
-.. code-block:: console
+ -- clang ubuntu16.04-x86_64 -------------------------------------
+ clang@3.8.0-2ubuntu4 clang@3.7.1-2ubuntu2
- $ sudo apt-get install openmpi-bin openmpi-common libopenmpi-dev
- ...
-
-but the exact command varies according to your OS. Then we need to prepare
-a ``packages.yaml`` file that instructs Spack to use an externally provided MPI:
+ -- gcc ubuntu16.04-x86_64 ---------------------------------------
+ gcc@7.2.0 gcc@5.4.0 gcc@4.7
-.. code-block:: yaml
- packages:
- openmpi:
- buildable: False
- paths:
- openmpi@1.6: /usr
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Build the software that will be used in the tutorial
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Finally, we should use Spack to install the packages used in the examples:
@@ -357,19 +276,36 @@ If you arrived to this point you should have an environment that looks similar t
.. code-block:: console
- root@module-file-tutorial:/# module avail
+ $ module avail
+
+ ----------------------------------------------- /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------
+ autoconf-2.69-gcc-5.4.0-3sx2gxe libsigsegv-2.11-gcc-7.2.0-g67xpfd openssl-1.0.2o-gcc-5.4.0-b4y3w3b
+ autoconf-2.69-gcc-7.2.0-yb2makb libtool-2.4.6-gcc-5.4.0-o2pfwjf openssl-1.0.2o-gcc-7.2.0-cvldq3v
+ automake-1.16.1-gcc-5.4.0-rymw7im libtool-2.4.6-gcc-7.2.0-kt2udm6 pcre-8.42-gcc-5.4.0-gt5lgzi
+ automake-1.16.1-gcc-7.2.0-qoowd5q libxml2-2.9.8-gcc-5.4.0-wpexsph perl-5.26.2-gcc-5.4.0-ic2kyoa
+ bzip2-1.0.6-gcc-5.4.0-ufczdvs libxml2-2.9.8-gcc-7.2.0-47gf5kk perl-5.26.2-gcc-7.2.0-fdwz5yu
+ bzip2-1.0.6-gcc-7.2.0-mwamumj lmod-7.8-gcc-5.4.0-kmhks3p pkgconf-1.4.2-gcc-5.4.0-fovrh7a
+ cmake-3.12.3-gcc-7.2.0-obqgn2v lua-5.3.4-gcc-5.4.0-cpfeo2w pkgconf-1.4.2-gcc-7.2.0-yoxwmgb
+ curl-7.60.0-gcc-5.4.0-vzqreb2 lua-luafilesystem-1_6_3-gcc-5.4.0-alakjim py-numpy-1.15.2-gcc-7.2.0-wbwtcxf
+ diffutils-3.6-gcc-5.4.0-2rhuivg lua-luaposix-33.4.0-gcc-5.4.0-7wqhwoc py-scipy-1.1.0-gcc-7.2.0-d5n3cph
+ diffutils-3.6-gcc-7.2.0-eauxwi7 m4-1.4.18-gcc-5.4.0-suf5jtc py-setuptools-40.4.3-gcc-7.2.0-5dbwfwn
+ expat-2.2.5-gcc-5.4.0-emyv67q m4-1.4.18-gcc-7.2.0-wdzvagl python-2.7.15-gcc-7.2.0-ucmr2mn
+ findutils-4.6.0-gcc-7.2.0-ca4b7zq mpc-1.1.0-gcc-5.4.0-iuf3gc3 readline-7.0-gcc-5.4.0-nxhwrg7
+ gcc-7.2.0-gcc-5.4.0-b7smjjc (L) mpfr-3.1.6-gcc-5.4.0-jnt2nnp readline-7.0-gcc-7.2.0-ccruj2i
+ gdbm-1.14.1-gcc-5.4.0-q4fpyuo mpich-3.2.1-gcc-7.2.0-vt5xcat sqlite-3.23.1-gcc-7.2.0-5ltus3a
+ gdbm-1.14.1-gcc-7.2.0-zk5lhob ncurses-6.1-gcc-5.4.0-3o765ou tar-1.30-gcc-5.4.0-dk7lrpo
+ gettext-0.19.8.1-gcc-5.4.0-tawgous ncurses-6.1-gcc-7.2.0-xcgzqdv tcl-8.6.8-gcc-5.4.0-qhwyccy
+ git-2.19.1-gcc-5.4.0-p3gjnfa netlib-lapack-3.8.0-gcc-7.2.0-fj7nayd texinfo-6.5-gcc-7.2.0-cuqnfgf
+ gmp-6.1.2-gcc-5.4.0-qc4qcfz netlib-scalapack-2.0.2-gcc-7.2.0-67nmj7g unzip-6.0-gcc-5.4.0-ba23fbg
+ hwloc-1.11.9-gcc-7.2.0-gbyc65s netlib-scalapack-2.0.2-gcc-7.2.0-6jgjbyg util-macros-1.19.1-gcc-7.2.0-t62kozq
+ isl-0.18-gcc-5.4.0-vttqout netlib-scalapack-2.0.2-gcc-7.2.0-prgo67d xz-5.2.4-gcc-5.4.0-teneqii
+ libbsd-0.8.6-gcc-5.4.0-f4qkkwm netlib-scalapack-2.0.2-gcc-7.2.0-zxpt252 xz-5.2.4-gcc-7.2.0-rql5kog
+ libiconv-1.15-gcc-5.4.0-u2x3umv numactl-2.0.11-gcc-7.2.0-rifwktk zlib-1.2.11-gcc-5.4.0-5nus6kn
+ libpciaccess-0.13.5-gcc-7.2.0-riipwi2 openblas-0.3.3-gcc-7.2.0-xxoxfh4 zlib-1.2.11-gcc-7.2.0-ezuwp4p
+ libsigsegv-2.11-gcc-5.4.0-fypapcp openmpi-3.1.3-gcc-7.2.0-do5xfer
- ----------------------------------------------------------------------------- /usr/local/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------------------------------------
- autoconf-2.69-gcc-5.4.0-bvabhji libtool-2.4.6-gcc-5.4.0-o2pfwjf ncurses-6.0-gcc-7.2.0-oh6pqty pkg-config-0.29.2-gcc-5.4.0-ae2hwm7 readline-7.0-gcc-5.4.0-gizxpch
- automake-1.15.1-gcc-5.4.0-kaiefe4 lmod-7.7-gcc-5.4.0-okcwjgw netlib-lapack-3.6.1-gcc-7.2.0-5sywztc pkg-config-0.29.2-gcc-7.2.0-76z7ehw readline-7.0-gcc-7.2.0-eqos6rz
- bzip2-1.0.6-gcc-7.2.0-mwamumj lua-5.3.4-gcc-5.4.0-ytxw2gq netlib-scalapack-2.0.2-gcc-7.2.0-5lb2j5p py-appdirs-1.4.3-gcc-7.2.0-7ncu7zr sqlite-3.20.0-gcc-7.2.0-hfmjilk
- cmake-3.9.4-gcc-7.2.0-6bxdr6h lua-luafilesystem-1_6_3-gcc-5.4.0-5dzzlt4 netlib-scalapack-2.0.2-gcc-7.2.0-ax6aza6 py-numpy-1.13.1-gcc-7.2.0-22n5oub tcl-8.6.6-gcc-5.4.0-767ls4i
- gcc-7.2.0-gcc-5.4.0-go3z4hb lua-luaposix-33.4.0-gcc-5.4.0-w5jpnwm netlib-scalapack-2.0.2-gcc-7.2.0-c4v5l7j py-packaging-16.8-gcc-7.2.0-c37cjmq zlib-1.2.11-gcc-5.4.0-swly52a
- gdbm-1.13-gcc-5.4.0-vdhoris m4-1.4.18-gcc-5.4.0-r5envx3 netlib-scalapack-2.0.2-gcc-7.2.0-m7rzcmh py-pyparsing-2.2.0-gcc-7.2.0-ahdh5cx zlib-1.2.11-gcc-7.2.0-lv5fabl
- git-2.9.4-gcc-5.4.0-atwjs4i mpc-1.0.3-gcc-5.4.0-tumbpsh openblas-0.2.20-gcc-7.2.0-kvddide py-scipy-0.19.1-gcc-7.2.0-7hi7r5j
- gmp-6.1.2-gcc-5.4.0-qc4qcfz mpfr-3.1.5-gcc-5.4.0-mdi6irz openmpi-1.10.2-gcc-7.2.0-ufw7pdi py-setuptools-35.0.2-gcc-7.2.0-cvasi7i
- isl-0.18-gcc-5.4.0-vttqout mpich-3.2-gcc-7.2.0-7gxffhv openssl-1.0.2k-gcc-7.2.0-pxv3dh4 py-six-1.10.0-gcc-7.2.0-3xk5mod
- libsigsegv-2.11-gcc-5.4.0-fypapcp ncurses-6.0-gcc-5.4.0-ukq4tcc perl-5.24.1-gcc-5.4.0-mfzwy6y python-2.7.14-gcc-7.2.0-555u7ea
+ Where:
+ L: Module is loaded
Use "module spider" to find all possible modules.
Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
@@ -380,19 +316,24 @@ Taking a look at the ``gcc`` module you'll see, for example:
.. code-block:: console
- root@module-file-tutorial:/# module show gcc-7.2.0-gcc-5.4.0-go3z4hb
- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- /usr/local/share/spack/modules/linux-ubuntu16.04-x86_64/gcc-7.2.0-gcc-5.4.0-go3z4hb:
- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ $ module show gcc-7.2.0-gcc-5.4.0-b7smjjc
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64/gcc-7.2.0-gcc-5.4.0-b7smjjc:
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------
whatis("The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go, as well as libraries for these languages. ")
- prepend_path("PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/bin")
- prepend_path("MANPATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/share/man")
- prepend_path("LIBRARY_PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/lib")
- prepend_path("LD_LIBRARY_PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/lib")
- prepend_path("LIBRARY_PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/lib64")
- prepend_path("LD_LIBRARY_PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/lib64")
- prepend_path("CPATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/include")
- prepend_path("CMAKE_PREFIX_PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/")
+ prepend_path("PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin")
+ prepend_path("MANPATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/share/man")
+ prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib")
+ prepend_path("LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib")
+ prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib64")
+ prepend_path("LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib64")
+ prepend_path("CPATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/include")
+ prepend_path("CMAKE_PREFIX_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/")
+ setenv("CC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gcc")
+ setenv("CXX","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/g++")
+ setenv("FC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
+ setenv("F77","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
+ setenv("F90","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
help([[The GNU Compiler Collection includes front ends for C, C++, Objective-C,
Fortran, Ada, and Go, as well as libraries for these languages.
]])
@@ -422,19 +363,26 @@ Next you should regenerate all the module files:
.. code-block:: console
- root@module-file-tutorial:/# spack module refresh --module-type tcl
+ $ spack module tcl refresh
==> You are about to regenerate tcl module files for:
-- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
- bvabhji autoconf@2.69 vdhoris gdbm@1.13 vttqout isl@0.18 okcwjgw lmod@7.7 w5jpnwm lua-luaposix@33.4.0 mdi6irz mpfr@3.1.5 ae2hwm7 pkg-config@0.29.2 swly52a zlib@1.2.11
- kaiefe4 automake@1.15.1 atwjs4i git@2.9.4 fypapcp libsigsegv@2.11 ytxw2gq lua@5.3.4 r5envx3 m4@1.4.18 ukq4tcc ncurses@6.0 gizxpch readline@7.0
- go3z4hb gcc@7.2.0 qc4qcfz gmp@6.1.2 o2pfwjf libtool@2.4.6 5dzzlt4 lua-luafilesystem@1_6_3 tumbpsh mpc@1.0.3 mfzwy6y perl@5.24.1 767ls4i tcl@8.6.6
+ 3sx2gxe autoconf@2.69 b7smjjc gcc@7.2.0 f4qkkwm libbsd@0.8.6 cpfeo2w lua@5.3.4 3o765ou ncurses@6.1 dk7lrpo tar@1.30
+ rymw7im automake@1.16.1 q4fpyuo gdbm@1.14.1 u2x3umv libiconv@1.15 alakjim lua-luafilesystem@1_6_3 b4y3w3b openssl@1.0.2o qhwyccy tcl@8.6.8
+ ufczdvs bzip2@1.0.6 tawgous gettext@0.19.8.1 fypapcp libsigsegv@2.11 7wqhwoc lua-luaposix@33.4.0 gt5lgzi pcre@8.42 ba23fbg unzip@6.0
+ vzqreb2 curl@7.60.0 p3gjnfa git@2.19.1 o2pfwjf libtool@2.4.6 suf5jtc m4@1.4.18 ic2kyoa perl@5.26.2 teneqii xz@5.2.4
+ 2rhuivg diffutils@3.6 qc4qcfz gmp@6.1.2 wpexsph libxml2@2.9.8 iuf3gc3 mpc@1.1.0 fovrh7a pkgconf@1.4.2 5nus6kn zlib@1.2.11
+ emyv67q expat@2.2.5 vttqout isl@0.18 kmhks3p lmod@7.8 jnt2nnp mpfr@3.1.6 nxhwrg7 readline@7.0
-- linux-ubuntu16.04-x86_64 / gcc@7.2.0 -------------------------
- mwamumj bzip2@1.0.6 5sywztc netlib-lapack@3.6.1 m7rzcmh netlib-scalapack@2.0.2 76z7ehw pkg-config@0.29.2 ahdh5cx py-pyparsing@2.2.0 555u7ea python@2.7.14
- 6bxdr6h cmake@3.9.4 ax6aza6 netlib-scalapack@2.0.2 kvddide openblas@0.2.20 7ncu7zr py-appdirs@1.4.3 7hi7r5j py-scipy@0.19.1 eqos6rz readline@7.0
- 7gxffhv mpich@3.2 c4v5l7j netlib-scalapack@2.0.2 ufw7pdi openmpi@1.10.2 22n5oub py-numpy@1.13.1 cvasi7i py-setuptools@35.0.2 hfmjilk sqlite@3.20.0
- oh6pqty ncurses@6.0 5lb2j5p netlib-scalapack@2.0.2 pxv3dh4 openssl@1.0.2k c37cjmq py-packaging@16.8 3xk5mod py-six@1.10.0 lv5fabl zlib@1.2.11
+ yb2makb autoconf@2.69 riipwi2 libpciaccess@0.13.5 6jgjbyg netlib-scalapack@2.0.2 fdwz5yu perl@5.26.2 cuqnfgf texinfo@6.5
+ qoowd5q automake@1.16.1 g67xpfd libsigsegv@2.11 zxpt252 netlib-scalapack@2.0.2 yoxwmgb pkgconf@1.4.2 t62kozq util-macros@1.19.1
+ mwamumj bzip2@1.0.6 kt2udm6 libtool@2.4.6 67nmj7g netlib-scalapack@2.0.2 wbwtcxf py-numpy@1.15.2 rql5kog xz@5.2.4
+ obqgn2v cmake@3.12.3 47gf5kk libxml2@2.9.8 prgo67d netlib-scalapack@2.0.2 d5n3cph py-scipy@1.1.0 ezuwp4p zlib@1.2.11
+ eauxwi7 diffutils@3.6 wdzvagl m4@1.4.18 rifwktk numactl@2.0.11 5dbwfwn py-setuptools@40.4.3
+ ca4b7zq findutils@4.6.0 vt5xcat mpich@3.2.1 xxoxfh4 openblas@0.3.3 ucmr2mn python@2.7.15
+ zk5lhob gdbm@1.14.1 xcgzqdv ncurses@6.1 do5xfer openmpi@3.1.3 ccruj2i readline@7.0
+ gbyc65s hwloc@1.11.9 fj7nayd netlib-lapack@3.8.0 cvldq3v openssl@1.0.2o 5ltus3a sqlite@3.23.1
==> Do you want to proceed? [y/n] y
==> Regenerating tcl module files
@@ -444,16 +392,21 @@ paths have disappeared:
.. code-block:: console
- root@module-file-tutorial:/# module show gcc-7.2.0-gcc-5.4.0-go3z4hb
- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- /usr/local/share/spack/modules/linux-ubuntu16.04-x86_64/gcc-7.2.0-gcc-5.4.0-go3z4hb:
- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ $ module show gcc-7.2.0-gcc-5.4.0-b7smjjc
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64/gcc-7.2.0-gcc-5.4.0-b7smjjc:
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------
whatis("The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go, as well as libraries for these languages. ")
- prepend_path("PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/bin")
- prepend_path("MANPATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/share/man")
- prepend_path("LD_LIBRARY_PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/lib")
- prepend_path("LD_LIBRARY_PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/lib64")
- prepend_path("CMAKE_PREFIX_PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/")
+ prepend_path("PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin")
+ prepend_path("MANPATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/share/man")
+ prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib")
+ prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib64")
+ prepend_path("CMAKE_PREFIX_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/")
+ setenv("CC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gcc")
+ setenv("CXX","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/g++")
+ setenv("FC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
+ setenv("F77","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
+ setenv("F90","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
help([[The GNU Compiler Collection includes front ends for C, C++, Objective-C,
Fortran, Ada, and Go, as well as libraries for these languages.
]])
@@ -482,41 +435,55 @@ To do this you should add a ``blacklist`` keyword to ``~/.spack/modules.yaml``:
and regenerate the module files:
+This time it is convenient to pass the option ``--delete-tree`` to the command that
+regenerates the module files to instruct it to delete the existing tree and regenerate
+a new one instead of overwriting the files in the existing directory.
+
.. code-block:: console
- root@module-file-tutorial:/# spack module refresh --module-type tcl --delete-tree
+ $ spack module tcl refresh --delete-tree
==> You are about to regenerate tcl module files for:
-- linux-ubuntu16.04-x86_64 / gcc@5.4.0 -------------------------
- bvabhji autoconf@2.69 vdhoris gdbm@1.13 vttqout isl@0.18 okcwjgw lmod@7.7 w5jpnwm lua-luaposix@33.4.0 mdi6irz mpfr@3.1.5 ae2hwm7 pkg-config@0.29.2 swly52a zlib@1.2.11
- kaiefe4 automake@1.15.1 atwjs4i git@2.9.4 fypapcp libsigsegv@2.11 ytxw2gq lua@5.3.4 r5envx3 m4@1.4.18 ukq4tcc ncurses@6.0 gizxpch readline@7.0
- go3z4hb gcc@7.2.0 qc4qcfz gmp@6.1.2 o2pfwjf libtool@2.4.6 5dzzlt4 lua-luafilesystem@1_6_3 tumbpsh mpc@1.0.3 mfzwy6y perl@5.24.1 767ls4i tcl@8.6.6
+ 3sx2gxe autoconf@2.69 b7smjjc gcc@7.2.0 f4qkkwm libbsd@0.8.6 cpfeo2w lua@5.3.4 3o765ou ncurses@6.1 dk7lrpo tar@1.30
+ rymw7im automake@1.16.1 q4fpyuo gdbm@1.14.1 u2x3umv libiconv@1.15 alakjim lua-luafilesystem@1_6_3 b4y3w3b openssl@1.0.2o qhwyccy tcl@8.6.8
+ ufczdvs bzip2@1.0.6 tawgous gettext@0.19.8.1 fypapcp libsigsegv@2.11 7wqhwoc lua-luaposix@33.4.0 gt5lgzi pcre@8.42 ba23fbg unzip@6.0
+ vzqreb2 curl@7.60.0 p3gjnfa git@2.19.1 o2pfwjf libtool@2.4.6 suf5jtc m4@1.4.18 ic2kyoa perl@5.26.2 teneqii xz@5.2.4
+ 2rhuivg diffutils@3.6 qc4qcfz gmp@6.1.2 wpexsph libxml2@2.9.8 iuf3gc3 mpc@1.1.0 fovrh7a pkgconf@1.4.2 5nus6kn zlib@1.2.11
+ emyv67q expat@2.2.5 vttqout isl@0.18 kmhks3p lmod@7.8 jnt2nnp mpfr@3.1.6 nxhwrg7 readline@7.0
-- linux-ubuntu16.04-x86_64 / gcc@7.2.0 -------------------------
- mwamumj bzip2@1.0.6 5sywztc netlib-lapack@3.6.1 m7rzcmh netlib-scalapack@2.0.2 76z7ehw pkg-config@0.29.2 ahdh5cx py-pyparsing@2.2.0 555u7ea python@2.7.14
- 6bxdr6h cmake@3.9.4 ax6aza6 netlib-scalapack@2.0.2 kvddide openblas@0.2.20 7ncu7zr py-appdirs@1.4.3 7hi7r5j py-scipy@0.19.1 eqos6rz readline@7.0
- 7gxffhv mpich@3.2 c4v5l7j netlib-scalapack@2.0.2 ufw7pdi openmpi@1.10.2 22n5oub py-numpy@1.13.1 cvasi7i py-setuptools@35.0.2 hfmjilk sqlite@3.20.0
- oh6pqty ncurses@6.0 5lb2j5p netlib-scalapack@2.0.2 pxv3dh4 openssl@1.0.2k c37cjmq py-packaging@16.8 3xk5mod py-six@1.10.0 lv5fabl zlib@1.2.11
+ yb2makb autoconf@2.69 riipwi2 libpciaccess@0.13.5 6jgjbyg netlib-scalapack@2.0.2 fdwz5yu perl@5.26.2 cuqnfgf texinfo@6.5
+ qoowd5q automake@1.16.1 g67xpfd libsigsegv@2.11 zxpt252 netlib-scalapack@2.0.2 yoxwmgb pkgconf@1.4.2 t62kozq util-macros@1.19.1
+ mwamumj bzip2@1.0.6 kt2udm6 libtool@2.4.6 67nmj7g netlib-scalapack@2.0.2 wbwtcxf py-numpy@1.15.2 rql5kog xz@5.2.4
+ obqgn2v cmake@3.12.3 47gf5kk libxml2@2.9.8 prgo67d netlib-scalapack@2.0.2 d5n3cph py-scipy@1.1.0 ezuwp4p zlib@1.2.11
+ eauxwi7 diffutils@3.6 wdzvagl m4@1.4.18 rifwktk numactl@2.0.11 5dbwfwn py-setuptools@40.4.3
+ ca4b7zq findutils@4.6.0 vt5xcat mpich@3.2.1 xxoxfh4 openblas@0.3.3 ucmr2mn python@2.7.15
+ zk5lhob gdbm@1.14.1 xcgzqdv ncurses@6.1 do5xfer openmpi@3.1.3 ccruj2i readline@7.0
+ gbyc65s hwloc@1.11.9 fj7nayd netlib-lapack@3.8.0 cvldq3v openssl@1.0.2o 5ltus3a sqlite@3.23.1
==> Do you want to proceed? [y/n] y
==> Regenerating tcl module files
- root@module-file-tutorial:/# module avail
-
- ----------------------------------------------------------------------------- /usr/local/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------------------------------------
- bzip2-1.0.6-gcc-7.2.0-mwamumj netlib-scalapack-2.0.2-gcc-7.2.0-5lb2j5p openmpi-1.10.2-gcc-7.2.0-ufw7pdi py-packaging-16.8-gcc-7.2.0-c37cjmq python-2.7.14-gcc-7.2.0-555u7ea
- cmake-3.9.4-gcc-7.2.0-6bxdr6h netlib-scalapack-2.0.2-gcc-7.2.0-ax6aza6 openssl-1.0.2k-gcc-7.2.0-pxv3dh4 py-pyparsing-2.2.0-gcc-7.2.0-ahdh5cx readline-7.0-gcc-7.2.0-eqos6rz
- mpich-3.2-gcc-7.2.0-7gxffhv netlib-scalapack-2.0.2-gcc-7.2.0-c4v5l7j pkg-config-0.29.2-gcc-7.2.0-76z7ehw py-scipy-0.19.1-gcc-7.2.0-7hi7r5j sqlite-3.20.0-gcc-7.2.0-hfmjilk
- ncurses-6.0-gcc-7.2.0-oh6pqty netlib-scalapack-2.0.2-gcc-7.2.0-m7rzcmh py-appdirs-1.4.3-gcc-7.2.0-7ncu7zr py-setuptools-35.0.2-gcc-7.2.0-cvasi7i zlib-1.2.11-gcc-7.2.0-lv5fabl
- netlib-lapack-3.6.1-gcc-7.2.0-5sywztc openblas-0.2.20-gcc-7.2.0-kvddide py-numpy-1.13.1-gcc-7.2.0-22n5oub py-six-1.10.0-gcc-7.2.0-3xk5mod
+ $ module avail
+
+ ----------------------------------------------- /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------
+ autoconf-2.69-gcc-7.2.0-yb2makb m4-1.4.18-gcc-7.2.0-wdzvagl perl-5.26.2-gcc-7.2.0-fdwz5yu
+ automake-1.16.1-gcc-7.2.0-qoowd5q mpich-3.2.1-gcc-7.2.0-vt5xcat pkgconf-1.4.2-gcc-7.2.0-yoxwmgb
+ bzip2-1.0.6-gcc-7.2.0-mwamumj ncurses-6.1-gcc-7.2.0-xcgzqdv py-numpy-1.15.2-gcc-7.2.0-wbwtcxf
+ cmake-3.12.3-gcc-7.2.0-obqgn2v netlib-lapack-3.8.0-gcc-7.2.0-fj7nayd py-scipy-1.1.0-gcc-7.2.0-d5n3cph
+ diffutils-3.6-gcc-7.2.0-eauxwi7 netlib-scalapack-2.0.2-gcc-7.2.0-67nmj7g py-setuptools-40.4.3-gcc-7.2.0-5dbwfwn
+ findutils-4.6.0-gcc-7.2.0-ca4b7zq netlib-scalapack-2.0.2-gcc-7.2.0-6jgjbyg python-2.7.15-gcc-7.2.0-ucmr2mn
+ gdbm-1.14.1-gcc-7.2.0-zk5lhob netlib-scalapack-2.0.2-gcc-7.2.0-prgo67d readline-7.0-gcc-7.2.0-ccruj2i
+ hwloc-1.11.9-gcc-7.2.0-gbyc65s netlib-scalapack-2.0.2-gcc-7.2.0-zxpt252 sqlite-3.23.1-gcc-7.2.0-5ltus3a
+ libpciaccess-0.13.5-gcc-7.2.0-riipwi2 numactl-2.0.11-gcc-7.2.0-rifwktk texinfo-6.5-gcc-7.2.0-cuqnfgf
+ libsigsegv-2.11-gcc-7.2.0-g67xpfd openblas-0.3.3-gcc-7.2.0-xxoxfh4 util-macros-1.19.1-gcc-7.2.0-t62kozq
+ libtool-2.4.6-gcc-7.2.0-kt2udm6 openmpi-3.1.3-gcc-7.2.0-do5xfer xz-5.2.4-gcc-7.2.0-rql5kog
+ libxml2-2.9.8-gcc-7.2.0-47gf5kk openssl-1.0.2o-gcc-7.2.0-cvldq3v zlib-1.2.11-gcc-7.2.0-ezuwp4p
Use "module spider" to find all possible modules.
Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
-This time it is convenient to pass the option ``--delete-tree`` to the command that
-regenerates the module files to instruct it to delete the existing tree and regenerate
-a new one instead of overwriting the files in the existing directory.
-
If you look closely you'll see though that we went too far in blacklisting modules:
the module for ``gcc@7.2.0`` disappeared as it was bootstrapped with ``gcc@5.4.0``. To specify
exceptions to the blacklist rules you can use ``whitelist``:
@@ -538,7 +505,7 @@ exceptions to the blacklist rules you can use ``whitelist``:
.. code-block:: console
- root@module-file-tutorial:/# spack module refresh --module-type tcl -y
+ $ spack module tcl refresh -y
==> Regenerating tcl module files
@@ -546,14 +513,33 @@ you'll see that now the module for ``gcc@7.2.0`` has reappeared:
.. code-block:: console
- root@module-file-tutorial:/# module avail gcc-7.2.0-gcc-5.4.0-go3z4hb
+ $ module avail gcc-7.2.0-gcc-5.4.0-b7smjjc
- ----------------------------------------------------------------------------- /usr/local/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------------------------------------
- gcc-7.2.0-gcc-5.4.0-go3z4hb
+ -------------------------------------------- /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64 ---------------------------------------------
+ gcc-7.2.0-gcc-5.4.0-b7smjjc
Use "module spider" to find all possible modules.
Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
+An additional possibility that you can leverage to unclutter the environment
+is that of preventing the generation of module files for implicitly installed
+packages. In this case all one needs to do is to add the following line:
+
+.. code-block:: yaml
+ :emphasize-lines: 3
+
+ modules:
+ tcl:
+ blacklist_implicits: true
+ whitelist:
+ - gcc
+ blacklist:
+ - '%gcc@5.4.0'
+ all:
+ filter:
+ environment_blacklist: ['CPATH', 'LIBRARY_PATH']
+
+to ``modules.yaml`` and regenerate the module file tree as above.
^^^^^^^^^^^^^^^^^^^^^^^^^
Change module file naming
@@ -564,8 +550,6 @@ improve their naming scheme.
To reduce the length of the hash or remove it altogether you can
use the ``hash_length`` keyword in the configuration file:
-.. TODO: give reasons to remove hashes if they are not evident enough?
-
.. code-block:: yaml
:emphasize-lines: 3
@@ -584,10 +568,10 @@ If you try to regenerate the module files now you will get an error:
.. code-block:: console
- root@module-file-tutorial:/# spack module refresh --module-type tcl --delete-tree -y
+ $ spack module tcl refresh --delete-tree -y
==> Error: Name clashes detected in module files:
- file: /usr/local/share/spack/modules/linux-ubuntu16.04-x86_64/netlib-scalapack-2.0.2-gcc-7.2.0
+ file: /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64/netlib-scalapack-2.0.2-gcc-7.2.0
spec: netlib-scalapack@2.0.2%gcc@7.2.0 build_type=RelWithDebInfo ~pic+shared arch=linux-ubuntu16.04-x86_64
spec: netlib-scalapack@2.0.2%gcc@7.2.0 build_type=RelWithDebInfo ~pic+shared arch=linux-ubuntu16.04-x86_64
spec: netlib-scalapack@2.0.2%gcc@7.2.0 build_type=RelWithDebInfo ~pic+shared arch=linux-ubuntu16.04-x86_64
@@ -631,17 +615,24 @@ Regenerating module files now we obtain:
.. code-block:: console
- root@module-file-tutorial:/# spack module refresh --module-type tcl --delete-tree -y
+ $ spack module tcl refresh --delete-tree -y
==> Regenerating tcl module files
-
- root@module-file-tutorial:/# module avail
-
- ----------------------------------------------------------------------------- /usr/local/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------------------------------------
- bzip2-1.0.6-gcc-7.2.0 netlib-lapack-3.6.1-gcc-7.2.0 openblas-0.2.20-gcc-7.2.0 py-numpy-1.13.1-gcc-7.2.0-openblas py-six-1.10.0-gcc-7.2.0
- cmake-3.9.4-gcc-7.2.0 netlib-scalapack-2.0.2-gcc-7.2.0-netlib-mpich openmpi-1.10.2-gcc-7.2.0 py-packaging-16.8-gcc-7.2.0 python-2.7.14-gcc-7.2.0
- gcc-7.2.0-gcc-5.4.0 netlib-scalapack-2.0.2-gcc-7.2.0-netlib-openmpi openssl-1.0.2k-gcc-7.2.0 py-pyparsing-2.2.0-gcc-7.2.0 readline-7.0-gcc-7.2.0
- mpich-3.2-gcc-7.2.0 netlib-scalapack-2.0.2-gcc-7.2.0-openblas-mpich pkg-config-0.29.2-gcc-7.2.0 py-scipy-0.19.1-gcc-7.2.0-openblas sqlite-3.20.0-gcc-7.2.0
- ncurses-6.0-gcc-7.2.0 netlib-scalapack-2.0.2-gcc-7.2.0-openblas-openmpi py-appdirs-1.4.3-gcc-7.2.0 py-setuptools-35.0.2-gcc-7.2.0 zlib-1.2.11-gcc-7.2.0
+ $ module avail
+
+ ----------------------------------------------- /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------
+ autoconf-2.69-gcc-7.2.0 m4-1.4.18-gcc-7.2.0 pkgconf-1.4.2-gcc-7.2.0
+ automake-1.16.1-gcc-7.2.0 mpich-3.2.1-gcc-7.2.0 py-numpy-1.15.2-gcc-7.2.0-openblas
+ bzip2-1.0.6-gcc-7.2.0 ncurses-6.1-gcc-7.2.0 py-scipy-1.1.0-gcc-7.2.0-openblas
+ cmake-3.12.3-gcc-7.2.0 netlib-lapack-3.8.0-gcc-7.2.0 py-setuptools-40.4.3-gcc-7.2.0
+ diffutils-3.6-gcc-7.2.0 netlib-scalapack-2.0.2-gcc-7.2.0-netlib-mpich python-2.7.15-gcc-7.2.0
+ findutils-4.6.0-gcc-7.2.0 netlib-scalapack-2.0.2-gcc-7.2.0-netlib-openmpi readline-7.0-gcc-7.2.0
+ gcc-7.2.0-gcc-5.4.0 netlib-scalapack-2.0.2-gcc-7.2.0-openblas-mpich sqlite-3.23.1-gcc-7.2.0
+ gdbm-1.14.1-gcc-7.2.0 netlib-scalapack-2.0.2-gcc-7.2.0-openblas-openmpi texinfo-6.5-gcc-7.2.0
+ hwloc-1.11.9-gcc-7.2.0 numactl-2.0.11-gcc-7.2.0 util-macros-1.19.1-gcc-7.2.0
+ libpciaccess-0.13.5-gcc-7.2.0 openblas-0.3.3-gcc-7.2.0 xz-5.2.4-gcc-7.2.0
+ libsigsegv-2.11-gcc-7.2.0 openmpi-3.1.3-gcc-7.2.0 zlib-1.2.11-gcc-7.2.0
+ libtool-2.4.6-gcc-7.2.0 openssl-1.0.2o-gcc-7.2.0
+ libxml2-2.9.8-gcc-7.2.0 perl-5.26.2-gcc-7.2.0
Use "module spider" to find all possible modules.
Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
@@ -677,16 +668,24 @@ The final result should look like:
.. code-block:: console
- root@module-file-tutorial:/# spack module refresh --module-type tcl --delete-tree -y
+ $ spack module tcl refresh --delete-tree -y
==> Regenerating tcl module files
- root@module-file-tutorial:/# module avail
-
- ----------------------------------------------------------------------------- /usr/local/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------------------------------------
- bzip2/1.0.6-gcc-7.2.0 netlib-lapack/3.6.1-gcc-7.2.0 openblas/0.2.20-gcc-7.2.0 py-numpy/1.13.1-gcc-7.2.0-openblas py-six/1.10.0-gcc-7.2.0
- cmake/3.9.4-gcc-7.2.0 netlib-scalapack/2.0.2-gcc-7.2.0-netlib-mpich openmpi/1.10.2-gcc-7.2.0 py-packaging/16.8-gcc-7.2.0 python/2.7.14-gcc-7.2.0
- gcc/7.2.0-gcc-5.4.0 netlib-scalapack/2.0.2-gcc-7.2.0-netlib-openmpi openssl/1.0.2k-gcc-7.2.0 py-pyparsing/2.2.0-gcc-7.2.0 readline/7.0-gcc-7.2.0
- mpich/3.2-gcc-7.2.0 netlib-scalapack/2.0.2-gcc-7.2.0-openblas-mpich pkg-config/0.29.2-gcc-7.2.0 py-scipy/0.19.1-gcc-7.2.0-openblas sqlite/3.20.0-gcc-7.2.0
- ncurses/6.0-gcc-7.2.0 netlib-scalapack/2.0.2-gcc-7.2.0-openblas-openmpi (D) py-appdirs/1.4.3-gcc-7.2.0 py-setuptools/35.0.2-gcc-7.2.0 zlib/1.2.11-gcc-7.2.0
+ $ module avail
+
+ ----------------------------------------------- /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------
+ autoconf/2.69-gcc-7.2.0 m4/1.4.18-gcc-7.2.0 pkgconf/1.4.2-gcc-7.2.0
+ automake/1.16.1-gcc-7.2.0 mpich/3.2.1-gcc-7.2.0 py-numpy/1.15.2-gcc-7.2.0-openblas
+ bzip2/1.0.6-gcc-7.2.0 ncurses/6.1-gcc-7.2.0 py-scipy/1.1.0-gcc-7.2.0-openblas
+ cmake/3.12.3-gcc-7.2.0 netlib-lapack/3.8.0-gcc-7.2.0 py-setuptools/40.4.3-gcc-7.2.0
+ diffutils/3.6-gcc-7.2.0 netlib-scalapack/2.0.2-gcc-7.2.0-netlib-mpich python/2.7.15-gcc-7.2.0
+ findutils/4.6.0-gcc-7.2.0 netlib-scalapack/2.0.2-gcc-7.2.0-netlib-openmpi readline/7.0-gcc-7.2.0
+ gcc/7.2.0-gcc-5.4.0 netlib-scalapack/2.0.2-gcc-7.2.0-openblas-mpich sqlite/3.23.1-gcc-7.2.0
+ gdbm/1.14.1-gcc-7.2.0 netlib-scalapack/2.0.2-gcc-7.2.0-openblas-openmpi (D) texinfo/6.5-gcc-7.2.0
+ hwloc/1.11.9-gcc-7.2.0 numactl/2.0.11-gcc-7.2.0 util-macros/1.19.1-gcc-7.2.0
+ libpciaccess/0.13.5-gcc-7.2.0 openblas/0.3.3-gcc-7.2.0 xz/5.2.4-gcc-7.2.0
+ libsigsegv/2.11-gcc-7.2.0 openmpi/3.1.3-gcc-7.2.0 zlib/1.2.11-gcc-7.2.0
+ libtool/2.4.6-gcc-7.2.0 openssl/1.0.2o-gcc-7.2.0
+ libxml2/2.9.8-gcc-7.2.0 perl/5.26.2-gcc-7.2.0
Where:
D: Default Module
@@ -748,21 +747,26 @@ Regenerating the module files results in something like:
.. code-block:: console
:emphasize-lines: 15
- root@module-file-tutorial:/# spack module refresh -y --module-type tcl
+ $ spack module tcl refresh -y
==> Regenerating tcl module files
- root@module-file-tutorial:/# module show gcc
- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- /usr/local/share/spack/modules/linux-ubuntu16.04-x86_64/gcc/7.2.0-gcc-5.4.0:
- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ $ module show gcc
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64/gcc/7.2.0-gcc-5.4.0:
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------
whatis("The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go, as well as libraries for these languages. ")
conflict("gcc")
- prepend_path("PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/bin")
- prepend_path("MANPATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/share/man")
- prepend_path("LD_LIBRARY_PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/lib")
- prepend_path("LD_LIBRARY_PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/lib64")
- prepend_path("CMAKE_PREFIX_PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/")
- setenv("GCC_ROOT","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd")
+ prepend_path("PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin")
+ prepend_path("MANPATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/share/man")
+ prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib")
+ prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib64")
+ prepend_path("CMAKE_PREFIX_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/")
+ setenv("CC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gcc")
+ setenv("CXX","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/g++")
+ setenv("FC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
+ setenv("F77","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
+ setenv("F90","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
+ setenv("GCC_ROOT","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs")
help([[The GNU Compiler Collection includes front ends for C, C++, Objective-C,
Fortran, Ada, and Go, as well as libraries for these languages.
]])
@@ -819,54 +823,60 @@ This time we will be more selective and regenerate only the ``gcc`` and
.. code-block:: console
- root@module-file-tutorial:/# spack module refresh -y --module-type tcl gcc
+ $ spack module tcl refresh -y gcc
==> Regenerating tcl module files
- root@module-file-tutorial:/# spack module refresh -y --module-type tcl openmpi
+ $ spack module tcl refresh -y openmpi
==> Regenerating tcl module files
- root@module-file-tutorial:/# module show gcc
- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- /usr/local/share/spack/modules/linux-ubuntu16.04-x86_64/gcc/7.2.0-gcc-5.4.0:
- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ $ module show gcc
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64/gcc/7.2.0-gcc-5.4.0:
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------
whatis("The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, and Go, as well as libraries for these languages. ")
conflict("gcc")
- prepend_path("PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/bin")
- prepend_path("MANPATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/share/man")
- prepend_path("LD_LIBRARY_PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/lib")
- prepend_path("LD_LIBRARY_PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/lib64")
- prepend_path("CMAKE_PREFIX_PATH","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd/")
- setenv("GCC_ROOT","/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-go3z4hbsa6wycoaedr3fforx5qnazdhd")
+ prepend_path("PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin")
+ prepend_path("MANPATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/share/man")
+ prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib")
+ prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/lib64")
+ prepend_path("CMAKE_PREFIX_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/")
+ setenv("CC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gcc")
+ setenv("CXX","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/g++")
+ setenv("FC","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
+ setenv("F77","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
+ setenv("F90","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs/bin/gfortran")
+ setenv("GCC_ROOT","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-5.4.0/gcc-7.2.0-b7smjjcsmwe5u5fcsvjmonlhlzzctnfs")
setenv("CC","gcc")
- setenv("CXX","g++")
+ setenv("CXX","g++'")
setenv("FC","gfortran")
- setenv("F90","gfortran")
setenv("F77","gfortran")
+ setenv("F90","gfortran")
help([[The GNU Compiler Collection includes front ends for C, C++, Objective-C,
Fortran, Ada, and Go, as well as libraries for these languages.
]])
- root@module-file-tutorial:/# module show openmpi
- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- /usr/local/share/spack/modules/linux-ubuntu16.04-x86_64/openmpi/1.10.2-gcc-7.2.0:
- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- whatis("The Open MPI Project is an open source Message Passing Interface implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able t
- o combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software
- vendors, application developers and computer science researchers. ")
+ $ module show openmpi
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64/openmpi/3.1.3-gcc-7.2.0:
+ -------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ whatis("An open source Message Passing Interface implementation. ")
conflict("openmpi")
- prepend_path("MANPATH","/usr/share/man")
- prepend_path("ACLOCAL_PATH","/usr/share/aclocal")
- prepend_path("PKG_CONFIG_PATH","/usr/lib/pkgconfig")
- setenv("OPENMPI_ROOT","/usr")
+ prepend_path("PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/openmpi-3.1.3-do5xfer2whhk7gc26atgs3ozr3ljbvs4/bin")
+ prepend_path("MANPATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/openmpi-3.1.3-do5xfer2whhk7gc26atgs3ozr3ljbvs4/share/man")
+ prepend_path("LD_LIBRARY_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/openmpi-3.1.3-do5xfer2whhk7gc26atgs3ozr3ljbvs4/lib")
+ prepend_path("PKG_CONFIG_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/openmpi-3.1.3-do5xfer2whhk7gc26atgs3ozr3ljbvs4/lib/pkgconfig")
+ prepend_path("CMAKE_PREFIX_PATH","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/openmpi-3.1.3-do5xfer2whhk7gc26atgs3ozr3ljbvs4/")
+ setenv("OPENMPI_ROOT","/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/openmpi-3.1.3-do5xfer2whhk7gc26atgs3ozr3ljbvs4")
setenv("SLURM_MPI_TYPE","pmi2")
setenv("OMPI_MCA_btl_openib_warn_default_gid_prefix","0")
- help([[The Open MPI Project is an open source Message Passing Interface
- implementation that is developed and maintained by a consortium of
- academic, research, and industry partners. Open MPI is therefore able to
- combine the expertise, technologies, and resources from all across the
- High Performance Computing community in order to build the best MPI
- library available. Open MPI offers advantages for system and software
- vendors, application developers and computer science researchers.
+ help([[An open source Message Passing Interface implementation. The Open MPI
+ Project is an open source Message Passing Interface implementation that
+ is developed and maintained by a consortium of academic, research, and
+ industry partners. Open MPI is therefore able to combine the expertise,
+ technologies, and resources from all across the High Performance
+ Computing community in order to build the best MPI library available.
+ Open MPI offers advantages for system and software vendors, application
+ developers and computer science researchers.
]])
@@ -926,7 +936,7 @@ and regenerating the module files for every package that depends on ``python``:
.. code-block:: console
- root@module-file-tutorial:/# spack module refresh -y --module-type tcl ^python
+ root@module-file-tutorial:/# spack module tcl refresh -y ^python
==> Regenerating tcl module files
Now the ``py-scipy`` module will be:
@@ -934,47 +944,47 @@ Now the ``py-scipy`` module will be:
.. code-block:: tcl
#%Module1.0
- ## Module file created by spack (https://github.com/spack/spack) on 2017-10-07 15:02:14.974937
+ ## Module file created by spack (https://github.com/spack/spack) on 2018-11-11 22:10:48.834221
##
- ## py-scipy@0.19.1%gcc@7.2.0 arch=linux-ubuntu16.04-x86_64 /7hi7r5j
+ ## py-scipy@1.1.0%gcc@7.2.0 arch=linux-ubuntu16.04-x86_64 /d5n3cph
##
module-whatis "SciPy (pronounced 'Sigh Pie') is a Scientific Library for Python. It provides many user-friendly and efficient numerical routines such as routines for numerical integration and optimization."
proc ModulesHelp { } {
- puts stderr "SciPy (pronounced 'Sigh Pie') is a Scientific Library for Python. It"
+ puts stderr "SciPy (pronounced "Sigh Pie") is a Scientific Library for Python. It"
puts stderr "provides many user-friendly and efficient numerical routines such as"
puts stderr "routines for numerical integration and optimization."
}
- if ![ is-loaded python/2.7.14-gcc-7.2.0 ] {
- puts stderr "Autoloading python/2.7.14-gcc-7.2.0"
- module load python/2.7.14-gcc-7.2.0
+ if { [ module-info mode load ] && ![ is-loaded python/2.7.15-gcc-7.2.0 ] } {
+ puts stderr "Autoloading python/2.7.15-gcc-7.2.0"
+ module load python/2.7.15-gcc-7.2.0
}
- if ![ is-loaded openblas/0.2.20-gcc-7.2.0 ] {
- puts stderr "Autoloading openblas/0.2.20-gcc-7.2.0"
- module load openblas/0.2.20-gcc-7.2.0
+ if { [ module-info mode load ] && ![ is-loaded openblas/0.3.3-gcc-7.2.0 ] } {
+ puts stderr "Autoloading openblas/0.3.3-gcc-7.2.0"
+ module load openblas/0.3.3-gcc-7.2.0
}
- if ![ is-loaded py-numpy/1.13.1-gcc-7.2.0-openblas ] {
- puts stderr "Autoloading py-numpy/1.13.1-gcc-7.2.0-openblas"
- module load py-numpy/1.13.1-gcc-7.2.0-openblas
+ if { [ module-info mode load ] && ![ is-loaded py-numpy/1.15.2-gcc-7.2.0-openblas ] } {
+ puts stderr "Autoloading py-numpy/1.15.2-gcc-7.2.0-openblas"
+ module load py-numpy/1.15.2-gcc-7.2.0-openblas
}
conflict py-scipy
- prepend-path LD_LIBRARY_PATH "/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/py-scipy-0.19.1-7hi7r5jri7bmohh4oontvfxo7rgj4hef/lib"
- prepend-path CMAKE_PREFIX_PATH "/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/py-scipy-0.19.1-7hi7r5jri7bmohh4oontvfxo7rgj4hef/"
- prepend-path PYTHONPATH "/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/py-scipy-0.19.1-7hi7r5jri7bmohh4oontvfxo7rgj4hef/lib/python2.7/site-packages"
- setenv PY_SCIPY_ROOT "/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/py-scipy-0.19.1-7hi7r5jri7bmohh4oontvfxo7rgj4hef"
+ prepend-path LD_LIBRARY_PATH "/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/py-scipy-1.1.0-d5n3cphk2lx2v74ypwb6h7tna7vvgdyn/lib"
+ prepend-path CMAKE_PREFIX_PATH "/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/py-scipy-1.1.0-d5n3cphk2lx2v74ypwb6h7tna7vvgdyn/"
+ prepend-path PYTHONPATH "/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/py-scipy-1.1.0-d5n3cphk2lx2v74ypwb6h7tna7vvgdyn/lib/python2.7/site-packages"
+ setenv PY_SCIPY_ROOT "/home/spack1/spack/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/py-scipy-1.1.0-d5n3cphk2lx2v74ypwb6h7tna7vvgdyn"
and will contain code to autoload all the dependencies:
.. code-block:: console
- root@module-file-tutorial:/# module load py-scipy
- Autoloading python/2.7.14-gcc-7.2.0
- Autoloading openblas/0.2.20-gcc-7.2.0
- Autoloading py-numpy/1.13.1-gcc-7.2.0-openblas
+ $ module load py-scipy
+ Autoloading python/2.7.15-gcc-7.2.0
+ Autoloading openblas/0.3.3-gcc-7.2.0
+ Autoloading py-numpy/1.15.2-gcc-7.2.0-openblas
In case messages are unwanted during the autoload procedure, it will be
sufficient to omit the line setting ``verbose: True`` in the configuration file above.
@@ -990,16 +1000,25 @@ all the software is visible at the same time:
.. code-block:: console
- root@module-file-tutorial:/# module avail
-
- ----------------------------------------------------------------------------- /usr/local/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------------------------------------
- bzip2/1.0.6-gcc-7.2.0 netlib-lapack/3.6.1-gcc-7.2.0 openblas/0.2.20-gcc-7.2.0 py-numpy/1.13.1-gcc-7.2.0-openblas py-six/1.10.0-gcc-7.2.0
- cmake/3.9.4-gcc-7.2.0 netlib-scalapack/2.0.2-gcc-7.2.0-netlib-mpich openmpi/1.10.2-gcc-7.2.0 py-packaging/16.8-gcc-7.2.0 python/2.7.14-gcc-7.2.0
- gcc/7.2.0-gcc-5.4.0 netlib-scalapack/2.0.2-gcc-7.2.0-netlib-openmpi openssl/1.0.2k-gcc-7.2.0 py-pyparsing/2.2.0-gcc-7.2.0 readline/7.0-gcc-7.2.0
- mpich/3.2-gcc-7.2.0 netlib-scalapack/2.0.2-gcc-7.2.0-openblas-mpich pkg-config/0.29.2-gcc-7.2.0 py-scipy/0.19.1-gcc-7.2.0-openblas sqlite/3.20.0-gcc-7.2.0
- ncurses/6.0-gcc-7.2.0 netlib-scalapack/2.0.2-gcc-7.2.0-openblas-openmpi (D) py-appdirs/1.4.3-gcc-7.2.0 py-setuptools/35.0.2-gcc-7.2.0 zlib/1.2.11-gcc-7.2.0
+ $ module avail
+
+ ----------------------------------------------- /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64 -----------------------------------------------
+ autoconf/2.69-gcc-7.2.0 m4/1.4.18-gcc-7.2.0 pkgconf/1.4.2-gcc-7.2.0
+ automake/1.16.1-gcc-7.2.0 mpich/3.2.1-gcc-7.2.0 py-numpy/1.15.2-gcc-7.2.0-openblas (L)
+ bzip2/1.0.6-gcc-7.2.0 ncurses/6.1-gcc-7.2.0 py-scipy/1.1.0-gcc-7.2.0-openblas (L)
+ cmake/3.12.3-gcc-7.2.0 netlib-lapack/3.8.0-gcc-7.2.0 py-setuptools/40.4.3-gcc-7.2.0
+ diffutils/3.6-gcc-7.2.0 netlib-scalapack/2.0.2-gcc-7.2.0-netlib-mpich python/2.7.15-gcc-7.2.0 (L)
+ findutils/4.6.0-gcc-7.2.0 netlib-scalapack/2.0.2-gcc-7.2.0-netlib-openmpi readline/7.0-gcc-7.2.0
+ gcc/7.2.0-gcc-5.4.0 netlib-scalapack/2.0.2-gcc-7.2.0-openblas-mpich sqlite/3.23.1-gcc-7.2.0
+ gdbm/1.14.1-gcc-7.2.0 netlib-scalapack/2.0.2-gcc-7.2.0-openblas-openmpi (D) texinfo/6.5-gcc-7.2.0
+ hwloc/1.11.9-gcc-7.2.0 numactl/2.0.11-gcc-7.2.0 util-macros/1.19.1-gcc-7.2.0
+ libpciaccess/0.13.5-gcc-7.2.0 openblas/0.3.3-gcc-7.2.0 (L) xz/5.2.4-gcc-7.2.0
+ libsigsegv/2.11-gcc-7.2.0 openmpi/3.1.3-gcc-7.2.0 zlib/1.2.11-gcc-7.2.0
+ libtool/2.4.6-gcc-7.2.0 openssl/1.0.2o-gcc-7.2.0
+ libxml2/2.9.8-gcc-7.2.0 perl/5.26.2-gcc-7.2.0
Where:
+ L: Module is loaded
D: Default Module
Use "module spider" to find all possible modules.
@@ -1010,11 +1029,12 @@ that nothing prevents users from loading incompatible sets of modules:
.. code-block:: console
- root@module-file-tutorial:/# module load netlib-lapack/3.6.1-gcc-7.2.0 openblas/0.2.20-gcc-7.2.0
- root@module-file-tutorial:/# module list
+ $ module purge
+ $ module load netlib-lapack/3.8.0-gcc-7.2.0 openblas/0.3.3-gcc-7.2.0
+ $ module list
Currently Loaded Modules:
- 1) netlib-lapack/3.6.1-gcc-7.2.0 2) openblas/0.2.20-gcc-7.2.0
+ 1) netlib-lapack/3.8.0-gcc-7.2.0 2) openblas/0.3.3-gcc-7.2.0
Even if ``conflicts`` directives are carefully placed in module files, they:
@@ -1102,23 +1122,24 @@ If we now regenerate the module files:
.. code-block:: console
- root@module-file-tutorial:/# spack module refresh --module-type lmod --delete-tree -y
+ $ spack module lmod refresh --delete-tree -y
==> Regenerating lmod module files
and update ``MODULEPATH`` to point to the ``Core``:
.. code-block:: console
- root@module-file-tutorial:/# module unuse /usr/local/share/spack/modules/linux-ubuntu16.04-x86_64
- root@module-file-tutorial:/# module use /usr/local/share/spack/lmod/linux-ubuntu16.04-x86_64/Core
+ $ module purge
+ $ module unuse /home/spack1/spack/share/spack/modules/linux-ubuntu16.04-x86_64
+ $ module use /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/Core
asking for the available modules will return:
.. code-block:: console
- root@module-file-tutorial:/# module avail
+ $ module avail
- ---------------------------------------------------------------------------- /usr/local/share/spack/lmod/linux-ubuntu16.04-x86_64/Core ----------------------------------------------------------------------------
+ ----------------------------------------------------------- share/spack/lmod/linux-ubuntu16.04-x86_64/Core ------------------------------------------------------------
gcc/7.2.0
Use "module spider" to find all possible modules.
@@ -1129,14 +1150,17 @@ the ``Compiler`` part of the hierarchy:
.. code-block:: console
- root@module-file-tutorial:/# module load gcc
- root@module-file-tutorial:/# module avail
+ $ module load gcc
+ $ module avail
- ------------------------------------------------------------------------- /usr/local/share/spack/lmod/linux-ubuntu16.04-x86_64/gcc/7.2.0 --------------------------------------------------------------------------
- bzip2/1.0.6 mpich/3.2 netlib-lapack/3.6.1 openmpi/1.10.2 pkg-config/0.29.2 py-numpy/1.13.1-openblas py-pyparsing/2.2.0 py-setuptools/35.0.2 python/2.7.14 sqlite/3.20.0
- cmake/3.9.4 ncurses/6.0 openblas/0.2.20 openssl/1.0.2k py-appdirs/1.4.3 py-packaging/16.8 py-scipy/0.19.1-openblas py-six/1.10.0 readline/7.0 zlib/1.2.11
+ ------------------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/gcc/7.2.0 --------------------------------------------
+ autoconf/2.69 findutils/4.6.0 libtool/2.4.6 netlib-lapack/3.8.0 perl/5.26.2 python/2.7.15 xz/5.2.4
+ automake/1.16.1 gdbm/1.14.1 libxml2/2.9.8 numactl/2.0.11 pkgconf/1.4.2 readline/7.0 zlib/1.2.11
+ bzip2/1.0.6 hwloc/1.11.9 m4/1.4.18 openblas/0.3.3 py-numpy/1.15.2-openblas sqlite/3.23.1
+ cmake/3.12.3 libpciaccess/0.13.5 mpich/3.2.1 openmpi/3.1.3 py-scipy/1.1.0-openblas texinfo/6.5
+ diffutils/3.6 libsigsegv/2.11 ncurses/6.1 openssl/1.0.2o py-setuptools/40.4.3 util-macros/1.19.1
- ---------------------------------------------------------------------------- /usr/local/share/spack/lmod/linux-ubuntu16.04-x86_64/Core ----------------------------------------------------------------------------
+ ----------------------------------------------------------- share/spack/lmod/linux-ubuntu16.04-x86_64/Core ------------------------------------------------------------
gcc/7.2.0 (L)
Where:
@@ -1150,17 +1174,20 @@ either ``mpich`` or ``openmpi``. Let's start by loading ``mpich``:
.. code-block:: console
- root@module-file-tutorial:/# module load mpich
- root@module-file-tutorial:/# module avail
+ $ module load mpich
+ $ module avail
- ---------------------------------------------------------------- /usr/local/share/spack/lmod/linux-ubuntu16.04-x86_64/mpich/3.2-7gxffhv/gcc/7.2.0 -----------------------------------------------------------------
+ --------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/mpich/3.2.1-vt5xcat/gcc/7.2.0 ----------------------------------
netlib-scalapack/2.0.2-netlib netlib-scalapack/2.0.2-openblas (D)
- ------------------------------------------------------------------------- /usr/local/share/spack/lmod/linux-ubuntu16.04-x86_64/gcc/7.2.0 --------------------------------------------------------------------------
- bzip2/1.0.6 mpich/3.2 (L) netlib-lapack/3.6.1 openmpi/1.10.2 pkg-config/0.29.2 py-numpy/1.13.1-openblas py-pyparsing/2.2.0 py-setuptools/35.0.2 python/2.7.14 sqlite/3.20.0
- cmake/3.9.4 ncurses/6.0 openblas/0.2.20 openssl/1.0.2k py-appdirs/1.4.3 py-packaging/16.8 py-scipy/0.19.1-openblas py-six/1.10.0 readline/7.0 zlib/1.2.11
+ ------------------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/gcc/7.2.0 --------------------------------------------
+ autoconf/2.69 findutils/4.6.0 libtool/2.4.6 netlib-lapack/3.8.0 perl/5.26.2 python/2.7.15 xz/5.2.4
+ automake/1.16.1 gdbm/1.14.1 libxml2/2.9.8 numactl/2.0.11 pkgconf/1.4.2 readline/7.0 zlib/1.2.11
+ bzip2/1.0.6 hwloc/1.11.9 m4/1.4.18 openblas/0.3.3 py-numpy/1.15.2-openblas sqlite/3.23.1
+ cmake/3.12.3 libpciaccess/0.13.5 mpich/3.2.1 (L) openmpi/3.1.3 py-scipy/1.1.0-openblas texinfo/6.5
+ diffutils/3.6 libsigsegv/2.11 ncurses/6.1 openssl/1.0.2o py-setuptools/40.4.3 util-macros/1.19.1
- ---------------------------------------------------------------------------- /usr/local/share/spack/lmod/linux-ubuntu16.04-x86_64/Core ----------------------------------------------------------------------------
+ ----------------------------------------------------------- share/spack/lmod/linux-ubuntu16.04-x86_64/Core ------------------------------------------------------------
gcc/7.2.0 (L)
Where:
@@ -1175,16 +1202,17 @@ either ``mpich`` or ``openmpi``. Let's start by loading ``mpich``:
root@module-file-tutorial:/# module list
Currently Loaded Modules:
- 1) gcc/7.2.0 2) mpich/3.2 3) openblas/0.2.20 4) netlib-scalapack/2.0.2-openblas
+ 1) gcc/7.2.0 2) mpich/3.2.1 3) openblas/0.3.3 4) netlib-scalapack/2.0.2-openblas
At this point we can showcase the improved consistency that a hierarchical layout provides
over a non-hierarchical one:
.. code-block:: console
- root@module-file-tutorial:/# module load openmpi
+ $ module load openmpi
+
+ Lmod is automatically replacing "mpich/3.2.1" with "openmpi/3.1.3".
- Lmod is automatically replacing "mpich/3.2" with "openmpi/1.10.2".
Due to MODULEPATH changes, the following have been reloaded:
1) netlib-scalapack/2.0.2-openblas
@@ -1213,10 +1241,9 @@ for ``LAPACK`` implementations:
root@module-file-tutorial:/# module list
Currently Loaded Modules:
- 1) gcc/7.2.0 2) openblas/0.2.20 3) openmpi/1.10.2 4) netlib-scalapack/2.0.2-openblas
+ 1) gcc/7.2.0 2) openblas/0.3.3 3) openmpi/3.1.3 4) netlib-scalapack/2.0.2-openblas
root@module-file-tutorial:/# module load netlib-scalapack/2.0.2-netlib
- Autoloading netlib-lapack/3.6.1
The following have been reloaded with a version change:
1) netlib-scalapack/2.0.2-openblas => netlib-scalapack/2.0.2-netlib
@@ -1224,7 +1251,7 @@ for ``LAPACK`` implementations:
root@module-file-tutorial:/# module list
Currently Loaded Modules:
- 1) gcc/7.2.0 2) openblas/0.2.20 3) openmpi/1.10.2 4) netlib-lapack/3.6.1 5) netlib-scalapack/2.0.2-netlib
+ 1) gcc/7.2.0 2) openblas/0.3.3 3) openmpi/3.1.3 4) netlib-scalapack/2.0.2-netlib
Hierarchies that are deeper than ``Core``/``Compiler``/``MPI`` are
probably still considered "unusual" or "impractical" at many sites, mainly because
@@ -1266,7 +1293,6 @@ Coming back to our example, let's add ``lapack`` to the hierarchy and remove any
- gcc
blacklist:
- '%gcc@5.4.0'
- - readline
all:
filter:
environment_blacklist: ['CPATH', 'LIBRARY_PATH']
@@ -1293,25 +1319,28 @@ After module files have been regenerated as usual:
root@module-file-tutorial:/# module purge
- root@module-file-tutorial:/# spack module refresh --delete-tree -y -m lmod
+ root@module-file-tutorial:/# spack module lmod refresh --delete-tree -y
==> Regenerating lmod module files
we can see that now we have additional components in the hierarchy:
.. code-block:: console
- root@module-file-tutorial:/# module load gcc
- root@module-file-tutorial:/# module load openblas
- root@module-file-tutorial:/# module avail
+ $ module load gcc
+ $ module load openblas
+ $ module avail
- ------------------------------------------------------------- /usr/local/share/spack/lmod/linux-ubuntu16.04-x86_64/openblas/0.2.20-kvddide/gcc/7.2.0 --------------------------------------------------------------
- py-numpy/1.13.1 py-scipy/0.19.1
+ -------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/openblas/0.3.3-xxoxfh4/gcc/7.2.0 --------------------------------
+ py-numpy/1.15.2 py-scipy/1.1.0
- ------------------------------------------------------------------------- /usr/local/share/spack/lmod/linux-ubuntu16.04-x86_64/gcc/7.2.0 --------------------------------------------------------------------------
- bzip2/1.0.6 mpich/3.2 netlib-lapack/3.6.1 openmpi/1.10.2 pkg-config/0.29.2 py-packaging/16.8 py-setuptools/35.0.2 python/2.7.14 sqlite/3.20.0
- cmake/3.9.4 ncurses/6.0 openblas/0.2.20 (L) openssl/1.0.2k py-appdirs/1.4.3 py-pyparsing/2.2.0 py-six/1.10.0 readline/7.0 zlib/1.2.11
+ ------------------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/gcc/7.2.0 --------------------------------------------
+ autoconf/2.69 findutils/4.6.0 libtool/2.4.6 netlib-lapack/3.8.0 perl/5.26.2 sqlite/3.23.1
+ automake/1.16.1 gdbm/1.14.1 libxml2/2.9.8 numactl/2.0.11 pkgconf/1.4.2 texinfo/6.5
+ bzip2/1.0.6 hwloc/1.11.9 m4/1.4.18 openblas/0.3.3 (L) py-setuptools/40.4.3 util-macros/1.19.1
+ cmake/3.12.3 libpciaccess/0.13.5 mpich/3.2.1 openmpi/3.1.3 python/2.7.15 xz/5.2.4
+ diffutils/3.6 libsigsegv/2.11 ncurses/6.1 openssl/1.0.2o readline/7.0 zlib/1.2.11
- ---------------------------------------------------------------------------- /usr/local/share/spack/lmod/linux-ubuntu16.04-x86_64/Core ----------------------------------------------------------------------------
+ ----------------------------------------------------------- share/spack/lmod/linux-ubuntu16.04-x86_64/Core ------------------------------------------------------------
gcc/7.2.0 (L)
Where:
@@ -1321,20 +1350,23 @@ we can see that now we have additional components in the hierarchy:
Use "module keyword key1 key2 ..." to search for all possible modules matching any of the "keys".
- root@module-file-tutorial:/# module load openmpi
- root@module-file-tutorial:/# module avail
+ $ module load openmpi
+ $ module avail
- -------------------------------------------------- /usr/local/share/spack/lmod/linux-ubuntu16.04-x86_64/openmpi/1.10.2-ufw7pdi/openblas/0.2.20-kvddide/gcc/7.2.0 --------------------------------------------------
+ --------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/openmpi/3.1.3-do5xfer/openblas/0.3.3-xxoxfh4/gcc/7.2.0 ---------------------
netlib-scalapack/2.0.2
- ------------------------------------------------------------- /usr/local/share/spack/lmod/linux-ubuntu16.04-x86_64/openblas/0.2.20-kvddide/gcc/7.2.0 --------------------------------------------------------------
- py-numpy/1.13.1 py-scipy/0.19.1
+ -------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/openblas/0.3.3-xxoxfh4/gcc/7.2.0 --------------------------------
+ py-numpy/1.15.2 py-scipy/1.1.0
- ------------------------------------------------------------------------- /usr/local/share/spack/lmod/linux-ubuntu16.04-x86_64/gcc/7.2.0 --------------------------------------------------------------------------
- bzip2/1.0.6 mpich/3.2 netlib-lapack/3.6.1 openmpi/1.10.2 (L) pkg-config/0.29.2 py-packaging/16.8 py-setuptools/35.0.2 python/2.7.14 sqlite/3.20.0
- cmake/3.9.4 ncurses/6.0 openblas/0.2.20 (L) openssl/1.0.2k py-appdirs/1.4.3 py-pyparsing/2.2.0 py-six/1.10.0 readline/7.0 zlib/1.2.11
+ ------------------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/gcc/7.2.0 --------------------------------------------
+ autoconf/2.69 findutils/4.6.0 libtool/2.4.6 netlib-lapack/3.8.0 perl/5.26.2 sqlite/3.23.1
+ automake/1.16.1 gdbm/1.14.1 libxml2/2.9.8 numactl/2.0.11 pkgconf/1.4.2 texinfo/6.5
+ bzip2/1.0.6 hwloc/1.11.9 m4/1.4.18 openblas/0.3.3 (L) py-setuptools/40.4.3 util-macros/1.19.1
+ cmake/3.12.3 libpciaccess/0.13.5 mpich/3.2.1 openmpi/3.1.3 (L) python/2.7.15 xz/5.2.4
+ diffutils/3.6 libsigsegv/2.11 ncurses/6.1 openssl/1.0.2o readline/7.0 zlib/1.2.11
- ---------------------------------------------------------------------------- /usr/local/share/spack/lmod/linux-ubuntu16.04-x86_64/Core ----------------------------------------------------------------------------
+ ---------------------------------------------- /home/spack1/spack/share/spack/lmod/linux-ubuntu16.04-x86_64/Core ----------------------------------------------
gcc/7.2.0 (L)
Where:
@@ -1347,18 +1379,18 @@ Both ``MPI`` and ``LAPACK`` providers will now benefit from the same safety feat
.. code-block:: console
- root@module-file-tutorial:/# module load py-numpy netlib-scalapack
- root@module-file-tutorial:/# module load mpich
+ $ module load py-numpy netlib-scalapack
+ $ module load mpich
- Lmod is automatically replacing "openmpi/1.10.2" with "mpich/3.2".
+ Lmod is automatically replacing "openmpi/3.1.3" with "mpich/3.2.1".
Due to MODULEPATH changes, the following have been reloaded:
1) netlib-scalapack/2.0.2
- root@module-file-tutorial:/# module load netlib-lapack
+ $ module load netlib-lapack
- Lmod is automatically replacing "openblas/0.2.20" with "netlib-lapack/3.6.1".
+ Lmod is automatically replacing "openblas/0.3.3" with "netlib-lapack/3.8.0".
Inactive Modules:
@@ -1385,11 +1417,12 @@ Module file templates
^^^^^^^^^^^^^^^^^^^^^
The templates that Spack uses to generate module files are stored in the
-``templates/module`` directory, and they all share the same common structure.
-Usually, they start with a header that identifies the type of
-module being generated. In the case of hierarchical module files it's:
+``share/spack/templates/module`` directory within the Spack prefix, and
+they all share the same common structure. Usually, they start with a
+header that identifies the type of module being generated. In the case of
+hierarchical module files it's:
-.. literalinclude:: ../../../templates/modules/modulefile.lua
+.. literalinclude:: ../../../share/spack/templates/modules/modulefile.lua
:language: jinja
:lines: 1-6
@@ -1403,7 +1436,7 @@ that can be overridden or extended by users, if need be.
, delimited by ``{% ... %}``,
are also permitted in the template language:
-.. literalinclude:: ../../../templates/modules/modulefile.lua
+.. literalinclude:: ../../../share/spack/templates/modules/modulefile.lua
:language: jinja
:lines: 73-88
@@ -1522,7 +1555,7 @@ If we regenerate the module files one last time:
.. code-block:: console
- root@module-file-tutorial:/# spack module refresh -y -m lmod netlib-scalapack
+ root@module-file-tutorial:/# spack module lmod refresh -y netlib-scalapack
==> Regenerating lmod module files
we'll find the following at the end of each ``netlib-scalapack`` module file:
@@ -1530,7 +1563,7 @@ we'll find the following at the end of each ``netlib-scalapack`` module file:
.. code-block:: lua
-- Access is granted only to specific groups
- if not isDir("/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/netlib-scalapack-2.0.2-ax6aza6vyepceyr3fihewp7rbr2vp7ym") then
+ if not isDir("/usr/local/opt/spack/linux-ubuntu16.04-x86_64/gcc-7.2.0/netlib-scalapack-2.0.2-d3lertflood3twaor44eam2kcr4l72ag") then
LmodError (
"You don't have the necessary rights to run \"netlib-scalapack\".\n\n",
"\tPlease write an e-mail to 1234@foo.com if you need further information on how to get access to it.\n"