Module selection contexts

Description of the different contexts where a module is expressed to get resolved to modulefiles.

Module identification to select one module

  • specification expresses exactly one module

  • must qualify version to select in case a module has multiple versions

  • expression may

    • be absolute like mod/version

    • be relative to the modulefile currently being evaluated like ./version or /version

    • refer to symbolic version or module alias

  • specification used to resolve argument passed to the following commands:

    • module-version

    • module-alias

    • module-virtual (cannot use symbolic version or module alias, should define an actual module)

    • module-info symbols

    • module-info version

    • module-info loaded

  • relies on getModuleNameVersion procedure to get absolute name

Module version specification to return all matching modules

  • specification expresses one or multiple modules

  • expression may

    • be absolute like mod/version

    • refer to implicit or explicitly defined default version like mod

    • refer to extended default version like mod/1 (to refer to mod/1.1.1)

    • refer to symbolic version or module alias

    • specify multiple versions as list (mod@1,2) or range (mod@:1 or mod@1:2)

    • refer to a variant specification (with or without a module name specification)

  • all modules matching specification are retrieved with getModules

  • specification used to resolve argument passed to the following commands:

    • avail

    • paths

    • whatis

    • list (matching specification retrieved from loaded modules, not getModules)

  • used to get all alias and symbolic version of loaded modules treated by:

    • list

  • used to get all existing aliases and symbolic version (no module specification) by:

    • aliases

  • used to get all existing modulefiles (no module specification) by:

    • search

Module version specification to select one module

  • specification expresses one or multiple modules

  • relies on the module version specification to return all matching modules

  • then among matching modules, one is selected with getPathToModule:

    • the one set has the default version (also called the explicit default version)

    • or the highest version in case no explicit default is found among results (also called the implicit default version)

    • nothing is returned in case no explicit default is found among matching modules and implicit default version mechanism is disabled

  • module selection may trigger another match retrieval

    • for instance in case selection leads to an alias that resolves to a bare module name

  • specification used to resolve argument passed to the following commands:

    • load

    • unload (with attempt to match against loaded modules to resolve argument)

    • switch

    • help

    • test

    • display

    • path

    • is-avail

  • used to resolve aliases or symbolic versions treated by following commands:

    • paths

    • search

Module version specification to check compatibility

  • specification expresses one or multiple modules

  • expression may

    • be absolute like mod/version

    • refer to implicit or explicitly defined default version like mod

    • refer to extended default version like mod/1 (to refer to mod/1.1.1)

    • refer to symbolic version or module alias

    • specify multiple versions as list (mod@1,2) or range (mod@:1 or mod@1:2)

  • version specification is matched against loaded or loading modules with variety of procedures:

    • getLoadedMatchingName

    • getLoadedWithClosestName

    • isModuleEvaluated

  • specification used to resolve argument passed to the following commands:

    • is-loaded

    • info-loaded

    • prereq

    • conflict

  • for prereq command when version specification does not have a match among loaded or loading modules

    • version specification is used to select one module per module specification

    • for instance prereq mod@:1.8 mod@1.10 triggers load tentative of default version among mod@:1.8 then if this tentative fails load of mod@1.10 is attempted

    • another example with prereq mod mod@1.10, which triggers load tentative of mod/default then if it fails load of mod@1.10 is attempted