Releases: envmodules/modules
Releases · envmodules/modules
5.5.0
- Init: update
cmd
shell initialization script to correctly defineMODULESHOME
when installation pathname contains dot character. (fix issue #525 with contribution from V-clone) - Init: add completion for
ml
command on Tcsh shell. (fix issue #416 with contribution from Laurent Besson) - Init: fix completion of
mod-to-sh
's options on Bash and Tcsh shells. - Fix modulepath file search when libtclenvmodules is disabled and modulepath contains glob characters.
- Lib: correct libtclenvmodules to retrieve all user groups on Darwin systems when user is member of more than 16 groups.
- Script: output testsuite run progress on
mt
development utility. - Resolve switched-on module prior testing stickiness preservation.
- Contrib: fix versions modulefiles generated when
--enable-versioning
installation option is set. Use--not-req
option onmodule unload
commands to avoid declaring a conflict toward these modules to unload. (fix issue #531) - Add
hide-modulefile
andhide-version
modulerc commands to support modulerc files written for Lmod. - Update
autoinit
sub-command to definemogui
shell function or alias ifmogui-cmd
command is found inPATH
. - Add the
hide_auto_loaded
configuration option to tag automatically loaded moduleshidden-loaded
. These modules will not appear onlist
sub-command output unless--all
option is set. Option is disabled by default and when set, it defines theMODULES_HIDE_AUTO_LOADED
environment variable. - Introduce the
--modulepath
option to thealways-load
,depends-on
,prereq
,prereq-all
andprereq-any
modulefile commands. When this option is set, required module should be located in a path listed in the specified list or in an enabled modulepath matching one path of the list. This information is recorded in loaded environment in__MODULES_LMPREREQPATH
variable. - Add
lsb-release
modulefile command to get certain Linux Standard Base (LSB) information. It accepts to following sub-commands:id
,codename
andrelease
. - Add information logging capabilities controlled by two new configuration options:
logger
which defines the command to use to sent information to the log system andlogged_events
which controls the information sent to logs. logger
configuration option relies on thelogger
command by default. It can be changed at installation time with--with-logger
and--with-logger-opts
options. Whenlogger
is changed withconfig
sub-command, it sets theMODULES_LOGGER
environment variable.logger
can be declared as a locked configuration option inlocked_configs
.logged_events
configuration option is a list of event names separated by colon character. It is empty by default, thus nothing is logged by default. Allowed event names arerequested_cmd
(log module commands directly executed by users),requested_eval
(modulefile evaluations directly asked by users) andauto_eval
(modulefile evaluations automatically triggered). Option value can be changed at installation time with--with-logged-events
option. Whenlogged_events
is changed withconfig
sub-command, it sets theMODULES_LOGGED_EVENTS
environment variable.logged_events
can be declared as a locked configuration option inlocked_configs
.- Add
log
channel to theputs
modulefile command. String message passed toputs log
is sent to thelogger
command. - Doc: update
log-module-command
cookbook recipe with integrated logging feature. - Install: update
configure
script to ignore all--with-*
options if no value is associated to them. - Install: update
configure
script to set option to an empty string if specified with--without-*
argument. Exception is made for--without-icase
which sets option to thenever
value. - Introduce
not:
prefix for extra specifier and variant criteria on module search context. This prefix allows to negate search criteria onExtra match search
mechanism. - Adopt stricter naming rule for variant names. Only characters within the
A-Za-z0-9_-
range are allowed. Also, a variant name cannot start with-
(minus) character and the overall name cannot just be a number. - Allow
+
and~
characters to be part of module name or version specification as long as the string following them is not a valid variant name (e.g.,foo/1.2+8
). (fix issue #527) - In case of an issue external to Modules, do not mention at the end of the error stack trace the web link to report this issue. (fix issue #546)
- When a modulefile performs a
module unload
command that fails due to dependent modules loaded, stop unload evaluation right after this failed command unless--force
option is used. - Exclude sticky modules from the useless requirement unload mechanism as they cannot be unloaded.
- Tag automatically loaded module
auto-loaded
prior evaluation to be able to query this state during modulefile evaluation withmodule-info tags
. - Doc: describe in
module(1)
man page how to initialize Modules in a Ruby script. (fix issue #535) - Add PowerShell Core (
pwsh
) shell support. (fix issue #326 with contribution from Simon Lukas Märtens) - Lib: adapt Modules Tcl extension library to properly load on Tcl 9.
- Doc: describe how to upgrade Modules in
INSTALL
. (fix issue #544) - Set exit code returned by
modulecmd.tcl
script to1
when a modulefile evaluation fails (modulefile does not exist, is buggy, etc). (fix issue #540) - Disable pager when running
modulecmd.tcl
script for script language (python, perl, ruby, tcl, cmake, r and lisp). (fix issue #542) - Update error and warning messages when attempting to unload a module required by another. Distinguish if this module is a requirement of an already loaded or a currently loading module.
- Introduce
conflict_unload
configuration option that controls whether or not conflicting modules and their dependent should be unloaded when loading a module. All kind of conflicts are supported: conflicts defined by already loaded modules, conflict declared by loading module throughconflict
,family
ormodule unload
commands.conflict_unload
also handles the unload of a module that is loaded again but with different variant values or from a different modulepath.conflict_unload
is disabled by default as it changes behaviors of the automated module handling mode. But everyone is encouraged to enable this new option to benefit from an highly automated experience. This option can be changed at installation time with--enable-conflict-unload
. Whenconflict_unload
is changed withconfig
sub-command, it sets theMODULES_CONFLICT_UNLOAD
environment variable. Bothauto_handling
andconflict_unload
options should be enabled to activate Conflict Unload automated behavior. (fix issue #242) - When both
auto_handling
andconflict_unload
options are enabled, all loaded modules matching module specifications set onconflict
ormodule unload
commands are unloaded. If both options are not enabled, only one matching loaded module per specification argument ofmodule unload
is unloaded. (fix issue #215) - When both
auto_handling
andconflict_unload
options are enabled,--force
option set onload
sub-command is taken into account during the Conflict Unload mechanism. For instance, it continues this unload process even if one module unload fails. - Install: installation option
--enable-new-features
is updated to include--enable-conflict-unload
. - Fix detection of already loaded module with variant set. If trying to load same module with compatible variant set, a module is already loaded message is now returned instead of another variant is loaded.
- Correctly report module evaluation error in case during the same execution this module was already evaluated and failed silently during a Requirement Load mechanism.
- Split processing of Dependent Reload (DepRe) modules to treat the DepRe modules consequence of Useless Requirement Unload (UReqUn) modules separately, right before unloading the UReqUn modules. As a result, modules in conflict with UReqUn modules are unloaded right before UReqUn process and reloaded with the other DepRe modules.
- Handle UReqUn process in case of
switch
sub-command after the switch load phase. Unload of these modules were previously occurring at the end of the switch unload phase. Unload of DepRe modules consequence of UReqUn modules is also moved after switch load phase. - Introduce the Useless Requirement Unload (UReqUn) process on
load
sub-command. It eliminates auto loaded modules that were requirements of Conflict Unload modules. In case ofswitch
sub-command, UReqUn modules coming from the switch load phase are handled with UReqUn modules coming from switch unload phase. - Rework handling of DepRe modules that also are UReqUn modules to unload them during the DepRe unload phase instead of during UReqUn process. As a consequence these modules part of both DepRe and UReqUn lists are unloaded prior main module action and prior unload of the other UReqUn modules. The DepRe modules may be also qualified UReqUn even if they are not a dependency of a module unloaded in the current processing.
- Mix unload of Dependent Unload and Dependent Reload modules to ensure they are processed in their reverse loading order. As a result, if a module is part of DepUn process and some of its requirements are part of DepRe process, requirements are unloaded after their dependent modules.
- Skip reload of a Dependent Reload module if found not loadable (either its requirements are not loaded or a conflict is spotted with loaded environment). Reload is attempted only if module is tagged super-sticky or sticky and force mode is disabled. Skipped module is considered Dependent Unload module.
- Reload all Dependent Reload modules after the main load, unload or switch module evaluation rather after...
5.4.0
- Allow to designate module by its full path file name on
module-tag
,module-hide
andmodule-forbid
. (fix issue #485) - Introduce
tag
extra specifier to search modules onavail
,whatis
andpaths
sub-commands based on tags applied. Tag abbreviation may also be used as extra specifier name. - Add ability to specify multiple names on one extra specifier criterion to select modules matching any of these names (e.g.,
env:PATH,LD_LIBRARY_PATH
) - Add ability to specify multiple values on one variant criterion to select modules providing any of these variant values (e.g.,
foo=val1,val2
) - Add the
indesym
element in the allowed value list of thelist_output
andlist_terse_output
configuration options. When set, symbolic versions are reported as independent elements rather along the loaded module they are attached to. - Add the
alias
element in the allowed value list of thelist_output
andlist_terse_output
configuration options. When set, module aliases targeting loaded modules are reported. - Introduce
sticky_purge
configuration option to define behavior when unloading sticky or super-sticky module during apurge
command. Raise anerror
(default) or emit awarning
or besilent
. When set, it defines theMODULES_STICKY_PURGE
environment variable. Default value can be changed with--with-sticky-purge
installation option. (fix issue #502) - Introduce
modulepath-label
modulerc command, which defines label used instead of modulepath directory path inavail
output. - More than one global rc file can now be specified in
MODULERCFILE
or viarcfile
configuration option. - Add the
unique_name_loaded
configuration option to allow, when enabled, only one module loaded per module name. When set, it defines theMODULES_UNIQUE_NAME_LOADED
environment variable. Default value (disabled) can be changed with--enable-unique-name-loaded
installation option. - Add
evaluation-errors
design notes. - Add
abort_on_error
configuration option to define module sub-commands that should abort when a module evaluation fails instead of continuing their evaluation sequence. When configuration option is set, it defines theMODULES_ABORT_ON_ERROR
environment variable. Default value can be changed with--with-abort-on-error
installation option. - Add support for
abort_on_error
evaluation behavior onload
,mod-to-sh
andtry-load
sub-commands. - Report issue on modulefile when it fails to load an erroneous requirement through
module try-load
modulefile command. - Doc/Install: modernize modulefile code example in documentation and installed example modulefiles.
- Vim: correctly highlight modulefile commands containing a dash character.
- Update requirement load error report to place it only under the message block of the module requiring this load. This change helps to better understand the chronology of actions and from where an error occurs.
- Do not report requirement load error when an alternative requirement module is found and loaded afterward. (fix issue #509)
- Do not render an error exit code on multi-module option requirement when one module option fails to load but another does. (fix issue #510)
- Do not report module not found error when loading a requirement if an alternative requirement module is found and loaded afterward. (fix issue #511)
- Add
--glob
option toremove-path
modulefile command in order to remove any values in variable matching a glob-style pattern. - Record module specification on which loaded module stickiness applies in
__MODULES_LMSTICKYRULE
environment variable. It helps to determine if stickiness is satisfied when changing loaded modules. Which was not working correctly for virtual modules. (fix issue #506) - Silently ignore cache file when it requires a greater Modules version. (fix issue #515)
- Doc: move
modulefile(5)
man page in section 5. (fix issue #518 with contribution from Laurent Chardon) - Add
source_cache
configuration option to cache files evaluated in modulefiles withsource
Tcl command. Files sourced multiple times are only read once when option is enabled.source_cache
is disabled by default. When set, it defines theMODULES_SOURCE_CACHE
environment variable. Default value can be changed with--enable-source-cache
installation option. - Add support for
abort_on_error
evaluation behavior onunload
sub-command. - A modulefile is unloaded anyway even if an evaluation error occurs when
--force
option is used onml
,purge
,reload
,reset
,restore
,stash
,stashpop
,switch
andunload
sub-commands. To forbid the unload of a modulefile it is recommended to tag itsuper-sticky
withmodule-tag
command. - Disable
abort_on_error
when--force
option is used. In this case, behavior is to continue when an error occurs. - Add support for
abort_on_error
evaluation behavior onml
command. Abort on error behavior is on by default withml
. Removing it fromabort_on_error
's value enables the continue on error behavior. - Add support for
abort_on_error
evaluation behavior onreload
command. Abort on error behavior is on by default withreload
. Removing it fromabort_on_error
's value enables the continue on error behavior. - Add support for
abort_on_error
evaluation behavior onpurge
sub-command. - Add support for
abort_on_error
evaluation behavior on unload phase ofswitch
command. Abort on error behavior is on by default there. Removingswitch_unload
fromabort_on_error
's value enables the continue on error behavior. - Add support for
abort_on_error
evaluation behavior onswitch
command. Abort on error behavior is applied ifswitch
value is set inabort_on_error
and either switch unload or switch load phase fails. - Install: installation option
--enable-new-features
is updated to enable abort on error behavior onload
andswitch
sub-commands. - Lib: slightly adapt code of Modules Tcl extension library to properly build against Tcl 9.0.
- Adapt alias unset shell code for sh-kind shells to avoid errors when alias to unset is not defined.
- Adapt function unset shell code for sh-kind shells to avoid errors when function to unset is not defined.
- No output of unload of switched-off failed and load of switched-on failed error messages when
module switch
command is run from a modulefile. - No Switching block message report when
module switch
command is run from a modulefile. - Report all error and warning messages locally under Loading or Unloading block message rather reporting some of them under the block message of the main action. These errors and warnings are thus reported where they occur.
- Report switched-on load failure as error rather warning.
- Report switched-on module locating or access issues only once.
- Report conflict error message when it occurs rather than after modulefile evaluation.
- Update conflict error message to report all conflicting modules name and version rather conflict module specification.
- Fix conflict error check to avoid reporting both unloading conflict failed and conflict is loading messages.
- Raise an error and stop modulefile evaluation when
module switch
command fails unless if--force
option is set. - When a useless requirement unload fails, do not increase error count as this failure is reported as a warning and main unload process is not affected.
- Path element equals to delimiter character is allowed on
append-path
andprepend-path
modulefile commands. (fix issue #522) - Add
bash-eval
shell mode tosource-sh
modulefile command andsh-to-mod
sub-command. With this mode, the generated output of the bash shell script is evaluated to get the environment changes instead of sourcing this script. (fix issue #519) - Add
--ignore
option tosource-sh
modulefile command to define shell elements changed by shell script that should be ignored. (fix issue #503) - Init: Improve Tcsh shell completion script to complete against existing files when pattern starts with
/
,.
or~/
. (fix issue #523) - Add
--user
option tomodule-forbid
,module-hide
andmodule-tag
modulefile commands to forbid, hide or tag only if user is listed in the value of this new option. (fix issue #520 with contribution from Jérémy Déchard) - Add
--group
option tomodule-forbid
,module-hide
andmodule-tag
modulefile commands to forbid, hide or tag only if one user's group is listed in the value of this new option. (fix issue #520 with contribution from Jérémy Déchard)
5.3.1
- Fix additional ShellCheck warning reports over sh and bash shell scripts.
- Install: distribute
ChangeLog
as a zipped file to reduce installation size. As a consequence,gzip
becomes a requirement when building Modules from git repository. - Install: adapt RPM spec file to install module initialization script for fish as configuration snippet for this shell.
- Fix extra specifier search to evaluate module matching requirement query. (fix issue #494)
- Fix extra specifier requirement search when module searched is also defining a requirement and is the sole module to define it. (fix issue #495)
- Script: update
pre-commit
andcommit-msg
git hook scripts to use Hunspell as spell checker instead of Aspell. - Fix unaligned
list
output when 100 or more modules are loaded. (fix issue #496) - Fix extra specifier search when an identical module name and version is available in several modulepaths. (fix issue #497)
- Do not match module commands with
--not-req
option set onrequire
orincompat
extra specifier queries. (fix issue #498) - When one variant is specified multiple times on search context (
avail
,paths
orwhatis
sub-commands), available modules returned are those providing all variant values set. (fix issue #499) - Add the
indesym
element in the allowed value list of theavail_output
andavail_terse_output
configuration options. When set, symbolic versions are reported as independent elements rather along the module or directory they are attached to. - Init: fix completion scripts to report module symbolic versions and aliases among available modules. (fix issue #500)
5.3.0
- Add
module-cache
design notes. - Add
cachebuild
sub-command to create cache for modulepaths enabled or specified on the command line. Cache files are named.modulecache
and stored at the root of modulepath directories. - Add
cacheclear
sub-command to delete cache file in all enabled modulepaths. - Use cache file if available rather search the content of modulepath directories when searching for modules (e.g., during
avail
,load
,display
, etc). - Script: add cache-enabled version of avail, whatis and load tests on
mb
benchmark utility. - Add the
ignore_cache
configuration option to ignore module cache file. Option is disabled by default and when set, it definesMODULES_IGNORE_CACHE
environment variable. - Add
--ignore-cache
command-line switch to enableignore_cache
configuration option and ignore module cache file for current execution. - Add
cache_buffer_bytes
configuration option to define buffer size when reading or writing cache files. Option is set to32768
by default. When set it definesMODULES_CACHE_BUFFER_BYTES
environment variable. - Add
cache_expiry_secs
configuration option that defines the number of seconds a cache file is considered valid after being generated. Option is set to0
by default which means cache files never expire. When option is set it definesMODULES_CACHE_EXPIRY_SECS
environment variable. - Modulefiles and directories that are not accessible by everyone are not recorded in cache file. A limited access directive is recorded instead to indicate these modulefiles have to be tested and directories have to be walked down to determine what the running user can access.
- Doc: update
reduce-io-load
cookbook recipe with module cache description. - Correctly apply extra tag set when loading a module whose variant has value automatically set. (fix issue #484)
- Catch collection directory creation error and report appropriate message. (fix issue #482)
- Fix
source-sh
andsh-to-mod
shell alias translation when used with new fish shell version (3.6). - Install: allow to build Modules from a short-depth git repository. (fix issue #486)
- Install: ensure git log format is not influenced by user's configuration in
gitlog2changelog.py
. (fix issue #487) - Init: fix bash shell completion script to be able to complete full name of available modules. (fix issue #490)
- Install: move licence name to SPDX format in RPM spec file.
- Doc: add
extra-match-search
design notes. - Introduce extra match search mechanism that evaluates available modulefiles during a module search to find those matching an extra query on a variant value, a dependency or an environment variable definition. During this specific evaluation, modulefiles are interpreted in scan mode.
scan
string is returned bymodule-info mode
when queried during a scan modulefile evaluation.- Add the
variant
element in the allowed value list of theavail_output
andavail_terse_output
configuration options. When set, variants and their possible values are reported along the module they are associated to onavail
command output. Adding variant information to this output activates the extra match search mechanism that scan modulefiles to find variants they define. (fix issue #407) - Apply graphic rendition of default version (
de
SGR key) to default variant value on eitherlist
andavail
command output. - Apply either loaded or auto-loaded graphic rendition to the loaded variant value on
avail
command output. - Update
avail
,paths
andwhatis
sub-commands to take into account variant set in module specification. Available modules are filtered with extra match search mechanism to only return those matching the variant specification. - Update
avail
,paths
andwhatis
sub-commands to accept module specification with just a variant set (no module name and version). Available modules are filtered with extra match search mechanism to only return those matching the variant specification. - Update
list
sub-command to accept module specification with just a variant set (no module name and version). Loaded modules are filtered to only return those matching the variant specification. - Highlight searched variant name and value (
hi
SGR key) on eitherlist
andavail
command output. - Doc: add
Extra match search
description inmodule(1)
man page. - Introduce extra specifiers to query content of modulefiles. Extra specifiers can be specified with element:name syntax as part of module specification on module search commands (
avail
,paths
andwhatis
). For instance with themodule avail append-path:PATH
command, all modulefiles defining theappend-path
command onPATH
environment variable are returned. - Add
variant
extra specifier to query modulefile variant definitions. (fix issue #408) - Add
setenv
,unsetenv
,append-path
,prepend-path
,remove-path
andpushenv
extra specifiers to query modulefile environment variable definitions. The extra specifier aliasenvvar
may also be used to query any of these modulefile commands. - Add
complete
anduncomplete
extra specifiers to query modulefile shell completion definitions. - Add
set-alias
andunset-alias
extra specifiers to query modulefile shell alias definitions. - Add
set-function
andunset-function
extra specifiers to query modulefile shell function definitions. - Add
chdir
extra specifier to query modulefile current working directory change definitions. - Add
family
extra specifier to query modulefile family definitions. - Add
prereq
,prereq-any
,prereq-all
,depends-on
,always-load
,load
,load-any
,try-load
,switch
andswitch-on
extra specifiers to query modulefile requirement definitions. The extra specifier aliasrequire
may also be used to query any of these modulefile commands. - Add
conflict
,unload
,switch
andswitch-off
extra specifiers to query modulefile incompatibility definitions. The extra specifier aliasincompat
may also be used to query any of these modulefile commands. - Requirement and incompatibility extra specifiers accept module specification as value.
- Doc: add
Extra specifier
description inmodule(1)
man page. - Mark loaded modules as qualified for refresh evaluation when they send content to
stdout
orprestdout
channels withputs
modulefile command. (fix issue #488) - Add the
ignore_user_rc
configuration option to skip evaluation of user-specific module rc file. Option is disabled by default and when set, it definesMODULES_IGNORE_USER_RC
environment variable. - Add
--ignore-user-rc
command-line switch to enableignore_user_rc
configuration option and ignore user-specific module rc file for current execution. - Add the
variantifspec
element in the allowed value list of theavail_output
andavail_terse_output
configuration options. Set this new element in the default value list of both options. When set and if a variant is specified in search query, variants and their possible values are reported along the module they are associated to onavail
command output. - Accept value starting with
+
or-
characters on--output
/-o
command-line switches to indicate value should respectively be appended to or subtracted from current configuration option value. - Accept value starting with
+
or-
characters onavail_output
,avail_terse_output
,list_output
,list_terse_output
,colors
,protected_envvars
,shells_with_ksh_fpath
,tag_abbrev
,tag_color_name
,variant_shortcut
configuration options to indicate value should respectively be appended to or subtracted from current configuration option value. - Fix
switch
sub-command not to unload sticky module when switched-on module does not exist. (fix issue #492)
5.2.0
- Introduce the
--optional
option onprereq
,prereq-all
,depends-on
andalways-load
modulefile commands. Expressed optional dependency is considered satisfied even if modulefile is not loaded. If optional requirement is loaded afterward, dependent module is automatically reloaded, unless if theauto_handling
configuration option is disabled. - A dependency expressed in modulefile with
module try-load<module>
command is considered optional. Dependent module is automatically reloaded if the optional requirement is loaded afterward, unless if theauto_handling
configuration option is disabled. - Raise error in case of unknown or misplaced option set on
prereq
,prereq-all
,depends-on
oralways-load
modulefile commands. - Add the
--timer
command-line switch to report the total execution time of themodule
command. Also report the execution time of every internal procedure calls when mixed with--debug
option. - Init: move
PATH
setup (to locate Modules' binaries location) from shell initialization scripts to theautoinit
sub-command. (fix issue #462) - Init: move
MANPATH
setup (to locate Modules' man-pages) from shell initialization scripts to theautoinit
sub-command. (fix issue #462) - Init: move shell completion setup from shell initialization scripts to the
autoinit
sub-command. (fix issue #462) - Enclose installation path references in shell code produced by
autoinit
, in initialization scripts and Makefiles to guaranty correct evaluation in case these paths contain a space character. Note that the quarantine mechanism is not compatible with such installation paths. - Fix
source-sh
andsh-to-mod
when used with fish shell script ifregex-easyesc
fish option is enabled. (fix issue #463) - Add the
protected_envvars
configuration option to define a list of environment variables that cannot be modified by modulefile commands. When set,protected_envvars
definesMODULES_PROTECTED_ENVVARS
environment variable. (fix issue #429 with contribution from Adrien Cotte) - Introduce the
lint
sub-command to statically analyze syntax of modulefiles, modulerc and global/user rc. (fix issue #451) - Add the
tcl_linter
configuration option to define the program used to analyze files withlint
sub-command. This option is set tonagelfar.tcl
by default. When changed from default value, theMODULES_TCL_LINTER
environment variable is defined. Default value can be changed with--with-tcl-linter
and--with-tcl-linter-opts
installation options. - Add the
--enable-nagelfar-addons
installation option (enabled by default) to install specific syntax databases and plugins to lint modulefiles, modulerc and global/user rc with Nagelfar. These files are installed in the directory designated by the--nagelfardatadir
(DATAROOTDIR/nagelfar
by default). - Doc: add
lint-sub-command
design notes. - Install: use
install
command rathercp
ormkdir
to install Modules and guaranty consistent permission modes on deployed files. - Also unset
pushenv
value stacks onclear
sub-command. - Doc: add
mod-to-sh-sub-command
design notes. - Introduce the
mod-to-sh
sub-command to translate designated modulefile(s) into code for specified shell. (fix issue #447) - Make
source
sub-command accepts modulefile specification as argument. If argument does not correspond to a file path, search it among available modulefiles. (fix issue #424) - Doc: clarify
set-alias
only define shell alias and not shell function. - Add the ability to filter the list of collections returned by
savelist
sub-command. Filtering pattern is matched in a case insensitive manner by default. - Add support for
--starts-with
and--contains
options onsavelist
sub-command. - Highlight all search patterns on
list
sub-command output instead of only the first one.. - Highlight all search patterns on
savelist
sub-command output. - Add support for
--all
option onsavelist
sub-command not to limit result to the collection matching currently definedcollection_target
. - Doc: add
Shell support
section inmodulefile(4)
man page to describe how shells support the different kind of environment changes that can be defined in modulefiles. - Record during
autoinit
sub-command the initial environment state in__MODULES_LMINIT
. Enabled modulepaths and loaded modulefiles throughmodulespath
andinitrc
initialization configuration files are recorded in this new environment variable. - Add
reset
sub-command to restore initial environment. It takes recorded environment in__MODULES_LMINIT
and restores it. - Initial environment is restored when collection name specified on
restore
sub-command equals__init__
. - When no argument is provided to
restore
sub-command and if default collection does not exist, initial environment is restored. - Initial environment content is displayed when collection name specified on
saveshow
sub-command equals__init__
. - When no argument is provided to
saveshow
sub-command and if default collection does not exist, initial environment content is displayed. - Add
reset_target_state
configuration option to determine behavior ofreset
sub-command. When set to__init__
(default value) initial environment is restored. When set to__purge__
, apurge
sub-command is performed. Any other value, corresponds to the name of a collection torestore
. When set,reset_target_state
definesMODULES_RESET_TARGET_STATE
environment variable. - Doc: add
initial-environment
design notes. - Unload sticky modules on
restore
andreset
sub-commands to fully set environment in collection or initial state. - Testsuite: add lint testsuite to validate syntax of shell and Tcl scripts of this project. This testsuite can be invoked with
make testlint
orscript/mt lint
. sh, bash and ksh scripts are checked with ShellCheck tool and tcl scripts are checked with Nagelfar. - Update
modulecmd.tcl
code and add Nagelfar inline comments to fix linter reports. - Script: add usage message and support for
-h
/--help
option onmrel
,mpub
,mt
,mtreview
,nglfar2ccov
,mb
andmlprof
development utilities. - Doc: describe
script/mt
andscript/mb
utilities inCONTRIBUTING
guide. - Fix ShellCheck error, warning and info reports over all sh, bash and ksh shell scripts. (fix issue #470 with contribution from Lukáš Zaoral)
- Init: update profile script for sh-like shells to only source sh or bash initialization script when BASH environment variable is found set. (fix issue #473)
- Add
stash
sub-command to save current environment and restore initial one. - Add
stashpop
sub-command to restore stash collection then delete this collection file. - Add
stashrm
sub-command to delete stash collection file. - Add
stashshow
sub-command to display stash collection file. - Add
stashclear
sub-command to delete all stash collection files. - Add
stashlist
sub-command to list all stash collection files. - Update
savelist
sub-command to filter out stash collections unless if--all
option is set. - Doc: ensure current user environment does not break logging system in
log-module-command
recipe. (fix issue #475) - Rename the default git branch from master to main to use inclusive terminology.
- Mark loaded modules that could benefit from a refresh evaluation in the
__MODULES_LMREFRESH
environment variable. - Optimize
refresh
sub-command to only evaluate loaded modules that defines volatile environment changes (shell completion, alias or function). (fix issue #477) - Add
modulefile_extra_cmds
hook variable that could be defined insiteconfig.tcl
file to define specific commands in modulefile interpreter context.modulefile_extra_cmds
is a list of command name and relative procedure pairs. (fix issue #286) - Add
modulefile_extra_vars
hook variable that could be defined insiteconfig.tcl
file to define specific variables in modulefile interpreter context.modulefile_extra_vars
is a list of variable name and value pairs. (fix issue #286) - Add
modulerc_extra_cmds
hook variable that could be defined insiteconfig.tcl
file to define specific commands in modulerc interpreter context.modulerc_extra_cmds
is a list of command name and relative procedure pairs. (fix issue #286) - Add
modulerc_extra_vars
hook variable that could be defined insiteconfig.tcl
file to define specific variables in modulerc interpreter context.modulerc_extra_vars
is a list of variable name and value pairs. (fix issue #286) - Doc: Add
Site-specific configuration
section inmodule(1)
man page. - Doc: extend
Collections
section with examples inmodule(1)
man page.
5.1.1
- Install: add
rpmlint
rc configuration file to filter false positive warning messages. - Install: better guess
libdir64
andlibdir32
directory locations whenlibdir
does not end with 64 but contains 64. - Install: update RPM spec file to move libtclenvmodules in an environment-modules directory under
libdir
. - Fix rendering of loading or unloading module designation when configured color palette does not set the
hi
color key. (fix issue #455) - Remove the already loaded message displayed when verbosity level is higher or equal to
verbose2
if new tags are applied to the loaded module. (fix issue #456) - Report a global known error when current working directory cannot be retrieved due to the removal of this directory. (fix issue #457)
- Update tags set through
prereq
command on all already loaded requirements. (fix issue #459) - Update module designation with the tags set by reloading dependent module. (fix issue #460)
- Install: include the
lib/config.guess
andlib/config.sub
scripts in distribution tarball if generated byautoreconf
. - Install: call
git
command inMakefile
only if the definitions ofversion.inc
need to get built or refreshed.
5.1.0
- Allow to declare
variant
with no list of accepted value. Such variant accepts any value specified. (fix issue #405) - Add the
redirect_output
configuration option to control on sh, bash, ksh, zsh and fish shells whether or not the output of themodule
function should be redirected from stderr to stdout. When set,redirect_output
definesMODULES_REDIRECT_OUTPUT
environment variable. - Introduce the
--redirect
/--no-redirect
command-line switches to supersede the value of theredirect_output
configuration option on sh, bash, ksh, zsh and fish shells. (fix issue #410) - Add the
--return-value
option to thegetenv
andgetvariant
modulefile commands to force to return the value of respectively designated environment variable or variant when modulefile is evaluated in display mode. (fix issue #422) - Introduce the
state
sub-command to display Modules states. - Add the
supported_shells
state to get the list of the shells that are supported bymodulecmd.tcl
through thestate
sub-command . (fix issue #426) - Filter out the variables intended for Modules private usage when processing the environment changes made by a script evaluated by
sh-to-mod
sub-command orsource-sh
modulefile command. (fix issue #427) - Doc: add
control-mode-behaviors
design notes. - Doc: add
add-new-config-option
design notes. - Set a Code of conduct for the project and its community based on the widely adopted Contributor Covenant.
- Doc: add
add-new-sub-command
design notes. - Add the
--remove-on-unload
option to theremove-path
to also remove value when modulefile is unloaded. - Raise error when an unknown option is set on
module use
ormodule unuse
modulefile command. - Rework emitted debug messages to remove obvious ones and systematically report each modulefile command processed with their arguments.
- Add the
--append-on-unload
option to theremove-path
andmodule unuse
modulefile commands to append back when modulefile is unloaded the value removed at load time or a specific value set after this option. - Add the
--prepend-on-unload
option to theremove-path
andmodule unuse
modulefile commands to prepend back when modulefile is unloaded the value removed at load time or a specific value set after this option. - Add the
--noop-on-unload
option to theunsetenv
,remove-path
andmodule unuse
modulefile commands to perform no operation when modulefile is unloaded. - Add the
--unset-on-unload
option to theunsetenv
modulefile command to also unset environment variable when modulefile is unloaded. - Add the
--set-if-undef
option to thesetenv
modulefile command to set environment variable when modulefile is loaded only this variable is not yet defined. - Install: add the
--with-bashcompletiondir
,--with-fishcompletiondir
and--with-zshcompletiondir
installation options to install shell completion scripts in their system-wide location. (fix issue #428) - Doc: add
lmod-tcl-modulefile-compat
design notes. - Introduce the
add-property
,remove-property
andextensions
modulefile commands for compatibility with Lmod Tcl modulefiles. These commands are evaluated as a no-operation command. - Introduce the
prereq-any
modulefile command for compatibility with Lmod Tcl modulefiles.prereq-any
is an alias ofprereq
command. - Produce a clear error message when wrong number of argument is received by
prereq
command. - Doc: describe
ModulesVersion
in Modules Variables section inmodulefile(4)
man page. - Set
ModuleVersion
as an alias overModulesVersion
modulefile variable for compatibility with Lmod Tcl modulefiles. - Doc: describe
reportError
andreportWarning
modulefile commands. - Add the
require-fullname
modulefile command for compatibility with Lmod Tcl modulefiles. This command aborts modulefile load evaluation if modulefile's name is not fully specified. - Add the
prereq-all
modulefile command, alias over theprereq
command which acts as an AND operation when multiple modulefiles are specified. - Add the
depends-on
modulefile command, alias over theprereq-all
command for compatibility with Lmod Tcl modulefiles. - Introduce the
keep-loaded
module tag that avoids an auto-loaded module to get automatically unloaded when its dependent modules are getting unloaded. Update defaulttag_abbrev
configuration option to add an abbreviation for the new tag (kL
) and default light and dark color palettes. - Add the
always-load
modulefile command for compatibility with Lmod Tcl modulefiles. This command loads designated modulefile and applies thekeep-loaded
tag to it. - Add the
load-any
sub-command andmodule load-any
modulefile command for compatibility with Lmod Tcl modulefiles. This command loads one modulefile from specified list. - Add support for
--not-req
option onmodule try-load
andmodule load-any
modulefile commands. - Doc: add
magic-cookie-check
design notes. - Add the
mcookie_check
configuration option that control whether the magic cookie at the start of modulefile (i.e.,#%Module
file signature) need to get checked or not. When set toeval
the number of file checks is significantly reduced when walking through modulepaths to search for modulefiles. Default value for this option is overridden by theMODULES_MCOOKIE_CHECK
environment variable. - Doc: describe
puts
Tcl command and its specific feature when used in modulefile. - Create the
prestdout
channel forputs
modulefile command to be able to send content that will be evaluated in current shell session prior any other content. (fix issue #432) - Add the
family
modulefile command for compatibility with Lmod Tcl modulefiles. This command defines family name as a module alias over currently loading module and express a conflict over this name to ensure only one member of a family can be loaded in user environment.family
also defines theMODULES_FAMILY_<NAME>
andLMOD_FAMILY_<NAME>
environment variables. - Doc: add
reduce-io-load
cookbook recipe. - Add the ability to filter the list of loaded modules returned by
list
sub-command. Filtering pattern could be part of module name, symbolic version or alias and is matched in a case insensitive manner by default. It could also leverage theAdvanced module version specifiers
syntax. - Add support for
--starts-with
and--contains
options onlist
sub-command. - Doc: add
shell-completion
design notes. - Introduce
complete
anduncomplete
modulefile commands to respectively enable and disable shell completion for a given command name. bash, tcsh and fish shells are supported. - Track shell completion changes of bash, tcsh and fish shell scripts on
sh-to-mod
sub-command andsource-sh
modulefile command. - Fix typos found in code, tests and documentation. (contribution from Dimitri Papadopoulos Orfanos)
- Update the
sh-to-mod
andsource-sh
mechanisms to support nested function definition on fish shell. - Fix the
sh-to-mod
andsource-sh
mechanisms to correctly detect functions with a_
character in their name on fish shell. - Update the
module
shell function definition for sh-kind shell to enclose the output generated bymodulecmd.tcl
in quotes in order to pass it to the eval command. This change fixes definition of shell function, especially when coming from shell script evaluation over thesh-to-mod
andsource-sh
mechanisms. (fix issue #434) - Fix csh shell alias detection on
sh-to-mod
andsource-sh
mechanisms when enclosed in parenthesis. (fix issue #434) - Include for fish shell environment analysis on
sh-to-mod
andsource-sh
mechanisms the private functions defined by evaluated script, in order to catch all definitions that may be useful for shell completion. - Fix the
sh-to-mod
andsource-sh
mechanisms to correctly detect empty function on fish shell. - Script: add
pre-commit
git hook script to help verify if commits are free of misspellings (with codespell tool) and trailing spaces. - Doc: fix typos found in documentation with Aspell utility.
- Doc: describe
Dependencies between modulefiles
inmodulefile(4)
man page. (fix issues #431 and #433) - Script: update
pre-commit
git hook script to spell check documentation files with Aspell tool. - Script: add
commit-msg
git hook script to spell check commit message with Aspell tool. - Doc: clarify that
#%Module
is a file signature also called Modules magic cookie. - Doc: update the
module ENVIRONMENT
section inmodule(1)
man page to provide for each Modules environment variable the name of the configuration option that could be used to set the variable with theconfig
sub-command. - Doc: clarify in
module(1)
man page thatMODULES_SET_SHELL_STARTUP
,MODULES_SHELLS_WITH_KSH_FPATH
andMODULES_WA_277
should be set prior Modules initialization to get taken into account. - Doc: update
INSTALL
document to provide the name of the configuration option linked the installation options. - Doc: describe in
module(1)
man page the default value of each configuration option and linked installation option and command-line switches. - Doc: add Configuration options section in
INSTALL
document with a table summarizing all configuration options and their relative installation options and environment variables. - Add the
pushenv
modulefile command for compatibility with Lmod Tcl modulefiles. This command sets designated environment variable with specified value and save the previous value set to restore it when the modulefile is unloaded. Previous values are saved in a__MODULES_PUSHENV_<VAR>
environment variable. - Doc: add
Compatibility with Lmod Tcl modulefile
section inmodulefile(4)
man page. - Update defini...
5.0.1
- Doc: add How to preserve my loaded environment when running screen entry in FAQ.
- Fix the advanced version specifier resolution when the
extended_default
option is off andicase
option is on when resolving version list specification. (fix issue #411) - Doc: improve the Log module command cookbook to rely on the
trace
Tcl command to track every modulefile evaluation and module/ml procedure calls. (fix issue #412) - Doc: fix missing space between list entries in
variants
design doc. (fix issue #413) - Correctly detect tags set on loaded modules when refreshing them.
- Set the
__MODULES_AUTOINIT_INPROGRESS
environment variable when running theautoinit
sub-command and quit autoinit process if this variable is found defined and equal to 1 when starting it. Ensure this way that an autoinit process will not be triggered indefinitely by itself when theset_shell_startup
option is enabled and some module loaded at initialization time relies on the execution of a bash script. (fix issue #414) - Remove warning message when unloading a
prepend-path
orappend-path
modulefile command with--duplicates
option set. (fix issue #421) - Clarify the module sub-commands that are allowed to be used within a modulefile. (fix issue #423)
- Install: set in the module magic cookie of the
initrc
configuration file installed by default the version of Modules required to evaluate this file. - Doc: fix documentation of
getenv
modulefile command to describe that an empty string is now returned when designated environment variable is not defined and no default value to return is specified.
5.0.0
- Remove deprecated
createmodule.sh
andcreatemodule.py
tools as shell script to modulefile conversion is now achieved with thesh-to-mod
sub-command. - Remove mention of the
init*
sub-commands in module usage message to put focus on the collection handling sub-commands. - Do not declare anymore the
chdir
,module
,module-trace
,module-verbosity
,module-user
andmodule-log
commands under the modulerc Tcl interpreter as no-op commands. A clear error message is obtained if these commands are still used in modulerc files instead of silently ignoring them. - Return by default an empty string rather
_UNDEFINED_
ongetenv
modulefile command if passed environment variable is not defined. - Align empty directory name error message obtained on
use
sub-command with message obtained when module or collection name is empty. - Accept non-existent modulepath on
use
sub-command. - Install: installation option
--enable-auto-handling
is set on by default which enables the automated module handling mode (seeMODULES_AUTO_HANDLING
). - Install: installation option
--enable-extended-default
is set on by default which allows partial module version specification (seeMODULES_EXTENDED_DEFAULT
). - Install: installation option
--enable-advanced-version-spec
is set on by default which activates theAdvanced module version specifiers
- Install: installation option
--enable-color
is set on by default which enables theauto
output color mode (seeMODULES_COLOR
). - Install: installation option
--with-icase
is set tosearch
by default to activate case insensitive match on search contexts (seeMODULES_ICASE
). - Install: installation option
--enable-new-features
has been reset following major version change as all the options it implied are now enabled by default. - Install: installation option
--enable-set-shell-startup
is set off by default but could be enabled once installed through theinitrc
configuration file. - Install: installation option
--with-initconf-in
is set toetcdir
by default to locate configuration files in the directory designated by the--etcdir
option. Therefore the initialization configuration file is namedinitrc
in this directory, and the modulepath-specific configuration file is namedmodulespath
. - Only look at configuration files found in the location designated by the
--etcdir
or--initdir
option (depending on the value of--with-initconf-in
option). Configuration files were previously searched in both locations. - Install: remove installation option
--enable-compat-version
. Compatiblity version co-installation is discontinued.switchml
shell function andMODULES_USE_COMPAT_VERSION
are thus removed as well. - Testsuite: introduce the non-regression quick test mode. When the
QUICKTEST
environment variable is set to1
, only the main tests from the non-regression testsuite are run. When first argument of themt
script isquick
, tests are run in quick mode. - Install: run non-regression testsuite in quick mode in RPM spec file.
- Rename the environment variables that are used by Modules to track loaded environment state (variables whose name starts with
MODULES_LM
). A__
prefix is added to the name of these variables to indicate that they are intended for internal use only. - Rename the environment variables used to indirectly pass to
modulecmd.tcl
the value of variables set in quarantine (variables whose name finishes with_modquar
). A__MODULES_QUAR_<VAR>
prefix is applied to the name of these variables instead of the_modquar
suffix to indicate they are intended for Modules internal use of only. - Update Tcl requirement to version 8.5 as Tcl 8.4 is deprecated since a long time and this version is not available anymore on recent OS distributions. Update internal code of
modulecmd.tcl
to take benefit from the features brought by Tcl 8.5. - Split source code in several Tcl files hosted in
tcl
directory. When building Modules, the Tcl files are concatenated to make themodulecmd.tcl
script. - Record
auto-loaded
tag of loaded modules in__MODULES_LMTAG
environment variable rather set a specific entry for module in the__MODULES_LMNOTUASKED
environment variable. - Rename the environment variables used by the reference counting mechanism of path-like environment variables. A
__MODULES_SHARE_<VAR>
prefix is applied to the name of these variables instead of the_modshare
suffix to clearly indicate they are intended for Modules internal use of only. - Reference counting mechanism is not anymore applied to the Modules-specific path variables (like
LOADEDMODULES
). As a result no__MODULES_SHARE_<VAR>
variable is set in user environment for these variables. Exception is made forMODULEPATH
environment variable where the mechanism still applies. - When an element is added to a path-like variable through the
append-path
orprepend-path
modulefile commands, add this element to the associated reference counter variable (named__MODULES_SHARE_<VAR>
) only when this element is added multiple times to the path-like variable. When an element is removed from a path-like variable, this element is removed from the reference counter variable when its counter is equal to 1. - When the
use
andunuse
module sub-commands are not called during a modulefile evaluation, the reference counter associated with each entry inMODULEPATH
environment variable is ignored. In such context, amodule use
will not increase the reference counter of a path entry already defined and amodule unuse
will remove specified path whatever its reference counter value. - When the
append-path
,prepend-path
andremove-path
module sub-commands are not called during a modulefile evaluation, the reference counter associated with each entry in targeted environment variable is ignored. In such context, amodule append-path/prepend-path
will not increase the reference counter of a path entry already defined and amodule remove-path
will remove specified path whatever its reference counter value. - Fix
unuse
sub-command when sereval modulepaths are specified as a single argument (i.e.,/path/to/dir1:/path/to/dir2
). Enabled modulepaths were not correctly detected when specified this way. - Doc: clarify that an already defined path is not added again or moved when passed to the
use
sub-command or theappend-path/prepend-path
modulefile commands. (fix issue #60) - Change the
refresh
sub-command to evaluate all loaded modulefiles and re-apply the non-persistent environment changes they define (i.e., shell aliases and functions). With this change therefresh
sub-command is restored to the behavior it had on Modules version 3.2. - Evaluate the modulefile commands resulting from a
source-sh
command through the current modulefile Tcl interpreter in order to evaluate them according to the current modulefile evaluation mode. - When initializing Modules, refresh the loaded modules in case some user environment is already configured. This is especially useful when starting a sub-shell session as it ensures that the loaded environment in parent shell is correctly inherited, as the
refresh
sub-command re-applies the non-persistent environment configuration (i.e., shell alias and function that are not exported to the sub-shell). (fix issue #86) - Init: add example code in default
initrc
, the initialization script of Modules, to either restore user's default collection if it exists or load a predefined module list at the end of the initialization process. - When initializing Modules, evaluate the
initrc
configuration file in addition to the themodulespath
configuration file and not instead of this file.initrc
is evaluated aftermodulespath
file. - When the installation option
--enable-modulespath
is set, the list of modulepath to enable by default is now only defined in themodulespath
configuration file and not anymore in theinitrc
configuration file. - No error is raised when evaluating in
display
mode a modulefile without a value specified for thevariant
it defines. This change helps to learn all the variant a modulefile defines. As a result, the unspecified variant is not instantiated in theModuleVariant
array variable. (fix issue #406) - When running the
unsetenv
modulefile command on an unload evaluation, do not unset designated environment variable if no value to restore is provided. - Fix
unsetenv
to distinguish between being called on a unload evaluation without a value to restore or with an empty string value to restore. - Make
system
modulefile command available from a modulerc evaluation context whatever the underlying module evaluation mode. - Make
is-used
modulefile command available from a modulerc evaluation context. - Remove internal state
tcl_version_lt85
as Tcl 8.5+ is now a requirement. - Forbid use of
module source<source>
command in modulefile or in an initialization rc file, thesource
Tcl command should be used instead.source
sub-command should only be called from the command-line. - Report the modules loading and unloading during the
module
command initialization (i.e., during the evaluation of theinitrc
configuration file). These report messages are disabled when theverbosity
configuration option is set toconcise
orsilent
. - During a module
restore
orsource
, only report the module load and unload directly triggered by these sub-commands. Load and unload triggered by other modules are reported through the automated module handling messages of the main modules. - Enforce use of the module magic cookie (i.e.,
#%Module
) at the start of global or user rc files,initrc
configuration file or any scriptfile passed for evaluation to thesource
sub-command. These files are not evaluated and an error is produced if the magic cookie is missing or if the optional version number placed after the cookie string...
5.0.0-alpha
- Remove deprecated
createmodule.sh
andcreatemodule.py
tools as shell script to modulefile conversion is now achieved with thesh-to-mod
sub-command. - Remove mention of the
init*
sub-commands in module usage message to put focus on the collection handling sub-commands. - Do not declare anymore the
chdir
,module
,module-trace
,module-verbosity
,module-user
andmodule-log
commands under the modulerc Tcl interpreter as no-op commands. A clear error message is obtained if these commands are still used in modulerc files instead of silently ignoring them. - Return by default an empty string rather
_UNDEFINED
ongetenv
modulefile command if passed environment variable is not defined. - Align empty directory name error message obtained on
use
sub-command with message obtained when module or collection name is empty. - Accept non-existent modulepath on
use
sub-command. - Install: installation option
--enable-auto-handling
is set on by default which enables the automated module handling mode (seeMODULES_AUTO_HANDLING
). - Install: installation option
--enable-extended-default
is set on by default which allows partial module version specification (seeMODULES_EXTENDED_DEFAULT
). - Install: installation option
--enable-advanced-version-spec
is set on by default which activates the Advanced module version specifiers - Install: installation option
--enable-color
is set on by default which enables theauto
output color mode (seeMODULES_COLOR
). - Install: installation option
--with-icase
is set tosearch
by default to activate case insensitive match on search contexts (seeMODULES_ICASE
). - Install: installation option
--enable-new-features
has been reset following major version change as all the options it implied are now enabled by default. - Install: installation option
--enable-set-shell-startup
is set off by default but could be enabled once installed through theinitrc
configuration file. - Install: installation option
--with-initconf-in
is set toetcdir
by default to locate configuration files in the directory designated by the--etcdir
option. Therefore the initialization configuration file is namedinitrc
in this directory, and the modulepath-specific configuration file is namedmodulespath
. - Only look at configuration files found in the location designated by the
--etcdir
or--initdir
option (depending on the value of--with-initconf-in
option). Configuration files were previously searched in both locations. - Install: remove installation option
--enable-compat-version
. Compatiblity version co-installation is discontinued.switchml
shell function andMODULES_USE_COMPAT_VERSION
are thus removed as well. - Testsuite: introduce the non-regression quick test mode. When the
QUICKTEST
environment variable is set to1
, only the main tests from the non-regression testsuite are run. When first argument of themt
script isquick
, tests are run in quick mode. - Install: run non-regression testsuite in quick mode in RPM spec file.
- Rename the environment variables that are used by Modules to track loaded environment state (variables whose name starts with
MODULES_LM
). A__
prefix is added to the name of these variables to indicate that they are intended for internal use only. - Rename the environment variables used to indirectly pass to
modulecmd.tcl
the value of variables set in quarantine (variables whose name finishes with_modquar
). A__MODULES_QUAR_
prefix is applied to the name of these variables instead of the_modquar
suffix to indicate they are intended for Modules internal use of only. - Update Tcl requirement to version 8.5 as Tcl 8.4 is deprecated since a long time and this version is not available anymore on recent OS distributions. Update internal code of
modulecmd.tcl
to take benefit from the features brought by Tcl 8.5.