The automated module handling mode (new feature for the future version 4.2)
has gain a new mechanism: Dependent module Unload (DepUn). I have tried to
improve and clarify the explanation on all of this:
An automatic management of the dependencies between modulefiles has been
added and it is called *automated module handling mode*. This new mode
consists in additional actions triggered when loading or unloading a
modulefile to satisfy the constraints it declares.
When loading a modulefile, following actions are triggered:
* Requirement Load (ReqLo): load of the modulefiles declared as a *prereq*
of the loading modulefile.
* Dependent Reload (DepRe): reload of the modulefiles declaring a *prereq*
onto loaded modulefile or declaring a *prereq* onto a modulefile part of
this reloading batch.
When unloading a modulefile, following actions are triggered:
* Dependent Unload (DepUn): unload of the modulefiles declaring a
non-optional *prereq* onto unloaded modulefile or declaring a non-optional
*prereq* onto a modulefile part of this unloading batch. A *prereq*
modulefile is considered optional if the *prereq* definition order is made
of multiple modulefiles and at least one alternative modulefile is loaded.
* Useless Requirement Unload (UReqUn): unload of the *prereq* modulefiles
that have been automatically loaded for either the unloaded modulefile, an
unloaded dependent modulefile or a modulefile part of this useless
requirement unloading batch. Modulefiles are added to this unloading batch
only if they are not required by any other loaded modulefiles.
`MODULES_LMNOTUASKED` environment variable helps to keep track of these
automatically loaded modulefiles and to distinguish them from modulefiles
asked by user.
* Dependent Reload (DepRe): reload of the modulefiles declaring a
*conflict* or an optional *prereq* onto either the unloaded modulefile, an
unloaded dependent or an unloaded useless requirement or declaring a
*prereq* onto a modulefile part of this reloading batch.
In case a loaded modulefile has some of its declared constraints
unsatisfied (pre-required modulefile not loaded or conflicting modulefile
loaded for instance), this loaded modulefile is excluded from the automatic
reload actions described above.
For the specific case of the *switch* sub-command, where a modulefile is
unloaded to then load another modulefile. Dependent modulefiles to Unload
are merged into the Dependent modulefiles to Reload that are reloaded after
the load of the switched-to modulefile.
This automated module handling mode integrates concepts (like the Dependent
Reload mechanism) of the Flavours [1] extension, which was designed for
Modules compatibility version. As a whole, automated module handling mode
can be seen as a generalization and as an expansion of the Flavours
concepts.
[1] https://sourceforge.net/projects/flavours/
|