- Doc: simplify TOC of
MIGRATING
document - Add the
ModuleTool
andModuleToolVersion
Modules variables to determine during modulefile or modulerc evaluation the name and version of the module implementation currently in use. - Introduce the
versioncmp
modulefile command to compare two version strings passed as argument. - Enable the use of wildcard character to designate multiple directories at once in modulespath configuration file. (fix issue #125)
- Distinguish aliases from symbolic versions in
MODULES_LMALTNAME
environment variable. Prefix these alias entries with theal|
string. - Fetch modulefile modification time only if required by
list
sub-command display format. - Use symbolic versions recorded in environment, with
MODULES_LMALTNAME
variable, to report the symbols applying to loaded modules onlist
sub-command. Modulerc files are not evaluated anymore when performing a module list. - Move the definition of the
FPATH
environment variable for Modules initialization on ksh shell from the initialization script of this shell to the resulting output of theautoinit
sub-command. - Introduce the
shells_with_ksh_fpath
configuration option to define a list of shell where to ensure that any ksh sub-shell will get the module function defined by use of theFPATH
environment variable. When theshells_with_ksh_fpath
option is set through theconfig
sub-command, theMODULES_SHELLS_WITH_KSH_FPATH
environment variable is set. Accepted values are a list of shell among sh, bash, csh, tcsh and fish separated by colon character (:
). - Add the
implicit_requirement
configuration option to control whether a prereq or a conflict requirement should be implicitly set onto modules respectively specified onmodule load<module>
ormodule unload<module>
commands in modulefile. Default value for this option could be set at configure time with the--enable-implicit-requirement
option (enabled by default). This value could be superseded by setting up theimplicit_requirement
option withconfig
sub-command. Which sets theMODULES_IMPLICIT_REQUIREMENT
environment variable. (fix issue #260) - Add the
--not-req
option to themodule
modulefile command to inhibit for itsload
andunload
sub-commands the definition of a prereq or conflict requirement onto specified modules. - Add the
lpopState
andcurrentState
procedures to respectively remove or return the last entry from the list of values of a given state. - Add the
topState
anddepthState
procedures to respectively return the first element from or the number of elements in the list of values of a given state. - Remove the pre-definition of runtime states with no specific property. These basic states are defined on-the-fly which implied they are not reported on a
module config --dump-state<config>
command unless if instanciated. - Introduce the
loaded
symbolic version among advanced version specifiers (e.g.foo@loaded
) to designate the currently loaded version of specified module. (fix issue #366) - Doc: add Module tags design notes.
- Report tags applying to the modules returned by the
avail
sub-command. Adapt the regular, terse and JSON output styles to report these tags along the module they are attached to (enclosed in<>
). Reported tags currently are states that apply to modules:auto-loaded
,forbidden
,hidden
,loaded
,nearly-forbidden
,sticky
andsuper-sticky
. - Record tags applying to each loaded module in the
MODULES_LMTAG
environment variable to make this information persist after module being loaded. - Report tags applying to the loaded modules returned by the
list
sub-command. Adapt the regular and JSON output styles to report these tags along the module they are attached to (enclosed in<>
). Reported tags currently are states applying to loaded modules:auto-loaded
,hidden-loaded
,nearly-forbidden
,sticky
andsuper-sticky
. - Introduce the
module-info tags<module-info>
modulefile command to query the tags that apply to the currently evaluated modulefile. - Add the
module-tag
modulefile command to associate tag to designated modulefile. Those tags are reported onavail
andlist
sub-commands along the module they are attached to.module-tag
supports the advanced module version specifier syntax. - Add the
tag_abbrev
configuration option to define abbreviated strings for module tags and use these abbreviations instead of tag names when reporting tags onavail
andlist
command results. Default value for this option could be set at configure time with the--with-tag-abbrev
option. By default the following abbreviations are set:aL
for auto-loaded,F
for forbidden,H
for hidden,H
for hidden-loaded,L
for loaded,nF
for nearly-forbidden,S
for sticky,sS
for super-sticky. This value could be superseded by setting up thetag_abbrev
option withconfig
sub-command. Which sets theMODULES_TAG_ABBREV
environment variable. - A Select Graphic Rendition (SGR) code can be associated to module tag names or abbreviation strings in the color palette to graphically render these tags over the module name they are associated to. The default light and dark color palettes have been updated to set a color code for all basic module tags. When a color code is set for a tag, it is then graphically rendered over the module names and not reported along module name by its tag name or abbreviation. When multiple colored tags apply to a given module, each tag is graphically rendered over a sub-part of the module name.
- Add the
tag_color_name
configuration option to designate module tags whose graphical rendering should be applied to their own name or abbreviation rather than over the module name they are attached to. Default value for this option could be set at configure time with the--with-tag-color-name
option (empty by default). This value could be superseded by setting up thetag_color_name
option withconfig
sub-command. Which sets theMODULES_TAG_COLOR_NAME
environment variable. - Add the
--hidden-loaded
option to themodule-hide
modulefile command that indicates module should be hidden once loaded. When set, thehidden-loaded
module tag applies to module specification set onmodule-hide
command. - Do not report on
list
sub-command results the loaded modules associated with thehidden-loaded
tag, unless if the--all
option is set. - Doc: add an
hidden-loaded
example in the Hide and forbid modules cookbook recipe. - Introduce the
verbose2
verbosity level betweenverbose
andtrace
levels. Verbose2 mode can be enabled by setting theverbosity
config to theverbose2
value or by using the-v
command-line switch twice. - Do not report the load, unload or switch of modules set
hidden-loaded
if these modules have been loaded, unloaded or switched automatically. Unless the verbosity mode is set toverbose2
or any higher level or if any specific messages have to be reported for these module evaluations. - Report when trying to load a module which is already loaded or when trying to unload a module which is not loaded in case the verbosity mode is set to
verbose2
or any higher level. (fix issue #187) - Doc: improve readability of version 4 improvements in
diff_v3_v4
document. - Introduce stickyness: module tagged
sticky
withmodule-tag
command cannot be unloaded unless if the unload is forced or if the module is reloaded. (fix issue #269) - Introduce super-stickyness: module tagged
super-sticky
withmodule-tag
command cannot be unloaded even if the unload is forced unless if the module is reloaded. (fix issue #269) - Allow swap of sticky or super-sticky modules by another modulefile version if stickyness definition applies to module parent name. E.g., foo/1.0 can be swapped by foo/2.0 if sticky tag applies to foo.
- When forcing purge with a
purge --force<purge>
sub-command, also unload the modules that are depended by unloadable modules. - Doc: improve readability of Modules installation configuration in
INSTALL
document and enable hypertext reference to these elements. - Doc: improve readability of module command configuration option in
module(1)
document and enable hypertext reference to these elements. - Doc: describe in HTML documentation when installation options, module command configuration options and options of modulefile command or module sub-command were introduced.
- Doc: update HTML documentation Table Of Content.
- Doc: improve markup of module sub-commands, modulefile commands, installation option, module configuration option across documentation.
- Doc: colorize terminal output examples in
MIGRATING
document. - Abort modulefile read if first file content chunk does not start with the
#%Module
magic cookie. (fix issue #375) - Install: add installation option
--enable-new-features
that enables all at once the installation options that are disabled by default due to the substantial behavior changes they imply. - Add a Key section at the end of
avail
andlist
sub-commands to explain the meaning of graphical renditions or of elements set in parentheses or chevrons along module name. - Fix output of
avail
andlist
sub-commands on very small termminal width. (fix issue #378) - Add
mcookie_version_check
configuration to define if version set in modulefile magic cookie should be checked againstmodule
current version to determine if modulefile can be evaluated. The new configuration, which is enabled by default, can be set at installation time with configure option--enable-mcookie-version-check
or can be superseded later on with theMODULES_MCOOKIE_VERSION_CHECK
environment variable. (fix issue #377) - Fix output of modulefile evaluation error stack trace on very small terminal width. (fix issues #379 and #381)
- Correct
config
sub-command to setnearly_forbidden_days
configuration. (fix issue #380) - Init: reduce usage of helper variables in
bash_completion
andtcsh_completion
that are showing up in the output of the shell'sset
command. (fix issue #382 with contribution from Colin Marquardt) - Consider modulepath starting with a reference to an environment variable as absolute. (fix issue #376)
- Consider the
module load<load>
performed in the user or the global RC file like load commands issued from initialization RC file. (fix issue #372) - Install: have
configure
script assume the.
dot directory when invoked without the prepended./
. (contribution from R.K. Owen) - Install: disable the Makefile rules to build the HTML documentation in case if the documentation is found pre-built in the dist archive.
- Install: do not flag documentation as pre-built if
configure
script is ran another time after building docs. - Restrict the value accepted by
nearly_forbidden_days
configuration and--with-nearly-forbidden-days
installation option to integers comprised between 0 and 365. - Install: color ERROR and WARNING message headers produced by
configure
script if output is sent to a terminal. - Install: split error messages produced by
configure
script over an additional line when too long. - Doc: add Output configuration design notes.
- Introduce the
avail_output
andavail_terse_output
configuration options to define the content to report in addition to the available module names respectively foravail
sub-command regular and terse output modes. Excepted value for these configuration options is a colon separated list of elements to report. Default value ismodulepath:alias:dirwsym:sym:tag:key
foravail_output
andmodulepath:alias:dirwsym:sym:tag
foravail_terse_output
. These values can be changed at installation time respectively with the--with-avail-output
and--with-avail-terse-output
options. These values can then be superseded by using theconfig
sub-command which sets theMODULES_AVAIL_OUTPUT
andMODULES_AVAIL_TERSE_OUTPUT
environment variables. - Introduce the
list_output
andlist_terse_output
configuration options to define the content to report in addition to the available module names respectively forlist
sub-command regular and terse output modes. Excepted value for these configuration options is a colon separated list of elements to report. Default value isheader:idx:sym:tag:key
forlist_output
andheader
forlist_terse_output
. These values can be changed at installation time respectively with the--with-list-output
and--with-list-terse-output
options. These values can then be superseded by using theconfig
sub-command which sets theMODULES_LIST_OUTPUT
andMODULES_LIST_TERSE_OUTPUT
environment variables. - Add the
--output
/-o
command-line switches to supersede the output configuration ofavail
orlist
sub-commands on their regular or terse output modes. - Remove the
avail_report_dir_sym
andavail_report_mfile_sym
locked configuration options whose behaviors can now be obtained by respectively adding thedirwsym
andsym
elements to theavail_output
oravail_terse_output
configuration options. - When
modulepath
is omitted from the content to report onavail
sub-command, available modules collected from global/user rc and enabled modulepaths are aggregated and reported all together. - Install: print generated file names rather commands executed to generate these files on Makefile build targets. Output obtained when building Modules is this way simplified. When option
V=1
is passed tomake
, the verbose mode is enabled and run commands are shown. The simplifiedmake
output does not apply to the install, test and clean targets or any target similar to them. - Install: fix configure and build files of Modules Tcl extension library to make them compatible with autoconf >=2.69.
- Script: correctly detect previous Modules version number released from a side git branch on
mpub
command. - Install: align RPM spec file syntax with spec file used on Fedora. Add missing build dependency on
make
package. Also remove obsoleteGroup
RPM tag. - Add the
term_width
configuration option to set the width of the output. This configuration option is set to0
by default, which means that the output width is the full terminal width. The--width
/-w
command line switches are added to supersede the value of the configuration option. (fix issue #359 with contribution from Anaïs Gaertner) - Doc: add a Get Modules section in
INSTALL
document to provide download links for Modules' sources. (fix issue #387)