hide-or-forbid-modulefile.rst (modules-5.1.1.tar.bz2) | : | hide-or-forbid-modulefile.rst (modules-5.2.0.tar.bz2) | ||
---|---|---|---|---|
skipping to change at line 16 | skipping to change at line 16 | |||
Configuration | Configuration | |||
------------- | ------------- | |||
- No specific configuration | - No specific configuration | |||
Use cases | Use cases | |||
--------- | --------- | |||
- Restrict usage of particular software to a limited set of user (RestrictUsage) | - Restrict usage of particular software to a limited set of user (RestrictUsage) | |||
- Included in module specification result for a not granted user: no | - Included in module specification result for a not granted user: no | |||
- Visible for a not granted user on a full ``avail``: no | - Visible for a not granted user on a full ``avail``: no | |||
- Visible for a not granted user on a targeted ``avail``: no | - Visible for a not granted user on a targeted ``avail``: no | |||
- Visible for a not granted user once loaded on a ``list``: yes | - Visible for a not granted user once loaded on a ``list``: yes | |||
- Load tentative for a not granted user: error | - Load tentative for a not granted user: error | |||
- Allow usage of particular software once clearance has been obtained (AllowOnce Cleared) | - Allow usage of particular software once clearance has been obtained (AllowOnce Cleared) | |||
- Included in module specification result for a not granted user: yes | - Included in module specification result for a not granted user: yes | |||
- Visible for a not granted user on a full ``avail``: yes | - Visible for a not granted user on a full ``avail``: yes | |||
- Visible for a not granted user on a targeted ``avail``: yes | - Visible for a not granted user on a targeted ``avail``: yes | |||
- Visible for a not granted user once loaded on a ``list``: yes | - Visible for a not granted user once loaded on a ``list``: yes | |||
- Load tentative for a not granted user: error | - Load tentative for a not granted user: error | |||
- Expire a software after a given date (Expire) | - Expire a software after a given date (Expire) | |||
- Included in module specification result for a not granted user: no after e | - Included in module specification result for a not granted user: no after exp | |||
xpiration date | iration date | |||
- Visible for a not granted user on a full ``avail``: no after expiration da | - Visible for a not granted user on a full ``avail``: no after expiration date | |||
te | - Visible for a not granted user on a targeted ``avail``: no after expiration | |||
- Visible for a not granted user on a targeted ``avail``: no after expiratio | date | |||
n date | - Visible for a not granted user once loaded on a ``list``: yes, even after ex | |||
- Visible for a not granted user once loaded on a ``list``: yes, even after | piration date | |||
expiration date | - Load tentative for a not granted user: error after expiration date | |||
- Load tentative for a not granted user: error after expiration date | ||||
- Disclose a software after a given date (Disclose) | - Disclose a software after a given date (Disclose) | |||
- Included in module specification result for a not granted user: no prior d | - Included in module specification result for a not granted user: no prior dis | |||
isclosure date | closure date | |||
- Visible for a not granted user on a full ``avail``: no prior disclosure da | - Visible for a not granted user on a full ``avail``: no prior disclosure date | |||
te | - Visible for a not granted user on a targeted ``avail``: no prior disclosure | |||
- Visible for a not granted user on a targeted ``avail``: no prior disclosur | date | |||
e date | - Visible for a not granted user once loaded on a ``list``: yes, even prior di | |||
- Visible for a not granted user once loaded on a ``list``: yes, even prior | sclosure date | |||
disclosure date | - Load tentative for a not granted user: error prior disclosure date | |||
- Load tentative for a not granted user: error prior disclosure date | ||||
- Hide software not of interest for current user (HideNotOfInt) | - Hide software not of interest for current user (HideNotOfInt) | |||
- Included in module specification result for a not granted user: yes | - Included in module specification result for a not granted user: yes | |||
- Visible for a not granted user on a full ``avail``: no, unless specific op | - Visible for a not granted user on a full ``avail``: no, unless specific opti | |||
tion set | on set | |||
- Visible for a not granted user on a targeted ``avail``: yes | - Visible for a not granted user on a targeted ``avail``: yes | |||
- Visible for a not granted user once loaded on a ``list``: yes | - Visible for a not granted user once loaded on a ``list``: yes | |||
- Load tentative for a not granted user: success | - Load tentative for a not granted user: success | |||
- Hide software only useful for other software as dependency (HideDep) | - Hide software only useful for other software as dependency (HideDep) | |||
- Included in module specification result for a not granted user: yes | - Included in module specification result for a not granted user: yes | |||
- Visible for a not granted user on a full ``avail``: no, unless specific op | - Visible for a not granted user on a full ``avail``: no, unless specific opti | |||
tion set | on set | |||
- Visible for a not granted user on a targeted ``avail``: yes | - Visible for a not granted user on a targeted ``avail``: yes | |||
- Visible for a not granted user once loaded on a ``list``: yes | - Visible for a not granted user once loaded on a ``list``: yes | |||
- Load tentative for a not granted user: success | - Load tentative for a not granted user: success | |||
- Hide dependency software once loaded (HideDepOnceLoaded) | - Hide dependency software once loaded (HideDepOnceLoaded) | |||
- Included in module specification result for a not granted user: see HideDe | - Included in module specification result for a not granted user: see HideDep | |||
p | - Visible for a not granted user on a full ``avail``: see HideDep | |||
- Visible for a not granted user on a full ``avail``: see HideDep | - Visible for a not granted user on a targeted ``avail``: see HideDep | |||
- Visible for a not granted user on a targeted ``avail``: see HideDep | - Visible for a not granted user once loaded on a ``list``: no, unless specifi | |||
- Visible for a not granted user once loaded on a ``list``: no, unless speci | c option set | |||
fic option set | - Load tentative for a not granted user: see HideDep | |||
- Load tentative for a not granted user: see HideDep | ||||
Specification | Specification | |||
------------- | ------------- | |||
- 2 new modulefile commands are introduced for the needs described above: :mfcmd :`module-hide` and :mfcmd:`module-forbid` | - 2 new modulefile commands are introduced for the needs described above: :mfcmd :`module-hide` and :mfcmd:`module-forbid` | |||
- ``module-hide`` removes visibility of specified modules | - ``module-hide`` removes visibility of specified modules | |||
- ``module-hide`` acts when modules are searched (``avail``, ``whatis`` and ``search`` sub-commands) or selected (``load``, ``unload``, ``display``, etc sub -commands) | - ``module-hide`` acts when modules are searched (``avail``, ``whatis`` and `` search`` sub-commands) or selected (``load``, ``unload``, ``display``, etc sub-c ommands) | |||
- Visibility is however enabled if hidden module is specifically searched | - Visibility is however enabled if hidden module is specifically searched | |||
- On all context hidden module *mod/1.0* is included in result for insta | - On all context hidden module *mod/1.0* is included in result for instance | |||
nce if *mod/1.0* or *mod@1.0,2.0* are specified | if *mod/1.0* or *mod@1.0,2.0* are specified | |||
- But hidden module *mod/1.0* is excluded from result if *mod@:2.0* or * | - But hidden module *mod/1.0* is excluded from result if *mod@:2.0* or *mod@ | |||
mod@1:* are specified | 1:* are specified | |||
- And is also excluded from result if *mod* or *mod/** are specified whe | - And is also excluded from result if *mod* or *mod/** are specified when *m | |||
n *mod/1.0* is set default | od/1.0* is set default | |||
- Unless if search is made to select one module since in this context a | - Unless if search is made to select one module since in this context a *mod | |||
*mod* search query is equivalent to *mod/default* | * search query is equivalent to *mod/default* | |||
- Hard-hidden modules are not disclosed even if specifically searched | - Hard-hidden modules are not disclosed even if specifically searched | |||
- Excluded from module resolution result | - Excluded from module resolution result | |||
- Unless precisely specified on the following selection contexts: | - Unless precisely specified on the following selection contexts: | |||
- :ref:`module_version_specification_to_select_one_module` | - :ref:`module_version_specification_to_select_one_module` | |||
- :ref:`module_version_specification_to_check_compatibility` | - :ref:`module_version_specification_to_check_compatibility` | |||
- :ref:`module_version_specification_to_return_all_matching_modules` | - :ref:`module_version_specification_to_return_all_matching_modules` | |||
- For example, the hidden module *mod/1.0* | - For example, the hidden module *mod/1.0* | |||
- is included in ``module load mod/1.0`` result | - is included in ``module load mod/1.0`` result | |||
- is excluded from ``module load mod/1`` result, even if default sym | - is excluded from ``module load mod/1`` result, even if default symbol ta | |||
bol targets it | rgets it | |||
- is excluded from ``module load mod`` result, unless if default sym | - is excluded from ``module load mod`` result, unless if default symbol ta | |||
bol targets it (as query is equivalent to *mod/default*) | rgets it (as query is equivalent to *mod/default*) | |||
- is excluded from ``module load mod@:2`` result, even if default sy | - is excluded from ``module load mod@:2`` result, even if default symbol t | |||
mbol targets it | argets it | |||
- is included in ``module load mod@1.0,2.0`` result | - is included in ``module load mod@1.0,2.0`` result | |||
- is included/excluded the same way for ``prereq`` and ``conflict`` | - is included/excluded the same way for ``prereq`` and ``conflict`` sub-co | |||
sub-commands than ``load`` sub-command | mmands than ``load`` sub-command | |||
- is matched by ``is-loaded`` and ``info-loaded`` sub-commands query | - is matched by ``is-loaded`` and ``info-loaded`` sub-commands querying it | |||
ing it once loaded | once loaded | |||
- is excluded from ``module whatis`` result | - is excluded from ``module whatis`` result | |||
- is included/excluded the same way for ``whatis`` sub-command than | - is included/excluded the same way for ``whatis`` sub-command than ``avai | |||
``avail`` sub-command | l`` sub-command | |||
- is excluded from ``module avail`` result | - is excluded from ``module avail`` result | |||
- is excluded from ``module avail m*`` result | - is excluded from ``module avail m*`` result | |||
- is included in ``module avail mod/1.0`` result | - is included in ``module avail mod/1.0`` result | |||
- is excluded from ``module avail mod/1`` result, even if default sy | - is excluded from ``module avail mod/1`` result, even if default symbol t | |||
mbol targets it | argets it | |||
- is excluded from ``module avail mod`` result, even if default symb | - is excluded from ``module avail mod`` result, even if default symbol tar | |||
ol targets it (as query is NOT equivalent to *mod/default* in this context) | gets it (as query is NOT equivalent to *mod/default* in this context) | |||
- is excluded from ``module avail mod@:2`` result, even if default s | - is excluded from ``module avail mod@:2`` result, even if default symbol | |||
ymbol targets it | targets it | |||
- is included in ``module avail mod@1.0,2.0`` result | - is included in ``module avail mod@1.0,2.0`` result | |||
- Included in module resolution result if :option:`--all` option of ``avail` `, ``whatis``, ``search`` and ``aliases`` sub-commands is set | - Included in module resolution result if :option:`--all` option of ``avail``, ``whatis``, ``search`` and ``aliases`` sub-commands is set | |||
- ``--all`` option does not apply to ``is-avail`` sub-command to make it coherent with ``load`` sub-command (e.g., a ``is-avail mod`` returning true imp lies ``load mod`` effectively loading a module) | - ``--all`` option does not apply to ``is-avail`` sub-command to make it coh erent with ``load`` sub-command (e.g., a ``is-avail mod`` returning true implies ``load mod`` effectively loading a module) | |||
- Visibility of a module targeted by a ``module-hide`` command, with regular hiding level defined, acts similarly than for a file whose name is prefixed by a dot character on Unix platform | - Visibility of a module targeted by a ``module-hide`` command, with regular h iding level defined, acts similarly than for a file whose name is prefixed by a dot character on Unix platform | |||
- If ``--soft`` option is set on ``module-hide`` command, module hiding is w eakened | - If ``--soft`` option is set on ``module-hide`` command, module hiding is wea kened | |||
- Module is always included in resolution result for the following conte xts | - Module is always included in resolution result for the following contexts | |||
- :ref:`module_version_specification_to_select_one_module` | - :ref:`module_version_specification_to_select_one_module` | |||
- :ref:`module_version_specification_to_check_compatibility` | - :ref:`module_version_specification_to_check_compatibility` | |||
- For example, the hidden module *mod/1.0* | - For example, the hidden module *mod/1.0* | |||
- is included in ``module load mod/1.0`` result | - is included in ``module load mod/1.0`` result | |||
- is included in ``module load mod/1`` result | - is included in ``module load mod/1`` result | |||
- is included in ``module load mod`` result | - is included in ``module load mod`` result | |||
- is included in ``module load mod@:2`` result | - is included in ``module load mod@:2`` result | |||
- is included in ``module load mod@1.0,2.0`` result | - is included in ``module load mod@1.0,2.0`` result | |||
- is included/excluded the same way for ``prereq`` and ``conflict`` | - is included/excluded the same way for ``prereq`` and ``conflict`` sub-co | |||
sub-commands than ``load`` sub-command | mmands than ``load`` sub-command | |||
- is matched by ``is-loaded`` and ``info-loaded`` sub-commands query | - is matched by ``is-loaded`` and ``info-loaded`` sub-commands querying it | |||
ing it once loaded | once loaded | |||
- is excluded from ``module whatis`` result | - is excluded from ``module whatis`` result | |||
- is included/excluded the same way for ``whatis`` sub-command than | - is included/excluded the same way for ``whatis`` sub-command than ``avai | |||
``avail`` sub-command | l`` sub-command | |||
- is excluded from ``module avail`` result | - is excluded from ``module avail`` result | |||
- is excluded from ``module avail m*`` result | - is excluded from ``module avail m*`` result | |||
- is included in ``module avail mod/1.0`` result | - is included in ``module avail mod/1.0`` result | |||
- is included in ``module avail mod/1`` result | - is included in ``module avail mod/1`` result | |||
- is included in ``module avail mod`` result | - is included in ``module avail mod`` result | |||
- is included in ``module avail mod@:2`` result | - is included in ``module avail mod@:2`` result | |||
- is included in ``module avail mod@1.0,2.0`` result | - is included in ``module avail mod@1.0,2.0`` result | |||
- If ``--hard`` option is set on ``module-hide`` command, hiding is hardened and designated modules are never unveiled | - If ``--hard`` option is set on ``module-hide`` command, hiding is hardened a nd designated modules are never unveiled | |||
- Designated modules are strictly hidden, also referred as *hard-hidden* | - Designated modules are strictly hidden, also referred as *hard-hidden* | |||
- ``--all`` option of ``avail`` sub-command cannot unveil them | - ``--all`` option of ``avail`` sub-command cannot unveil them | |||
- Excluded from module resolution result, which means it is always exclu ded from resolution on following context: | - Excluded from module resolution result, which means it is always excluded from resolution on following context: | |||
- :ref:`module_version_specification_to_select_one_module` | - :ref:`module_version_specification_to_select_one_module` | |||
- :ref:`module_version_specification_to_check_compatibility` | - :ref:`module_version_specification_to_check_compatibility` | |||
- :ref:`module_version_specification_to_return_all_matching_modules` | - :ref:`module_version_specification_to_return_all_matching_modules` | |||
- For example, the hard-hidden module *mod/1.0* | - For example, the hard-hidden module *mod/1.0* | |||
- is excluded from ``module load mod/1.0`` result | - is excluded from ``module load mod/1.0`` result | |||
- is excluded from ``module load mod`` result, even if default symbo | - is excluded from ``module load mod`` result, even if default symbol targ | |||
l targets it | ets it | |||
- is excluded from ``module load mod/1`` result, even if default sym | - is excluded from ``module load mod/1`` result, even if default symbol ta | |||
bol targets it | rgets it | |||
- is excluded from ``module load mod@:2`` result, even if default sy | - is excluded from ``module load mod@:2`` result, even if default symbol t | |||
mbol targets it | argets it | |||
- is excluded from ``module load mod@1.0,2.0`` result | - is excluded from ``module load mod@1.0,2.0`` result | |||
- is included/excluded the same way for ``prereq`` and ``conflict`` | - is included/excluded the same way for ``prereq`` and ``conflict`` sub-co | |||
sub-commands than ``load`` sub-command | mmands than ``load`` sub-command | |||
- is matched by ``is-loaded`` and ``info-loaded`` sub-commands query | - is matched by ``is-loaded`` and ``info-loaded`` sub-commands querying it | |||
ing it once loaded | once loaded | |||
- is excluded from any ``avail`` query result | - is excluded from any ``avail`` query result | |||
- is included/excluded the same way for ``whatis`` sub-command than | - is included/excluded the same way for ``whatis`` sub-command than ``avai | |||
``avail`` sub-command | l`` sub-command | |||
- Visibility of a module targeted by a ``module-hide --hard`` command ac ts like if no modulefile exists on filesystem | - Visibility of a module targeted by a ``module-hide --hard`` command acts l ike if no modulefile exists on filesystem | |||
- If ``--hidden-loaded`` option is set on ``module-hide``, hiding also appli es to specified modules once they are loaded | - If ``--hidden-loaded`` option is set on ``module-hide``, hiding also applies to specified modules once they are loaded | |||
- Hidden once loaded modules do not appear on ``module list`` | - Hidden once loaded modules do not appear on ``module list`` | |||
- Unless ``--all`` option is set on ``list`` sub-command | - Unless ``--all`` option is set on ``list`` sub-command | |||
- Hidden once loaded modules load, unload or tag is not reported | - Hidden once loaded modules load, unload or tag is not reported | |||
- If this evaluation has been triggered automatically | - If this evaluation has been triggered automatically | |||
- By an *automated module handling mechanism* for instance | - By an *automated module handling mechanism* for instance | |||
- Which means user has not explicitly asked the module load or u | - Which means user has not explicitly asked the module load or unload | |||
nload | ||||
- And was automatically loaded, in case of an automatic unload | - And was automatically loaded, in case of an automatic unload | |||
- Which means the automatic unload of an hidden loaded module wi ll be reported if it was manually loaded | - Which means the automatic unload of an hidden loaded module will be re ported if it was manually loaded | |||
- And if ``verbosity`` level is lower than ``verbose2`` level | - And if ``verbosity`` level is lower than ``verbose2`` level | |||
- And if no issue occurs during hidden module evaluation | - And if no issue occurs during hidden module evaluation | |||
- Switch of hidden modules is not reported | - Switch of hidden modules is not reported | |||
- If both switched-off and switched-on modules are set hidden | - If both switched-off and switched-on modules are set hidden | |||
- If switched-off module were automatically loaded | - If switched-off module were automatically loaded | |||
- And if the switch evaluation has been automatically triggered | - And if the switch evaluation has been automatically triggered | |||
- When those modules are loaded, a ``hidden-loaded`` tag is applied to t | - When those modules are loaded, a ``hidden-loaded`` tag is applied to them | |||
hem and recorded in :envvar:`__MODULES_LMTAG` environment variable to keep track | and recorded in :envvar:`__MODULES_LMTAG` environment variable to keep track of | |||
of their hidden status | their hidden status | |||
- Hidden once loaded status does not affect ``is-loaded``: these modules | - Hidden once loaded status does not affect ``is-loaded``: these modules wil | |||
will always be reported if they match ``is-loaded`` queries | l always be reported if they match ``is-loaded`` queries | |||
- ``module-forbid`` disallow evaluation of specified modules | - ``module-forbid`` disallow evaluation of specified modules | |||
- It does not imply hiding, but can be of course coupled with ``module-hide` | - It does not imply hiding, but can be of course coupled with ``module-hide`` | |||
` calls | calls | |||
- Evaluation of targeted modules is forbidden | - Evaluation of targeted modules is forbidden | |||
- Error is rendered prior evaluation when trying to *load*, *display*, * | - Error is rendered prior evaluation when trying to *load*, *display*, *help | |||
help*, *test*, *path*, *whatis* them | *, *test*, *path*, *whatis* them | |||
- Note that for *whatis* evaluation mode, an error is reported only if a | - Note that for *whatis* evaluation mode, an error is reported only if a mod | |||
module is referred by its exact name which is not the case on ``search`` sub-co | ule is referred by its exact name which is not the case on ``search`` sub-comman | |||
mmand as no module is specified, just a keyword to search | d as no module is specified, just a keyword to search | |||
- No error occurs when unloading a module that were set forbidden after | - No error occurs when unloading a module that were set forbidden after it w | |||
it was loaded by user | as loaded by user | |||
- As it impacts module evaluation, ``module-forbid`` is only effective when it targets modulefiles or virtual modules | - As it impacts module evaluation, ``module-forbid`` is only effective when it targets modulefiles or virtual modules | |||
- Module alias or symbolic version are not impacted by ``module-forbid`` | - Module alias or symbolic version are not impacted by ``module-forbid`` dir | |||
directives | ectives | |||
- Even if they match some ``module-forbid`` statements, they are still r | - Even if they match some ``module-forbid`` statements, they are still resol | |||
esolved to their target and these targets do not inherit the *forbidden* tag set | ved to their target and these targets do not inherit the *forbidden* tag set on | |||
on their alias, symbol. | their alias, symbol. | |||
- When a ``module-forbid`` command targets a directory, this directory i | - When a ``module-forbid`` command targets a directory, this directory is st | |||
s still resolved to its target, but the target inherits the *forbidden* tag as i | ill resolved to its target, but the target inherits the *forbidden* tag as it ma | |||
t matches the name specified on ``module-forbid`` command | tches the name specified on ``module-forbid`` command | |||
- When combined with a ``module-hide --hard`` command, designated modules is unveiled if referred by its exact name and set in error | - When combined with a ``module-hide --hard`` command, designated modules is u nveiled if referred by its exact name and set in error | |||
- Thus an error is obtained when trying to reach module instead of not f inding it (which is the regular behavior for hard-hidden modules) | - Thus an error is obtained when trying to reach module instead of not findi ng it (which is the regular behavior for hard-hidden modules) | |||
- ``module-hide`` accepts options that change its behavior: | - ``module-hide`` accepts options that change its behavior: | |||
- ``--hidden-loaded``: hides module from loaded module list | - ``--hidden-loaded``: hides module from loaded module list | |||
- ``--soft``: lightweight module hide | - ``--soft``: lightweight module hide | |||
- ``--hard``: highest hiding level | - ``--hard``: highest hiding level | |||
- ``--not-user``: specify a list of users unaffected by hide mechanism | - ``--not-user``: specify a list of users unaffected by hide mechanism | |||
- ``--not-group``: specify a list of groups whose member are unaffected by h | - ``--not-group``: specify a list of groups whose member are unaffected by hid | |||
ide mechanism | e mechanism | |||
- ``--before``: enables hide mechanism until a given date | - ``--before``: enables hide mechanism until a given date | |||
- ``--after``: enables hide mechanism after a given date | - ``--after``: enables hide mechanism after a given date | |||
- ``module-forbid`` accepts options that change its behavior: | - ``module-forbid`` accepts options that change its behavior: | |||
- ``--not-user``: specify a list of users unaffected by forbid mechanism | - ``--not-user``: specify a list of users unaffected by forbid mechanism | |||
- ``--not-group``: specify a list of groups whose member are unaffected by f | - ``--not-group``: specify a list of groups whose member are unaffected by for | |||
orbid mechanism | bid mechanism | |||
- ``--before``: enables forbid mechanism until a given date | - ``--before``: enables forbid mechanism until a given date | |||
- ``--after``: enables forbid mechanism after a given date | - ``--after``: enables forbid mechanism after a given date | |||
- ``--message``: supplements error message obtained when trying to evaluate | - ``--message``: supplements error message obtained when trying to evaluate a | |||
a forbidden module with given text message | forbidden module with given text message | |||
- ``--nearly-message``: supplements warning message obtained when evaluating | - ``--nearly-message``: supplements warning message obtained when evaluating a | |||
a nearly forbidden module with given text message | nearly forbidden module with given text message | |||
- Each use case expressed above are covered by following command: | - Each use case expressed above are covered by following command: | |||
- RestrictUsage: ``module-hide --hard`` | - RestrictUsage: ``module-hide --hard`` | |||
- AllowOnceCleared: ``module-forbid`` | - AllowOnceCleared: ``module-forbid`` | |||
- Expire: ``module-forbid --after`` + ``module-hide --hard --after`` | - Expire: ``module-forbid --after`` + ``module-hide --hard --after`` | |||
- Disclose: ``module-hide --hard --before`` | - Disclose: ``module-hide --hard --before`` | |||
- HideNotOfInt: ``module-hide --soft`` | - HideNotOfInt: ``module-hide --soft`` | |||
- HideDep: ``module-hide --soft`` | - HideDep: ``module-hide --soft`` | |||
- HideDepOnceLoaded: ``module-hide --soft --hidden-loaded`` | - HideDepOnceLoaded: ``module-hide --soft --hidden-loaded`` | |||
- ``module-hide`` and ``module-forbid`` accept the specification of several modu les | - ``module-hide`` and ``module-forbid`` accept the specification of several modu les | |||
- For instance ``module-hide mod1 mod2...`` | - For instance ``module-hide mod1 mod2...`` | |||
- :ref:`advanced-module-version-specifiers` are supported if relative module | - :ref:`advanced-module-version-specifiers` are supported if relative module o | |||
option is enabled | ption is enabled | |||
- Full path specification are not supported, as modulerc are not evaluated w | - Full path specification are not supported, as modulerc are not evaluated whe | |||
hen reaching a modulefile specified as full path | n reaching a modulefile specified as full path | |||
- For instance, ``/path/to/modulefiles/.modulerc`` is not evaluated when | - For instance, ``/path/to/modulefiles/.modulerc`` is not evaluated when loa | |||
loading ``/path/to/modulefiles/mod/1.0`` | ding ``/path/to/modulefiles/mod/1.0`` | |||
- Thus ``module-hide`` and ``module-forbid`` commands set in this module | - Thus ``module-hide`` and ``module-forbid`` commands set in this modulerc f | |||
rc files are not evaluated | iles are not evaluated | |||
- If module is specified as full path, no error is returned, but it will | - If module is specified as full path, no error is returned, but it will hav | |||
have no effect as demonstrated above | e no effect as demonstrated above | |||
- Unless on very specific cases, where a global rc file defines thes e hidden/forbidden commands for the full path modules | - Unless on very specific cases, where a global rc file defines these hidd en/forbidden commands for the full path modules | |||
- ``--not-user`` and ``--not-group`` specification is only supported on Unix pla tform | - ``--not-user`` and ``--not-group`` specification is only supported on Unix pla tform | |||
- These 2 options raise an error when used on Windows platform | - These 2 options raise an error when used on Windows platform | |||
- In which case relative ``module-hide`` or ``module-forbid`` command is mad | - In which case relative ``module-hide`` or ``module-forbid`` command is made | |||
e ineffective as well as remaining content of the modulerc script hosting them | ineffective as well as remaining content of the modulerc script hosting them | |||
- Error message is clearly seen when trying to load related modules and indi | - Error message is clearly seen when trying to load related modules and indica | |||
cate where to find the erroneous command | te where to find the erroneous command | |||
- ``--before`` and ``--after`` are also supported by ``module-hide`` to phase-ou t modules prior to forbid their evaluation | - ``--before`` and ``--after`` are also supported by ``module-hide`` to phase-ou t modules prior to forbid their evaluation | |||
- ``--before`` and ``--after`` accept a date time as value | - ``--before`` and ``--after`` accept a date time as value | |||
- Accepted date time format is ``YYYY-MM-DD[THH:MM]`` | - Accepted date time format is ``YYYY-MM-DD[THH:MM]`` | |||
- If no time value is specified (just a date like ``2020-08-01``), *00:00* i | - If no time value is specified (just a date like ``2020-08-01``), *00:00* is | |||
s assumed | assumed | |||
- So ``2020-08-01`` is translated into ``2020-08-01T00:00`` | - So ``2020-08-01`` is translated into ``2020-08-01T00:00`` | |||
- An error is raised if submitted date time value does not match accepted da te time format | - An error is raised if submitted date time value does not match accepted date time format | |||
- if both ``--before`` and ``--after`` options are set and *before* date is greater than *after* date | - if both ``--before`` and ``--after`` options are set and *before* date is gr eater than *after* date | |||
- targeted module is always hidden/forbidden | - targeted module is always hidden/forbidden | |||
- no error is returned | - no error is returned | |||
- ``--before`` and ``--after`` options are not supported on Tcl version below 8. 5 | - ``--before`` and ``--after`` options are not supported on Tcl version below 8. 5 | |||
- Prior 8.5, ``clock scan`` command does not have a ``-format`` option | - Prior 8.5, ``clock scan`` command does not have a ``-format`` option | |||
- This option is required to support defined date time format | - This option is required to support defined date time format | |||
- An error is raised when ``--before`` or ``--after`` options are used over | - An error is raised when ``--before`` or ``--after`` options are used over a | |||
a Tcl version below 8.5 | Tcl version below 8.5 | |||
- ``--message`` option adds additional text to the *access denied* error message | - ``--message`` option adds additional text to the *access denied* error message | |||
- Newline set in text message are preserved, which could help to control tex | - Newline set in text message are preserved, which could help to control text | |||
t output format | output format | |||
- Message content is set along forbidden module specification | - Message content is set along forbidden module specification | |||
- Message recorded for matching module specification will be printed | - Message recorded for matching module specification will be printed | |||
- Message recorded on other matching specification will be ignored, only | - Message recorded on other matching specification will be ignored, only mes | |||
message from retained matching specification is printed | sage from retained matching specification is printed | |||
- Firstly evaluated ``module-forbid`` command that matches module specif | - Firstly evaluated ``module-forbid`` command that matches module specificat | |||
ication is retained with its message property | ion is retained with its message property | |||
- a module matching a ``module-forbid`` statement whose ``--after`` limit is clo se is considered *nearly forbidden* | - a module matching a ``module-forbid`` statement whose ``--after`` limit is clo se is considered *nearly forbidden* | |||
- ``nearly-forbidden`` tag applies to such module | - ``nearly-forbidden`` tag applies to such module | |||
- matched ``module-forbid`` statement should of course not be disabled for c | - matched ``module-forbid`` statement should of course not be disabled for cur | |||
urrent user of group due to ``--not-user`` or ``--not-group`` option values | rent user of group due to ``--not-user`` or ``--not-group`` option values | |||
- the *near* range is defined by the :mconfig:`nearly_forbidden_days` config | - the *near* range is defined by the :mconfig:`nearly_forbidden_days` configur | |||
uration, which equals to ``14`` (14 days) by default | ation, which equals to ``14`` (14 days) by default | |||
- this configuration accepts an integer value which represents a number of d | - this configuration accepts an integer value which represents a number of day | |||
ays prior forbidding starts to be effective for module | s prior forbidding starts to be effective for module | |||
- ``nearly_forbidden_days`` configuration can be set at configure time with | - ``nearly_forbidden_days`` configuration can be set at configure time with :i | |||
:instopt:`--with-nearly-forbidden-days` option or afterward with the ``config`` | nstopt:`--with-nearly-forbidden-days` option or afterward with the ``config`` su | |||
sub-command (which sets the :envvar:`MODULES_NEARLY_FORBIDDEN_DAYS` environment | b-command (which sets the :envvar:`MODULES_NEARLY_FORBIDDEN_DAYS` environment va | |||
variable) | riable) | |||
- when evaluating a *nearly-forbidden* module, a warning message is reported | - when evaluating a *nearly-forbidden* module, a warning message is reported t | |||
to indicate that module access will soon be denied | o indicate that module access will soon be denied | |||
- ``--nearly-message`` option adds additional text to the *access will be denied * warning message | - ``--nearly-message`` option adds additional text to the *access will be denied * warning message | |||
- Newline set in text message are preserved, which could help to control tex | - Newline set in text message are preserved, which could help to control text | |||
t output format | output format | |||
- Message content is set along nearly-forbidden module specification | - Message content is set along nearly-forbidden module specification | |||
- Message recorded for matching module specification will be printed | - Message recorded for matching module specification will be printed | |||
- Message recorded on other matching specification will be ignored, only | - Message recorded on other matching specification will be ignored, only mes | |||
message from retained matching specification is printed | sage from retained matching specification is printed | |||
- Firstly evaluated ``module-forbid`` command that matches module specif | - Firstly evaluated ``module-forbid`` command that matches module specificat | |||
ication is retained with its message property | ion is retained with its message property | |||
- ``module-hide`` and ``module-forbid`` are intended to be used in modulerc file s | - ``module-hide`` and ``module-forbid`` are intended to be used in modulerc file s | |||
- as they impact modulefile resolution | - as they impact modulefile resolution | |||
- they also need to be enabled in modulefile context as global/user rc files | - they also need to be enabled in modulefile context as global/user rc files a | |||
are evaluated as modulefile, not modulerc | re evaluated as modulefile, not modulerc | |||
- several ``module-hide`` calls for the same module will supersede each other | - several ``module-hide`` calls for the same module will supersede each other | |||
- definition with the highest hiding level wins | - definition with the highest hiding level wins | |||
- which means the most restrictive call wins | - which means the most restrictive call wins | |||
- a ``--hidden-loaded`` status set is kept even if corresponding ``module-hi | - a ``--hidden-loaded`` status set is kept even if corresponding ``module-hide | |||
de`` call is not the highest one | `` call is not the highest one | |||
- the multiple definitions can come across different modulerc files (global, | - the multiple definitions can come across different modulerc files (global, m | |||
modulepath or modulefile rc levels) | odulepath or modulefile rc levels) | |||
- Module specification passed as argument to ``module-hide`` and ``module-forbid `` are matched exactly against available modules | - Module specification passed as argument to ``module-hide`` and ``module-forbid `` are matched exactly against available modules | |||
- Exception made when *extended_default* or *icase* mechanisms are enabled | - Exception made when *extended_default* or *icase* mechanisms are enabled | |||
- Which means wildcard characters like *\** or *?* are treated literally | - Which means wildcard characters like *\** or *?* are treated literally | |||
- Auto symbols (*@default* and *@latest*) are adapted when a *latest* version is hidden | - Auto symbols (*@default* and *@latest*) are adapted when a *latest* version is hidden | |||
- Auto symbols are applied to this version if it is selected specifically (f | - Auto symbols are applied to this version if it is selected specifically (for | |||
or instance loaded by its full name) | instance loaded by its full name) | |||
- Auto symbols are applied to another version when hidden latest is not sele | - Auto symbols are applied to another version when hidden latest is not select | |||
cted specifically, even if specified with *@latest* auto symbol | ed specifically, even if specified with *@latest* auto symbol | |||
- Auto-symbols cannot be set hidden | - Auto-symbols cannot be set hidden | |||
- When a defined ``default`` or ``latest`` symbol is set hidden, it is repla | - When a defined ``default`` or ``latest`` symbol is set hidden, it is replace | |||
ced by a ``default`` or ``latest`` auto-symbol targeting highest available modul | d by a ``default`` or ``latest`` auto-symbol targeting highest available module | |||
e version | version | |||
- Targeting an auto-symbol with a ``module-hide`` command, will have no effe | - Targeting an auto-symbol with a ``module-hide`` command, will have no effect | |||
ct | ||||
- When module specification of ``module-hide`` targets: | - When module specification of ``module-hide`` targets: | |||
- A symbolic version | - A symbolic version | |||
- This symbol only is hidden | - This symbol only is hidden | |||
- Modulefile targeted by hidden symbolic version stays visible | - Modulefile targeted by hidden symbolic version stays visible | |||
- An alias | - An alias | |||
- This alias only is hidden | - This alias only is hidden | |||
- Modulefile targeted by hidden alias stays visible | - Modulefile targeted by hidden alias stays visible | |||
- A modulefile targeted by either symbolic version or alias | - A modulefile targeted by either symbolic version or alias | |||
- This modulefile is hidden and all symbolic versions targeting it | - This modulefile is hidden and all symbolic versions targeting it | |||
- Aliases targeting modulefile stays visible (thus resolving alias in *l | - Aliases targeting modulefile stays visible (thus resolving alias in *load* | |||
oad* or *whatis* contexts make hidden modulefile target visible unless if set ha | or *whatis* contexts make hidden modulefile target visible unless if set hard-h | |||
rd-hidden) | idden) | |||
- Hidden alias or symbolic version should not appear in the list of alternative names of loaded modules | - Hidden alias or symbolic version should not appear in the list of alternative names of loaded modules | |||
- Unless this alias or symbolic version is not hard-hidden and is used to de | - Unless this alias or symbolic version is not hard-hidden and is used to desi | |||
signate the module to load | gnate the module to load | |||
- When ``default`` symbolic version is set hidden | - When ``default`` symbolic version is set hidden | |||
- also remove parent module name from the list of alternative names | - also remove parent module name from the list of alternative names | |||
- if resolution query corresponds to parent module name, unhide ``defaul | - if resolution query corresponds to parent module name, unhide ``default`` | |||
t`` symbol unless if hard-hidden | symbol unless if hard-hidden | |||
- On ``avail`` sub-command | - On ``avail`` sub-command | |||
- Hidden symbolic versions are not reported along module they target | - Hidden symbolic versions are not reported along module they target | |||
- Unless for non-hard-hidden symbols specifically designated in search q uery | - Unless for non-hard-hidden symbols specifically designated in search query | |||
- A :option:`--default` filtered search considers search query matches ``def ault`` symbol | - A :option:`--default` filtered search considers search query matches ``defau lt`` symbol | |||
- So ``default`` symbolic version will appear in result unless if hard-h idden | - So ``default`` symbolic version will appear in result unless if hard-hidde n | |||
- Different hiding level are considered | - Different hiding level are considered | |||
- *-1*: module is not hidden | - *-1*: module is not hidden | |||
- *0*: soft hiding (applied with ``module-hide --soft``) | - *0*: soft hiding (applied with ``module-hide --soft``) | |||
- *1*: regular hiding (applied with dot name module or default ``module-hide | - *1*: regular hiding (applied with dot name module or default ``module-hide`` | |||
`` command) | command) | |||
- *2*: hard hiding (applied with ``module-hide --hard``) | - *2*: hard hiding (applied with ``module-hide --hard``) | |||
- Hiding threshold | - Hiding threshold | |||
- is *0* by default, which means module is considered hidden if its hiding l | - is *0* by default, which means module is considered hidden if its hiding lev | |||
evel is greater or equal to *0* | el is greater or equal to *0* | |||
- is raised to *2* when ``--all`` option is applied, which means module is c | - is raised to *2* when ``--all`` option is applied, which means module is con | |||
onsidered hidden if its hiding level is greater or equal to *2* | sidered hidden if its hiding level is greater or equal to *2* | |||
.. vim:set tabstop=2 shiftwidth=2 expandtab autoindent: | ||||
End of changes. 84 change blocks. | ||||
311 lines changed or deleted | 306 lines changed or added |