Files
modules/doc/source/design/module-selection-contexts.rst
2022-07-30 16:07:28 +02:00

132 lines
4.6 KiB
ReStructuredText

.. _module-selection-contexts:
Module selection contexts
=========================
Description of the different contexts where a module is expressed to get resolved to modulefiles.
.. _module_identification_to_select_one_module:
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:
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:
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:
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
.. vim:set tabstop=2 shiftwidth=2 expandtab autoindent: