- 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)