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)
  • all modules matching specification are retrieved with getModules
  • specification used to resolve argument passed to the following commands:
    • avail
    • paths
    • whatis
  • 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