Releases: cea-hpc/modules
Releases · cea-hpc/modules
4.8.0
- Introduce the
edit
sub-command that opens modulefile passed as argument in a text editor. Modulefile can be specified like with any other sub-command, leveraging defined symbolic versions, aliases or using advanced version specifiers. - Add the
editor
configuration option to select the text editor to use withedit
sub-command. When this option is set through theconfig
sub-command, theMODULES_EDITOR
environment variable is set. The--with-editor
installation option controls the default value ofeditor
configuration option. If not set at installation time,vi
is set as default editor. - Default value of
editor
configuration option is overridden by theVISUAL
or theEDITOR
environment variables, which are both in turn overridden by theMODULES_EDITOR
environment variable. - Doc: fix
modulecmd.tcl
internal state check in recipes example codes. (fix issue #396) - The
Advanced module version specifiers
mechanism now allows the use of version range in version list (for instancemod@:1.2,1.4:1.6,1.8:
). Such specification helps to exclude specific versions. (fix issue #397) - Install: fix installation scripts to allow building Modules when its repository is set as a git submodule. (fix issue #398)
- Doc: demonstrate in the
source-script-in-modulefile
recipe how to use thesource-sh
command when software provide a specific initialization script for each shell it supports. (fix issue #399) - When defining a shell function with the
set-function
modulefile command, only export this function when using the Bash shell (using theexport -f
shell command) to make it available in sub-shell contexts. Shell function export is not supported on other kind of sh shell (sh, ksh and zsh). (fix issue #401) - Doc: add
variants
design notes. - Add the
variant
modulefile command that enables to pass down arguments, specified when designating the module to evaluate, within modulefile evaluation context. This command defines a variant name and a list of allowed values. When evaluated,variant
instantiates an element in theModuleVariant
array whose name equals variant name and value is set with value specified for variant when module is designated. If specified value does not correspond to an allowed value or if no value is specified for variant an error is raised. - Enhance the
Advanced module version specifiers
to handle variant specification followingSpack
_'s syntax (e.g., name=value). When theadvanced_version_spec
configuration is enabled, variant could be specified anywhere a module can be specified. - Add the
--default
option to thevariant
modulefile command to indicate the default value of the variant to apply when the designation of the evaluating module does not mention this variant. - Add the
--boolean
option to thevariant
modulefile command to indicate that the variant defined is of the Boolean type, thus no list of accepted value is expected. - Enhance the
Advanced module version specifiers
to handle Boolean variant specification followingSpack
_'s syntax (e.g., +name, ~name and -name). The -name syntax is not supported onml(1)
command as the minus sign already means to unload designated module. - Accept any minus argument (-word) set after the sub-command name when the
advanced_version_spec
configuration is enabled and if sub-command acceptsAdvanced module version specifiers
(likeload
orunload
sub-commands). A false value may be set to Boolean variant this way. - Add the
variant_shortcut
configuration option to define shortcut characters that could be used to specify and report module variants. Default value for this option could be set at installation time with the--with-variant-shortcut
option. No variant shortcut is defined by default. This value could be superseded by setting up thevariant_shortcut
option withconfig
sub-command. Which sets theMODULES_VARIANT_SHORTCUT
environment variable. - Enhance the
Advanced module version specifiers
to handle variant shortcut specification (e.g., value). - Record in user loaded environment, with
MODULES_LMVARIANT
environment variable, the value specified for the variants defined in the loaded modulefiles and their properties (if it is a Boolean variant and if the value set is the default one). - Add the
variant
element in the allowed value list of thelist_output
andlist_terse_output
configuration options. Set this new element in the default value list of thelist_output
option. When set, the variant defined for loaded modules are reported on modulelist
command output. - Add the
va
color key in default light and dark color palettes to graphically enhance the report of variant value. - Update the key section to explain on
list
sub-command output the reported variant elements (name=value, +name, -name or value) - Record variant specification of loaded modules when saving collections and reload specified variants when restoring these collections.
- When
collection_pin_version
configuration is disabled, only record in collections the variants whose value is not the default one. - Update module designation in error, warning or informational messages to report variant specification enclosed in curly braces ({}), enclose module name and version or variant specification in single quotes ('') if they contain a space character and highlight the module designation in report message if configured.
- Introduce the
getvariant
modulefile command to query for currently evaluating module the value of a given variant name. - When translating the
@loaded
version specifier also retrieve the variant specified for corresponding loaded module. - Update hide, forbid and tag mechanisms to apply them only if they match selected module variant.
- Any variant defined in module specification passed as argument to search sub-commands (
avail
,whatis
,is-avail
,path
andpaths
) is ignored. - Raise an error if a variant named
version
is declared in a modulefile to let room for the future implementation of this specific variant. - Doc: describe in the
diff_v3_v4
document argument handling change onsetenv
since v3.2. (fix issue #402) - Introduce the
try-load
sub-command which likeload
sub-command tries to load the modulefile passed as argument, but does not complain if this modulefile cannot be found. (fix issue #392) - Init: fix stderr redirection in fish shell initialization script, now that use of the
^
character to redirect stderr is disabled by default (fish >=3.3). - Protect quarantine mechanism code from
rcexpandparam
Zsh option when initializing themodule
command on this shell. (fix issue #403)
4.7.1
- Doc: clarify the license terms used by the project. (fix issue #389)
- Align all files from the Modules project under the GPLv2+ license. Scripts and libraries that were previously licensed with GPLv3+ have been moved to GPLv2+ with the consent of their respective copyright holders. (fix issue #389)
- Revert "Install: have
configure
script assume the.
dot directory when invoked without the prepended./
" as consent was not obtained from author to relicense the contribution to GPLv2+. - Doc: fixes few typos in
module(1)
andmodulefile(4)
. - Update the
sh-to-mod
mechanism to support version 3.2 of the fish shell. Fish 3.2 introduces the.
builtin command that should be regexp-escaped when determining the shell functions or aliases defined by the script analyzed bysh-to-mod
. - Vim: update addon files to highlight modulefile variables
ModuleTool
,ModuleToolVersion
andModulesCurrentModulefile
. - Doc: update the description and default value of the
--with-dark-background-colors
and--with-light-background-colors
installation options. - Doc: add description of changes that occurred on versions 4.6 and 4.7 for the
--with-dark-background-colors
and--with-light-background-colors
installation options and for theMODULES_COLORS
environment variable. - Doc: correct the default value of the
--with-tag-abbrev
installation option. - Doc: add Sticky modules cookbook recipe.
4.7.0
- 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 ...
4.6.1
- Lib: implement
initStateClockSeconds
as a Tcl command in libtclenvmodules to provide an optimized way to retrieve current Epoch time. - Lib: implement
parseDateTimeArg
as a Tcl command in libtclenvmodules to provide an optimized way to convert a datetime string into an Epoch time. - When full module specification is equal to
@
, raise an error as no module name is provided. (fix issue #362) - Optimize internal recording of hidden module and tag specification when parsing modulerc files in order to reduce the time taken to test if a given module is hidden or if a given tag applies to it.
- Script: add the ability to select the benchmark test to perform on
mb
utility. - Doc: add Use new features without breaking old module command cookbook recipe
- Doc: rework option description for
module-hide
andmodule-forbid
commands in modulefile(4) document. - Doc: describe in diff_v3_v4 document that shell special characters like backticks are escaped when used in values starting Modules 4.0. (fix issue #365)
- Doc: make the ENVIRONMENT section from modulefile(4) man page point to the ENVIRONMENT section of module(1) man page.
- Fix
clear
sub-command to unset theMODULES_LMSOURCESH
environment variable. (fix issue #367) - Correctly return on
avail
sub-command a symbolic version defined in a global RC file when specifically searched. (fix issue #368) - Fix module hiding resolution for symbolic versions defined in a global RC file when
module-hide
statements are set in the modulepath where the modulefiles targeted by these symbols are located. (fix issue #369) - When a module fails to unload during a
purge
sub-command, preserve loaded the modules it requires to keep environment consistent. (fix issue #370) - Doc: add Hide and forbid modules cookbook recipe.
4.6.0
- Rework internal state handling to gather all state definitions in a global array and use the same initialization and retrieval procedure, named
getState
, for all these states. - Add the
setState
,unsetState
,lappendState
,isStateDefined
andisStateEqual
procedures to provide unified ways to set or check the value of state. - Introduce the
sh-to-mod
sub-command, to evaluate shell script and determine the environment changes it does. Corresponding modulefile content is outputted as a result. Changes on environment variables, shell aliases, shell functions and current working directory are tracked. The following shells are supported: sh, dash, csh, tcsh, bash, ksh, ksh93, zsh and fish. - Doc: add Source shell script in modulefile design notes.
- Introduce the
source-sh
modulefile command, to evaluate shell script and apply resulting environment changes through modulefile commands. When a modulefile usingsource-sh
modulefile command is loaded, the modulefile commands resulting from shell script evaluation are recorded in the :envvar:MODULES_LMSOURCESH
environment variable to be able to undo these environment changes when modulefile is unloaded and to report the modulefile commands used when modulefile is displayed. The same kind of environment changes than thesh-to-mod
sub-command are tracked. The same list of shells thansh-to-mod
sub-command are supported. (fix issue #346) - Doc: add Source shell script in modulefile cookbook recipe.
- Doc: embed new Modules logo on website, online README and documentation portal.
- Install: disable by default the build of Modules compatibility version. From now on, option
--enable-compat-version
has to be set to trigger this build. - Introduce the
username
sub-command to themodule-info
modulefile command to get the username of the user currently runningmodulecmd.tcl
or to test a string passed as argument corresponds to this username. - Introduce the
usergroups
sub-command to themodule-info
modulefile command to get all the groups of the user currently runningmodulecmd.tcl
or to test a string passed as argument corresponds to one of these groups. - Doc: improve markup of
NEWS
andMIGRATING
documents starting from this 4.6 version to enable references to module sub-commands, command line switches, environment variables and modulefile Tcl commands. - Use inclusive terminology to eliminate master and slave terms as much as possible from code source and documentation.
- Doc: use a versioned magic cookie in examples that demonstrate new modulefile features. (fix issue #349)
- Introduce the
--enable-multilib-support
configure option to add mechanism inmodulecmd.tcl
to look at an alternative location to find the Modules Tcl extension library in case this library cannot be found at its main location. - Lib: remove fetch_hidden argument from
getFilesInDirectory
procedure of Modules Tcl extension library. - Doc: add Hide or forbid modulefile design notes.
- Add the
module-hide
modulefile command, to dynamically hide modulefile, module alias or symbolic version matching passed specification. When hidden, a modulefile, an alias or a symbolic version is not reported nor selected unless referred by its exact name, like for module whose name or version starts with a dot character.module-hide
supports the advanced module version specifiers. (fix issue #202) - Add option
--soft
to themodule-hide
modulefile command to introduce a soften level of camouflage: modules targeted by such hide directive are made visible as soon as their root name is part of search query. - Add option
--hard
to themodule-hide
modulefile command to introduce a hardened level of camouflage: modules targeted by such hide directive keep being hidden even if they are fully matched by search query. - Do not report among
whatis
search result the modulefiles with version name prefixed by a dot character and targeted by a symbolic version unless if they are precisely searched. - When a loading module has hidden alternative names (hidden due to their name or version starting with a dot character or because they match a
module-hide
statement), these alternative names are not recorded in environment unless if they are not hard-hidden and if they have been used in query to select loading module. - On
avail
sub-command, remove hidden symbolic versions from the list to display along modulefile or directory they target, unless these symbols are not hard-hidden and are used in query to search modules. - When the g
--default
filter ofavail
sub-command is set, unhide all the default symbolic versions or modules targeted by these symbols unless if they are hard-hidden. - Define the default and latest automatic symbolic versions only if relative module name matches search query to ensure all elements for this module have been processed prior assigning the symbols.
- In case a symbolic version is transitively applied toward a modulefile, like for instance when this symbol is first set onto a directory, record the resolution of each transitively applied symbol. By doing so, a module
load
tentative using the transitively applied symbolic version will now correctly resolve to the modulefile targeted by symbol. - Fix use of the advanced version specifiers in arguments to the
is-avail
modulefile command. - Introduce the g
--all
/-a
option foravail
,aliases
,whatis
andsearch
sub-commands, to include in the search process all hidden modulefiles, module aliases or symbolic versions. Hard-hidden modules stay hidden even if--all
/-a
option is used. - Add the
module-forbid
modulefile command, to dynamically forbid evaluation of modulefile matching passed specification. When forbidden, a module cannot be loaded and an access error is obtained when trying to evaluate them.module-forbid
supports the advanced module version specifiers. - Add
--not-user
and--not-group
options tomodule-hide
andmodule-forbid
modulefile commands to ignore hiding or forbidding definition if current user is respectively part of specified username list or member of one of specified group list. - Add
--before
and--after
options tomodule-hide
andmodule-forbid
modulefile commands to ignore hiding or forbidding definition respectively after and before a specified date time. Accepted date time format isYYYY-MM-DD[THH:MM]
. - Add
--message
option tomodule-forbid
modulefile command to supplement the error message obtained when trying to evaluate a forbidden module. - When a module that will soon be forbidden (as the date limit specified on the
--after
option of a matchingmodule-forbid
command is near) is evaluated, warn user this module access will soon be denied. - The range of time the above warning appears can be controlled with the
nearly_forbidden_days
configuration option, whose value equals to the number of days prior the module starts to be forbidden. This configuration is set to14
(days) by default and this value can be controlled atconfigure
time with--with-nearly-forbidden-days
option. When thenearly_forbidden_days
configuration is set through theconfig
sub-command, the :envvar:MODULES_NEARLY_FORBIDDEN_DAYS
environment variable is set. - Add
--nearly-message
option tomodule-forbid
modulefile command to supplement the warning message obtained when evaluating a nearly forbidden module. - Add the
debug2
verbosity level, to report each call ofmodulecmd.tcl
internal procedures in addition to debug messages. Debug2 mode can be enabled by setting theverbosity
config to thedebug2
value or by using the g-D
command-line switch twice. - Install: look for
make
rathergmake
on MinGW and build library with a.dll
extension on this platform. - Add the
trace
verbosity level, to report details on module searches, resolutions, selections and evaluations. Trace mode can be enabled by setting theverbosity
config to thetrace
value or by using the g-T
/--trace
command-line switches. - Introduce the
tr
key in the color palette to specifically render trace messages. Default value fortr
key is2
(decreased intensity). - When trying to set an environment variable to an empty value on the Windows platform, unset this environment variable instead to cope with the underlying OS behavior.
4.5.3
- Install: take into account the
--build
,--host
,--target
,--enable-dependency-tracking
and--disable-dependency-tracking
configure options to transmit them to theconfigure
scripts of Modules Tcl extension library and Modules compatibility version. (fix issue #354) - Install: ignore some regular options of an Autoconf
configure
script that are useless for this project but usually implied in build macros (like RPM%configure
macro). - Install: ignore unsupported
--enable-*
and--with-*
options onconfigure
script rather raise an error and add support to define environment variable and build system type asconfigure
script arguments to comply with GNU configuration recommendations. - Install: fix
modulecmd
pre-alternatives check in RPM spec file. - Install: use
%make_build
and%make_install
macros in RPM spec file. - When
module switch
command is used in modulefile, do not state when processing it a conflict over switched-off module if its specification on themodule switch
command also matches switched-on module's specification. Allow this way the replacement of any loaded version of a module for a specific one required by currently loading module. (fix issue #355) - Correctly report failed attempts to load module requirements expressed with advanced version specifiers. (fix issue #356)
4.5.2
- Init:
list
andsource
sub-commands do not take available modules as argument in fish completion script. - Init: fix option list for
search
sub-command in bash completion script. - Fix double error counter increase when modulefile evaluation breaks.
- Install: adapt
configure
script to pass to theconfigure
script of Modules compatibility version only a subset of the options it supports (most commonly used options). - Install: raise an error when an unknown option is passed to
configure
script rather silently ignore it. (fix issue #348) - Install: enable the definition of installation directory options of
configure
script with the--option value
syntax in addition to the--option=value
syntax. (fix issue #348) - Doc: alphabetically sort sub-commands of
module-info
modulefile Tcl command inmodulefile(4)
document. - Script: clean previously built environment-modules RPMs in
mrel
. - Clearly separate quarantine variable definition from tclsh binary on
modulecmd.tcl
evaluated command call in_module_raw
function for sh, bash, ksh and zsh shells. (fix issue #350) - Doc: clarify in documentation index that Environment Modules should not be confused with language-specific modules. (contribution from Rob Hurt)
- Adapt conflict detection tests to ensure a module loaded by its full pathname will not detect itself as a conflict when declaring a reflexive conflict. (fix issue #352)
- Adapt the
mrel
andmpub
commands to produce new Modules release from a vZ.Y.x git branch rather than from the repository main branch.
4.5.1
- Install: consistently output Makefile warning messages on stderr.
- Script: add the
mrel
script, that automates build of the Modules release files and performs tests over these distribution files to guaranty their correctness. - Script: add the
mpub
script, that automates Modules new release publishing over git repositories and websites. - Install: remove project-specific tools from git repository export thus from release distribution files.
- Disable pager when
clear
sub-command is called fromml
shortcut command. (fix issue #338) - In case a modulefile evaluation fails, environment context prior this failed evaluation is restored. Fix environment variable restoration mechanism to keep the link that monitors and updates environment variable array
env
in every Tcl sub-interpreters. (fix issue #340) - Ensure environment variable change at the Tcl interpreter level is propagated to every sub-interpreters used to evaluate modulefiles or modulercs. (fix issue #342)
- Use absolute path to load Modules Tcl extension library. (fix issue #344 with contribution from Roy Storey)
- Fix formatting of error stack trace not to look for internal commands to withdraw if start-up stack pattern cannot be matched.
4.5.0
- Doc: fix typos and grammar mistakes on module(1), modulefile(4) and diff_v3_v4 documents. (contribution from Colin Marquardt)
- Doc: update cookbook recipes to highlight code of the Tcl scripts included. (contribution from Colin Marquardt)
- Doc: improve markup of module(1), modulefile(4) and diff_v3_v4 documents to enable references to module sub-commands, command line switches, environment variables and modulefile Tcl commands. (contribution from Colin Marquardt)
- Doc: alphabetically sort module sub-commands, command-line switches, environment variables and modulefile Tcl commands in module(1) and modulefile(4) documents.
- Introduce the
ml
command, a handy frontend to themodule
command.ml
reduces the number of characters to type to triggermodule
. With no argumentml
is equivalent tomodule list
,ml mod
corresponds tomodule load mod
andml -mod
meansmodule unload mod
. Multiple modules to either load or unload can be combined on a single command.ml
accepts all command-line switches and sub-commands accepted bymodule
command.ml
command is defined by default. Its definition can be controlled at./configure
time with--enable-ml
option or later on withml
configuration option (which definesMODULES_ML
environment variable when set). - Fix module sub-command abbreviation match to ensure passed abbreviated form fully match sub-command, not only its minimal abbreviated form. As an example,
lod
orloda
do not match anymore theload
sub-command,lo
orloa
still do. - Add the
-j
/--json
command line switches to theavail
,list
,savelist
,whatis
andsearch
module sub-commands to render their output in JSON format. (fix issue #303) - Script: remove need to build project management-specific tools (
mtreview
,mb
,mlprof
andplaydemo
) prior using them. - Script: gather all distributed and maintained scripts in a
script
directory at the root of the project repository tree. - Install: provide Windows-specific batch files when
./configure
option--enable-windows-support
is set. module command wrappermodule.cmd
is installed inbindir
and initialization scriptcmd.cmd
ininitdir
. Those batch files are relocatable and expectmodulecmd.tcl
in..\libexec
directory. (fix issue #272 with contribution from Jacques Raphanel) - Install: add ml command wrapper
ml.cmd
and install it inbindir
when./configure
option--enable-windows-support
is set. - Install: introduce envml command wrapper
envml.cmd
for Windowscmd
shell and install it inbindir
when./configure
option--enable-windows-support
is set. (contribution from Jacques Raphanel) - Doc: improve documentation portal index.
- Install: add
dist-win
target to Makefile in order to build a distribution zipball containing the required files to run Modules on a Windows platform.INSTALL.bat
andUNINSTALL.bat
Windows batch files are introduced and shipped in the zipball to automate installation and basic configuration of Modules on the Windows platform. - Doc: update INSTALL-win document to describe how to install Modules with newly provided Windows-specific distribution zipball.
- Install: enable build of Modules from
git archive
tarball or zipball exports (like download source archives automatically provided on GitHub project) - Install: ship reStructuredText and MarkDown source documents at the root of Modules distribution tarball rather their built txt counterpart.
- Script: fix
createmodule.sh
script to correctly analyses environment when shell functions are found defined in it. - Script: inhibit output generated by scripts evaluated by
createmodule.sh
andcreatemodule.py
to ensure these outputs will not get in the way when analyzing the environment changes. (fix issue #309) - Correctly handle symbolic version target including a whitespace in their name.
- Testsuite: output test error details whatever the testsuite run verbose mode.
- Install: adapt configure script and Makefile to detect
python
command location and set it as shebang forcreatemodule.py
andgitlog2changelog.py
. Ifpython
command is not found,python3
thenpython2
are searched. - Install: enable to pass a specific Python interpreter command name or location at configure step with
--with-python
option. Specified command name or location should be found on build system only if building from git repository. - Install: build
createmodule.py
script and install it inbindir
. - Install: update RPM spec file to explicitly define Python interpreter location.
- Script: fix
createmodule.py
script for Python3 (fix issue #315 with contribution from Armin Wehrfritz) - Lift Perl variable strictness when defining
_mlstatus
variable in casemodulecmd.tcl
output is directly evaluated without use of themodule
sub-routine in Perl script. (with contribution from Andrey Maslennikov) - Script: fix path de-duplication in
createmodule.sh
. (fix issue #316) - Doc: add Handling Compiler and other Package Dependencies cookbook recipe, which discusses various strategies for creating modulefiles for packages with multiple builds depending on previously loaded compiler, MPI libraries, etc. (contribution from Tom Payerle)
- Init: test availability of
compopt
Bash builtin prior using it in Bash completion script to avoid error with versions of this shell older than 4.0. (fix issue #318) - Install: adapt configure step to detect if
sed
option-E
is supported and fallback to-r
otherwise in shell completion scripts. (fix issue #317) - Add support for the
NO_COLOR
environment variable (https://no-color.org/) which when set (regardless of its value) prevents the addition of ANSI color. When set,NO_COLOR
prevails overCLICOLOR
andCLICOLOR_FORCE
environment variables.MODULES_COLOR
overrides these three variables. (fix issue #310) - Script: when analyzing environment variable changes in
createmodule.sh
applied by shell script passed as argument, produce asetenv
modulefile statement for any variable found set prior script evaluation and for which value is completely changed after script evaluation. (fix issue #320) - When an error message is composed of multiple lines, render it in the same way whether it is part of a block message or not: lines after the first one are prepended with a 2-space padding. As a result error messages appear clearly separated from each other.
- Append to the error message the error stack trace when a general unknown error occurs in
modulecmd.tcl
and provide a link to encourage users to report such error to the GitHub project. - Add to the error message the error stack trace for errors occurring during site-specific configuration evaluation. Error stack is expunged from the
modulecmd.tcl
internals to only report information relevant to site-specific configuration file. - When an error occurs during the evaluation of a modulefile or a modulerc, report associated error stack trace expunged from
modulecmd.tcl
internal references to only output useful information for users. - GitHub: add issue templates to guide people submitting a bug report or a feature request.
- Doc: provide a link toward issues that have been fixed between versions 3.2 and 4.0 in diff_v3_v4 document.
- Script: introduce
envml.cmd
script for Windows platform providing similar behavior thanenvml
Bash script. (contribution from Jacques Raphanel) - Init: add Bash shell completion for the
ml
command. (contribution from Adrien Cotte) - Fix Fish shell stderr redirection for newer Fish versions. (fix issue #325)
- Correctly handle modulefiles and modulepaths containing a space character in their name whether they are used from the command-line, in collections, within modulefiles or from loaded environment definitions.
- Doc: add Default and latest version specifiers design note.
- An
avail
search over a symbolic version targeting a directory now correctly returns the special modules (alias and virtual module) lying in this directory. (fix issue #327) whatis
andpaths
searches only return special modules (symbolic version, alias and virtual modules) that fully match search query, not those that partially match it. (fix issue #328)- alias and virtual module whose name mention a directory that does not exists are correctly handled. (fix issue #168)
- Hide special modules (aliases, symbolic versions and virtual modules) whose version name starts with a dot character (
.
) fromavail
,whatis
andpaths
searches if their query does not fully match special module name. (fix issue #329) - Filter-out from the output of the
aliases
sub-command all hidden aliases, symbolic versions or hidden modules targeted by a non-hidden symbolic version. (fix issue #330) - Enable resolution of default module in module sub-directory when this default symbol targets a hidden directory (whose name starts with a dot character). (fix issue #331)
- Doc: clarify hidden module location in modulefile(4) man page.
- Install: define
LD_PRELOAD
as quarantine var along withLD_LIBRARY_PATH
in RPM specfile. - When
implicit_default
andadvanced_version_spec
configuration are enabled, automatically define adefault
andlatest
symbolic version for each module name (at each module depth for deep modules) if those version names does not already exist. (fix issue #210) - Once a module is loaded, the automatically defined symbols associated to it are recorded in loaded environment in the
MODULES_LMALTNAME
environment variable. They are distinguished from the other alternative names applying to the module by aas|
prefix, which qualifies their auto symbol type. - When an advanced version specifier list contains symbolic version references, fix resolving to honor default version if part of the specified list. (fix issue #334)
4.4.1
- Fix error and warning messages relative to dependency management to enclose dependency specification in single quotes to clearly distinguish specification from each other.
- Skip output of module loading message if module is already loaded.
- Doc: add demonstration material played at SC19 to promote the new features of Modules.
- Contrib: add
playdemo
script to play recorded demonstration cast. - Doc: add a web anchor to each modulefile Tcl command, module sub-command and module environment variable documentation.
- Install: update RPM spec file to enable build on
el8
. - Doc: fix RST syntax for bullet lists in design docs. (fix issue #306)
- In case
module avail
query does not match a directory but only its contained elements (for instancemodule av mod/7
matchesmod/7.1
andmod/7.2
but notmod/
), fix query processing to correctly return latest or default element in case--latest
or--default
flags are set. - In case a
module avail
query performed in a no-indepth mode with--latest
or--default
flags either enabled or disabled, fix query processing to return directory elements if they are part of result. - When a
module avail
query performed in no-indepth mode targets a virtual module, fix result to filter-out the directory holding the virtual module from result. - Fix
module avail --default
queries when modulefile default version does not match query: select latest version from modulefiles matching query unlessimplicit_default
configuration is disabled in which case no default version is returned. - Improve highlighting of module
avail
andwhatis
search result by coloring module names matching search query expressed with the advanced version specifiers.name@1,3
orname@1:3
queries now highlightname/1
andname/3
strings found in search result. - Contrib: add the
mlprof
script which wrapsmodulecmd.tcl
to collect profiling information on its execution. - Contrib: adapt
mb
script to profilemodulecmd.tcl
run tests rather bench them whenprofile
argument is passed to the script. - Improve overall performances of module names and versions comparison by introducing optimized procedures and caching in memory module search results.