easybuild.tools.module_naming_scheme.categorized_hmns module

Implementation of a hierarchical module naming scheme using module classes.

author:Markus Geimer (Juelich Supercomputing Centre)
class easybuild.tools.module_naming_scheme.categorized_hmns.CategorizedHMNS(*args, **kwargs)

Bases: easybuild.tools.module_naming_scheme.hierarchical_mns.HierarchicalMNS

Class implementing an extended hierarchical module naming scheme using the ‘moduleclass’ easyconfig parameter to categorize modulefiles on each level of the hierarchy.

REQUIRED_KEYS = ['name', 'version', 'versionsuffix', 'toolchain', 'moduleclass']
categorize_paths(basepaths)

Returns a list of paths where all known (valid) module classes have been added to each of the given base paths.

det_init_modulepaths(ec)

Determine list of initial module paths (i.e., top of the hierarchy). Appends all known (valid) module classes to the top-level base path.

Examples: Core/<moduleclasses>

det_modpath_extensions(ec)

Determine module path extensions, if any. Appends all known (valid) module classes to the base path of the corresponding hierarchy level.

Examples: Compiler/GCC/4.8.3/<moduleclasses> (for GCC/4.8.3 module), MPI/GCC/4.8.3/OpenMPI/1.6.5/<moduleclasses> (for OpenMPI/1.6.5 module)

det_module_subdir(ec)

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. This implementation appends the ‘moduleclass’ easyconfig parameter to the base path of the corresponding hierarchy level.

Examples: Core/compiler, Compiler/GCC/4.8.3/mpi, MPI/GCC/4.8.3/OpenMPI/1.6.5/bio

det_user_modpath_extensions(ec)

Determine user module path extensions, if any. As typical users are not expected to have many local modules, further categorizing them using module classes is considered overkill. Thus, we are using a plain hierarchical scheme for user modules instead.

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)