From 3c8fb99bf7f0f7bcb0cdb5e8a802c426e1e08c7b Mon Sep 17 00:00:00 2001 From: Achim Gsell Date: Tue, 29 Apr 2014 10:39:00 +0200 Subject: [PATCH] first review --- doc/Environment_Modules_Project.org | 140 ++++++++++++++++------------ 1 file changed, 82 insertions(+), 58 deletions(-) diff --git a/doc/Environment_Modules_Project.org b/doc/Environment_Modules_Project.org index 48f96a7..c40e3c1 100644 --- a/doc/Environment_Modules_Project.org +++ b/doc/Environment_Modules_Project.org @@ -128,6 +128,14 @@ Only nonfloating licenses will be taken into account. *** DONE Must Export a Predefined Subset of POSIX Standard and Other Common Environment Variables CLOSED: [2014-04-28 Mon 10:55] +The following environment variable *must be set* by all modules: +#+BEGIN_EXAMPLE + _VERSION + _PREFIX + _DIR + _HOME +#+END_EXAMPLE + Every module that *has effect* on the following POSIX standard environment variables *must explicitly export* them: #+BEGIN_EXAMPLE @@ -136,12 +144,64 @@ Every module that *has effect* on the following POSIX standard environment varia MANPATH #+END_EXAMPLE -FIXME (non-POSIX, e.g. common GCC shared by many other applications): +FIXME (non-POSIX, e.g. common GCC shared by many other applications) +if corresponding path exists: #+BEGIN_EXAMPLE + CPATH C_INCLUDE_PATH - ... + CPLUS_INCLUDE_PATH + _INCLUDE_DIR + LIBRARY_PATH + _LIBRARY_DIR + LD_LIBRARY_PATH #+END_EXAMPLE +*** IN-PROGRESS Must Export Family Environment Variables + += +_VERSION= + +#+BEGIN_EXAMPLE + MPI=openmpi + MPI_VERSION=1.8.0 +#+END_EXAMPLE + +**** IN-PROGRESS Must Export Environment Variables for Compiler Implementations + +#+BEGIN_EXAMPLE + CC + CXX + F77 + F90 + FC + FORTRAN +#+END_EXAMPLE + +**** IN-PROGRESS Must Export Environment Variables for MPI Implementations + +Set environment variables to corresponding MPI wrappers +#+BEGIN_EXAMPLE + CC + CXX + F77 + F90 + FC + FORTRAN +#+END_EXAMPLE + +or + +#+BEGIN_EXAMPLE + MPICC + MPICXX + MPIF77 + MPIF90 + MPIFC + MPIFORTRAN +#+END_EXAMPLE + +Note: names without underscore seems to be more common and more +commonly uses be autotools and cmake. *** IN-PROGRESS Should Export Package- or Vendor-Defined Environment Variables @@ -153,38 +213,7 @@ scientific libraries, and Python. The details for specific packages must be discussed with future maintainers. -Exaples follow. - -**** TODO GCC Specific Environment Varaibales - -FIXME: -#+BEGIN_EXAMPLE - CC=gcc - CXX=g++ - FC=gfort - - CFLAGS - FFLAGS - - LIBRARY_PATH -#+END_EXAMPLE - - -**** TODO GSL Specific Environment Varaibales - -#+BEGIN_EXAMPLE - GSL_HOME - - -I$GSL_HOME/include -L$GSL_HOME/lib -l... -#+END_EXAMPLE - - -**** TODO HDF5 Specific Environment Varaibales - -#+BEGIN_EXAMPLE - HDF5_DIR -#+END_EXAMPLE - +Examples follow. **** TODO Intel Specific Environment Varaibales @@ -214,25 +243,11 @@ Set the following variavbles for Intel compilers and their dependencies: **** TODO MPICH2 Specific Environment Varaibales - - -FIXME -#+BEGIN_EXAMPLE - MPICH_DIR -#+END_EXAMPLE - +Are there specific environment variables? Or are the more generic +family variables sufficient? **** TODO OpenMPI Specific Environment Varaibales - -FIXME -#+BEGIN_EXAMPLE - OMPI_CC=mpicc - OMPI_CXX=mpic++ - OMPI_F77=mpif77 - OMPI_FC=mpif90 -# after v.1.7: - OMPI_FC=mpifort -#+END_EXAMPLE +See comment in aboce section. To be dicussed: #+BEGIN_EXAMPLE @@ -249,6 +264,7 @@ To be dicussed: mpicc --showme:link -pthread -L/opt/mpi/openmpi-1.6.5-gcc-4.8.2-compat/lib -lmpi -ldl -lm -lnuma -Wl,--export-dynamic -lrt -lnsl -lutil -lm -ldl #+END_EXAMPLE +Note (Achim): no! Never need this ... **** TODO PGI Specific Environment Varaibales @@ -278,7 +294,7 @@ If /tmp may be not large enough (like on Merlin4), set suitable TMPDIR, e.g.: TMPDIR=/scratch/tmp # where /scratch ->/home/scratch #+END_EXAMPLE - +Note (Achim): TMPDIR *should not* be changed by an environment module *** IN-PROGRESS Should Export Module Identifiers @@ -293,12 +309,9 @@ FIXME: examples. *** IN-PROGRESS Must Support Combinations of Local and Network Installations -It must be possible to install locally any selfconsistent subset of environment modules. -The netwok modules should be hidden or can be made hidden when the network file system is not available. -The local modules should have priority by default. - -It may be possible to select whether the locally installed modules override the -corresponding network modules when the latter are available. +It must be possible to install locally any selfconsistent subset of +environment modules. The user can select which installation he wants +to use. *** DONE Top Level Directory :PROVIDER_PREFIX: @@ -310,6 +323,9 @@ See [[[TLD]]] for the PSI specific implementation details. +** IN-PROGRESS Must Support Modules at Multiple Locations +Idea: Modules in the user's home directory must be supported + ** DONE May Support Runtime Environments when Complete Development Environments are not Desirable CLOSED: [2014-04-28 Mon 11:24] @@ -334,6 +350,8 @@ If possible, make it "should support" requirement. There may be a mechanism to hide (default) or unhide modules, which are not intended for general use, e.g. of development and testing type, from the standard workflow. +Note(Achim): Hiding should be implemented via MODULEPATH. Modules in +testing state should print a warning. Everything else will end in a nightmare. ** DONE Must Define Minimum System Requirements to Support Generic Modules CLOSED: [2014-04-28 Mon 11:42] @@ -408,6 +426,11 @@ of environment modules: For the PSI implementation *MODULEPATH_ROOT=/opt/psi/modulefiles*. +Note (Achim): Actually I like the idea of something like a +MODULEROOT_PATH. It should be possible to implement multiple +hierarchies. This can be easly implemented with the extendet TCL +Modules, I guess it wouldn't be to hard to implement this with Lua-Modules. + *** IN-PROGRESS The Layout of Subdirectories Used for Configuration of Environment Modules @@ -435,6 +458,7 @@ FIXME PSI_MPI_VERSION #+END_EXAMPLE +Note (Achim): Use case? ** TODO Mainterners of Environment Modules and Their Responsibilities