provide modulefile command¶
This design document describes the provide Tcl command that defines
one or multiple module aliases targeting currently evaluating module.
Command specification¶
The command has following syntax:
provide modulefile...
Each modulefile argument corresponds to a module alias to define onto current modulefile. At least one argument should be provided, an error is raised otherwise. Modulefile specification should correspond to a module name and version. Variant cannot be specified. Each individual string is interpreted as a module name and version.
This command is only available in modulefile evaluation contexts.
provide command is only effective during load evaluations. It
corresponds to a no-operation on other evaluation modes.
provide only defines aliases, thus conflict definitions are expected
to avoid these names to be provided by several loaded modules.
extensions modulefile command¶
The extensions modulefile command introduced by Lmod is now
implemented as a bare command alias onto provide.
Provided alias¶
Module alias defined with provide command are not distinguished from other
aliases defined with family or module-alias. These aliases are
recorded in __MODULES_LMALTNAME with al type like other aliases.
It appears easier for the user to only face one kind of element (alias) rather requiring them to learn multiple concepts (family, extensions, alias). All of this is just different names applying to a given modulefile.
A new item for output configuration is introduced: provided-alias. It adds
module aliases information into the generated output and enables the
evaluation of modulefiles to fetch aliases provided by them (i.e., defined
within them by provide or family modulefile commands).
provided-alias implies alias item.
A given provided alias may be defined by several modulefiles. When reported first defined target is retained. Which means that first scanned modulefile wins.
FUTURE: keep all target definitions to be able to report all of them if asked.