easybuild.tools.module_naming_scheme.hierarchical_mns module

Implementation of an example hierarchical module naming scheme.

author:Kenneth Hoste (Ghent University)
author:Markus Geimer (Forschungszentrum Juelich GmbH)
class easybuild.tools.module_naming_scheme.hierarchical_mns.HierarchicalMNS(*args, **kwargs)

Bases: easybuild.tools.module_naming_scheme.mns.ModuleNamingScheme

Class implementing an example hierarchical module naming scheme.

REQUIRED_KEYS = ['name', 'versionprefix', 'version', 'versionsuffix', 'toolchain', 'moduleclass']

Determine full module name, relative to the top of the module path. Examples: Core/GCC/4.8.3, Compiler/GCC/4.8.3/OpenMPI/1.6.5, MPI/GCC/4.8.3/OpenMPI/1.6.5/HPL/2.1


Determine full version, taking into account version prefix/suffix.


Determine list of initial module paths (i.e. top of the hierarchy).


Determine module path extensions, if any. Examples: Compiler/GCC/4.8.3 (for GCC/4.8.3 module), MPI/GCC/4.8.3/OpenMPI/1.6.5 (for OpenMPI/1.6.5 module)


Determine module subdirectory, relative to the top of the module path. This determines the separation between module names exposed to users, and what’s part of the $MODULEPATH. Examples: Core, Compiler/GCC/4.8.3, MPI/GCC/4.8.3/OpenMPI/1.6.5

Determine list of paths in which symlinks to module files must be created.


Determine short module name, i.e. the name under which modules will be exposed to users. Examples: GCC/4.8.3, OpenMPI/1.6.5, OpenBLAS/0.2.9, HPL/2.1, Python/2.7.5


Determine toolchain compiler tag, for given list of compilers.


Determine whether load statements for a toolchain should be expanded to load statements for its dependencies. This is useful when toolchains are not exposed to users.


Determine whether toolchain details are required by this module naming scheme, e.g. whether one of det_toolchain_* functions are relied upon.