Releases: envmodules/modules
Releases · envmodules/modules
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
mlcommand, a handy frontend to themodulecommand.mlreduces the number of characters to type to triggermodule. With no argumentmlis equivalent tomodule list,ml modcorresponds tomodule load modandml -modmeansmodule unload mod. Multiple modules to either load or unload can be combined on a single command.mlaccepts all command-line switches and sub-commands accepted bymodulecommand.mlcommand is defined by default. Its definition can be controlled at./configuretime with--enable-mloption or later on withmlconfiguration option (which definesMODULES_MLenvironment 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,
lodorlodado not match anymore theloadsub-command,loorloastill do. - Add the
-j/--jsoncommand line switches to theavail,list,savelist,whatisandsearchmodule sub-commands to render their output in JSON format. (fix issue #303) - Script: remove need to build project management-specific tools (
mtreview,mb,mlprofandplaydemo) prior using them. - Script: gather all distributed and maintained scripts in a
scriptdirectory at the root of the project repository tree. - Install: provide Windows-specific batch files when
./configureoption--enable-windows-supportis set. module command wrappermodule.cmdis installed inbindirand initialization scriptcmd.cmdininitdir. Those batch files are relocatable and expectmodulecmd.tclin..\libexecdirectory. (fix issue #272 with contribution from Jacques Raphanel) - Install: add ml command wrapper
ml.cmdand install it inbindirwhen./configureoption--enable-windows-supportis set. - Install: introduce envml command wrapper
envml.cmdfor Windowscmdshell and install it inbindirwhen./configureoption--enable-windows-supportis set. (contribution from Jacques Raphanel) - Doc: improve documentation portal index.
- Install: add
dist-wintarget to Makefile in order to build a distribution zipball containing the required files to run Modules on a Windows platform.INSTALL.batandUNINSTALL.batWindows 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 archivetarball 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.shscript to correctly analyses environment when shell functions are found defined in it. - Script: inhibit output generated by scripts evaluated by
createmodule.shandcreatemodule.pyto 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
pythoncommand location and set it as shebang forcreatemodule.pyandgitlog2changelog.py. Ifpythoncommand is not found,python3thenpython2are searched. - Install: enable to pass a specific Python interpreter command name or location at configure step with
--with-pythonoption. Specified command name or location should be found on build system only if building from git repository. - Install: build
createmodule.pyscript and install it inbindir. - Install: update RPM spec file to explicitly define Python interpreter location.
- Script: fix
createmodule.pyscript for Python3 (fix issue #315 with contribution from Armin Wehrfritz) - Lift Perl variable strictness when defining
_mlstatusvariable in casemodulecmd.tcloutput is directly evaluated without use of themodulesub-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
compoptBash 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
sedoption-Eis supported and fallback to-rotherwise in shell completion scripts. (fix issue #317) - Add support for the
NO_COLORenvironment variable (https://no-color.org/) which when set (regardless of its value) prevents the addition of ANSI color. When set,NO_COLORprevails overCLICOLORandCLICOLOR_FORCEenvironment variables.MODULES_COLORoverrides these three variables. (fix issue #310) - Script: when analyzing environment variable changes in
createmodule.shapplied by shell script passed as argument, produce asetenvmodulefile 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.tcland 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.tclinternals 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.tclinternal 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.cmdscript for Windows platform providing similar behavior thanenvmlBash script. (contribution from Jacques Raphanel) - Init: add Bash shell completion for the
mlcommand. (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
availsearch over a symbolic version targeting a directory now correctly returns the special modules (alias and virtual module) lying in this directory. (fix issue #327) whatisandpathssearches 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,whatisandpathssearches if their query does not fully match special module name. (fix issue #329) - Filter-out from the output of the
aliasessub-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_PRELOADas quarantine var along withLD_LIBRARY_PATHin RPM specfile. - When
implicit_defaultandadvanced_version_specconfiguration are enabled, automatically define adefaultandlatestsymbolic 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_LMALTNAMEenvironment 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
playdemoscript 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 availquery does not match a directory but only its contained elements (for instancemodule av mod/7matchesmod/7.1andmod/7.2but notmod/), fix query processing to correctly return latest or default element in case--latestor--defaultflags are set. - In case a
module availquery performed in a no-indepth mode with--latestor--defaultflags either enabled or disabled, fix query processing to return directory elements if they are part of result. - When a
module availquery 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 --defaultqueries when modulefile default version does not match query: select latest version from modulefiles matching query unlessimplicit_defaultconfiguration is disabled in which case no default version is returned. - Improve highlighting of module
availandwhatissearch result by coloring module names matching search query expressed with the advanced version specifiers.name@1,3orname@1:3queries now highlightname/1andname/3strings found in search result. - Contrib: add the
mlprofscript which wrapsmodulecmd.tclto collect profiling information on its execution. - Contrib: adapt
mbscript to profilemodulecmd.tclrun tests rather bench them whenprofileargument 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.
4.4.0
- Doc: add Return file basename on module-info name for full path modulefile recipe to cookbook. (fix issue #297)
- Rework internal handling of configuration options to gather all option definitions in a global array and use the same initialization and retrieval procedure, named
getConf, for all these options. - Add the
setConf,unsetConfandlappendConfprocedures to provide unified ways to set the value of configuration option. These procedures should be used in site configuration files to override configuration option value instead of directly setting corresponding option variable as it was done in previous Modules releases. - Add the ability to match module specification in a case insensitive manner. Default case sensitiveness behavior is set at
./configuretime with the--with-icaseoption. It could be superseded with theMODULES_ICASEenvironment variable, that could be set withconfigmodule sub-command through theicaseoption. Command-line switch--icase(-i) enables to supersede defined case sensitiveness configuration. (fix issue #212 with contribution from Eric Deveaud) - Introduce the extended default mechanism, to help selecting a module when only the first numbers in its version are specified. Starting portion of the version, part separated from the rest of the version string by a
.character, will get matched to the appropriate complete version name. In case multiple versions match partial version specified and only one module should be returned, default version (implicit or explicit) among matches is returned. In caseimplicit_defaultoption is disabled and no explicit
default is found among matches, an error is returned. This mechanism is enabled through a new configuration option namedextended_default(which definesMODULES_EXTENDED_DEFAULTenvironment variable when set). It may be enabled by default inmodulecmd.tclscript with option--enable-extended-defaultpassed to the./configurescript. - Introduce the advanced module version specifiers mechanism to specify finer constraints on module version. This new feature enables to filter the module selection to a given version list or range by specifying after the module name a version constraint prefixed by the
@character. It leverages the version specifier syntax of the Spack package manager. A single version can be specified with the@versionsyntax, a list of versions with@version1,version2,..., a greater than or equal to range with@version1:syntax, a less than or equal to range with@:version2and an in between or equal to range with@version1:version2syntax. In caseimplicit_defaultoption is disabled and no explicit default is found among version specifier matches, an error is returned. This mechanism is enabled through a new configuration option namedadvanced_version_spec(which definesMODULES_ADVANCED_VERSION_SPECenvironment variable when set). It may be enabled by default inmodulecmd.tclscript with option--enable-advanced-version-specpassed to the./configurescript. - Conflict defined with a generic module name or an advanced version specifier may match multiple loaded modules (generally in case multiple loaded modules share same root name). Loaded environment analysis has been fixed to bind conflict to all loaded modules matching it. As a result the Dependent Reload mechanism is not triggered when one loaded module matching conflict is removed if another loaded module still match the conflict.
- Doc: add Module selection contexts, Insensitive case, Extended default and Advanced module version specifiers design notes.
- Make
MODULESHOMEenvironment variable controllable through theconfigsub-command withhomeconfiguration option. A--with-moduleshomeargument is also added to the ./configure script to set specific default value for this option at installation time. (fix issue #292)
4.3.1
- Contrib: add
mbscript to bench Modules versions. - Correct
modulecmd.tclscript startup to correctly report error in case Tcl extension library fails to load. (fix issue #284) - Install: fix typo on
CFLAGSdefinition inlib/Makefile. (fix issue #287 with contribution from Felix Neumärker) - Remove useless code in Modules Tcl extension library
- Make URLs in README correctly rendered in HTML. (contribution from Per Persson)
- Doc: clarify modulefile evaluation modes in modulefile.4 man page. (fix issue #289)
- When looking at the closest match among loaded modules when switching module with just a single module argument specified, load the information on the currently set environment to get the alternative names of loaded modules prior to look at closest module match. (fix issue #290)
- Doc: describe the way to determine the site-specific configuration script location in cookbook recipes implying the installation of such a file. (fix issue #266)
- Doc: add Log module command recipe to cookbook. (fix issue #283)
- Doc: add Expose procedures and variables to modulefiles recipe to cookbook.
- Doc: add Make defined modulepaths persist over sudo recipe to cookbook.
- Doc: add Ensure user fully qualify the modules they use recipe to cookbook.
- Introduce the
wa_277configuration option to workaround an issue with Tcsh history mechanism. Defaultmodulealias definition for Tcsh hits an issue with shell history mechanism: erroneous history entries are recorded each time themodulecommand is called. Whenwa_277option is enabled (which sets theMODULES_WA_277environment variable to 1), an alternative module alias is defined which fixes the history mechanism issue. However the alternative definition of the module alias weakens shell evaluation of the code produced by modulefiles. Characters with special meaning for Tcsh shell (like { and }) may not be used anymore in shell alias definition elsewhere the evaluation of the code produced by modulefiles will return a syntax error. (fix issue #277) - Doc: add Tips for Code Reuse in Modulefiles recipe to cookbook. (contribution from Tom Payerle)
- Fix the
whatisandpathssub-command results for module symbolic versions targeting a directory whenimplicit_defaultconfiguration option is disabled. No error is returned and same result is now obtained whether the symbolic name or its target is used as argument for those two sub-commands. (fix issue #294) - Fix the
whatisandpathssub-command results for module aliases targeting a directory whenimplicit_defaultconfiguration option is disabled. No error is returned and same result is now obtained whether the alias name or its target is used as argument for those two sub-commands. (fix issue #295) - Rework all the ternary operator expressions in
modulecmd.tclthat may result in a nan value (whatever the case used to write this string) as theexprTcl command raises an error when it returns such a value, which breaks Modules as soon as a modulefile, an alias or a symbolic version is named nan. (fix issue #296)
4.3.0
- Introduce Vim addon files to highlight the modulefile syntax. Installation of these files, which is enabled by default, is controlled by the
--enable-vim-addonsand--vimdatadirconfigure options. (contribution from Felix Neumärker) - If modulefile is fully read, cache the content read and the file header computed to avoid another file read if the same modulefile need to be read multiple times.
- Except for path, paths, list, avail and aliases module commands always fully read a modulefile whether its full content is needed or just its header to verify its validity. Proceed this way to only read file once on commands that first just check modulefile validity then read again valid files to get their full content.
- Introduce Modules Tcl extension library (written in C) to extend Tcl language in order to provide more optimized I/O commands to read a file or a directory content than native Tcl commands do.
- Install: add
--libdir,--enable-libtclenvmodules,--with-tcland--with-tclincludeoptions to configure script to control libtclenvmodules build and installation. - When an error is caught during modulecmd.tcl first initialization steps, ensure the error report facility is initialized to render error message.
- When looking for modulefiles in enabled modulepaths, take
.modulercfile found at the root of a modulepath directory into account. Which means these rc files are now evaluated like global rc files and can be used to define module aliases targeting modulefiles stored in the underlying file tree. - Correctly get available default (-d) and latest (-L) version whether search pattern is passed with an ending forward slash character or not or if it contains a
*wildcard character. - Append a forward slash character to any directory result of an avail command to better distinguish these directories from regular files.
- Introduce the ability to control whether
availcommand search results should recursively include or not modulefiles from directories matching search query by use of the--indepthand--no-indepthcommand-line switches or the environment variableMODULES_AVAIL_INDEPTH. Default behavior is set at the./configuretime with the--enable-avail-indepthand--disable-avail-indepthswitches. (fix issue #150) - Update
bash,fishandzshcompletion scripts to propose available modulefiles in the no in depth mode. - Add the ability to graphically enhance some part of the produced output to improve readability by the use of the
--colorcommand-line switch or theMODULES_COLORenvironment variable. Both accept the following values:never,autoandalways. When color mode is set toauto, output is colored if stderr is attached to a terminal. Default color mode could be controlled at configure time with the--enable-colorand the--disable-coloroption, which respectively correspond to theautoandnevercolor mode. - Control the color to apply to each element with the
MODULES_COLORSenvironment variable or the--with-dark-background-colorsand--with-light-background-colorsconfigure options. These variable and options take as value a colon-separated list in the same fashionLS_COLORSdoes. In this list, each element that should be highlighted is associated to a Select Graphic Rendition (SGR) code. - Inform Modules of the terminal background color with the
MODULES_TERM_BACKGROUNDenvironment variable or the--with-terminal-backgroundconfigure option, which helps to determine if either the dark or light background colors should be used to color output in case no specific color set is defined with theMODULES_COLORS. - Color prefix tag of debug, error, warning, module error and info messages.
- Highlight the modulefile or collection name when reporting messages for a an action made over this modulefile or collection.
- Color the modulepaths reported on a
usecommand. - Highlight title of separator lines or column name of table header.
- Color modulepaths, directories, aliases and symbols reported by the
avail,aliases,list,whatisandsearchcommands. - When color mode is enabled and module aliases are colored, do not associate them a
@tag as the color already distinguish them from regular modulefile. - When color mode is enabled and a Select Graphic Rendition (SGR) code is set for the
defaultmodulefile symbol, apply this SGR code to the modulefile name instead of associating it thedefaultsymbol tag. - Highlight matched module search query string among
avail,whatisandsearchcommand results. - Highlight the modulefile and collection full path name on
display,help,testandsaveshowcommand reports. - Color modulefile Tcl commands set in a modulefile on a
displaycommand report. - Color module commands set in a collection on a
saveshowcommand report. - Re-introduce
clearsub-command. (fix issue #203) - Leverage
--forcecommand-line switch onclearsub-command to skip confirmation dialog. (fix issue #268) - Init: improve readability of variable definition operations by writing one definition operation per line rather having multiple commands on a single line like
VAR=val; export VAR. (fix issue #225) - Add the ability to define a site-specific configuration file with an environment variable:
MODULES_SITECONFIG. When set, the script file pointed by the variable is sourced (if readable) after the site-specific configuration file initially defined inmodulecmd.tcl. (contribution from Ben Bowers, fix issue #234) - Doc: add description in the module.1 man page of
MODULERCFILEin the environment section andsiteconfig.tclin the files section. - Install: provide at installation time a bare site-specific configuration script in designated
etcdirif no pre-existingsiteconfig.tclfile is found at designated location. - Introduce the
configsub-command to get and setmodulecmd.tcloptions and to report its current state. - Contrib: update
createmodule.pyscript to support execution from the cmd shell. (contribution from Jacques Raphanel, fix issue #270) - Add the ability to configure when unloading a module and multiple loaded modules match request if firstly loaded module should be chosen or lastly loaded module. Configure option
--with-unload-match-orderdefines this setting which can be superseded with theMODULES_UNLOAD_MATCH_ORDERenvironment variable. This variable can be set with the optionunload_match_orderon theconfigsub-command. By default, lastly loaded module is selected. It is recommended to keep this behavior when the modulefiles used express dependencies between each other. - Add the ability to configure whether an implicit default version should be defined for modules with no default version explicitly defined. When enabled, which stays the default behavior, a module version is automatically selected (latest one) when the generic name of the module is passed. When implicit default selection is disabled, the name of modules to evaluate should be fully qualified elsewhere an error is returned. This option is set at
./configuretime with the--enable-implicit-defaultand--disable-implicit-defaultoptions. It could be superseded with theMODULES_IMPLICIT_DEFAULTenvironment variable, that could be set withconfigmodule sub-command through theimplicit_defaultoption. - Install: add to the configure script the
--with-locked-configsoption to ignore environment variable superseding of Modules configurations defined inmodulecmd.tclscript. Lockable configuration option areextra_siteconfigandimplicit_default. Currently locked options are reported through thelocked_configsoption on theconfigsub-command. - Introduce the ability to control the module search match. Search query string should match module name start or any part of module fully qualified name. Default search match behavior is set at
./configuretime with the--with-search-matchoption. It could be superseded with theMODULES_SEARCH_MATCHenvironment variable, that could be set withconfigmodule sub-command through thesearch_matchoption. Command-line switches--starts-with(-S) and--contains(-C) foravailmodule sub-command enable to supersede defined search match configuration. - Introduce the ability not to set the shell startup file that ensure
modulecommand is defined once shell has been initialized. Setting shell startup file currently means definingENVandBASH_ENVenvironment variables to the Modules bourne shell initialization script../configureoptions--enable-set-shell-startupand--disable-set-shell-startupdefine if shell startup should be set or not by default. It could be superseded with theMODULES_SET_SHELL_STARTUPenvironment variable, that could be set withconfigmodule sub-command through theset_shell_startupoption. - Cookbook: add the test-modulefiles recipe. (fix issue #182 with contribution from Colin Marquardt)
- Fix location of global RC file to
@etcdir@/rcinstead of@prefix@/etc/rcto cope with@etcdir@specific setup (@etcdir@defaults to@prefix@/etc). - Take into account Modules initialization configurations found in
etcdirectory if they exist rather ininitdirectory. Ifinitrcconfiguration file is found inetcdirthen it is preferred overmodulercfile ininitdir. Following the same trend,modulespathconfiguration file is found inetcdirthen it is preferred over.modulespathfile ininitdir. - Introduce the ability to install the Modules initialization configuration files in the
etcdirrather than in theinitdir. A new configure option is introduced for this task:--with-initconf-in. Accepted values for this option are:etcdirorinitdir(default). - Add the
--enable-modulespathconfigure option, which is an alias for the--enable-dotmodulespathoption as.modulespathconfiguration file i...
4.2.5
- Correctly escape
?character in shell alias. (fix issue #275) - When resolving the enabled list of modulepaths, ensure resolved path entries are unique. (fix issue #274)
- Right trim '#' characters from the fetched modulefile magic cookie string to ensure a correct compatibility version comparison. Useful when modulefile first line is equal to
#%Module4.2##############. - Fix argument parsing for the
append-path,prepend-pathandremove-pathmodulefile commands to consider every arguments found after the variable name as variable values and not command option even if argument starts with-character. (fix issue #278) - Fix automatic loading of modulefiles when multiple module names are set on a single
module loadmodulefile command. When auto_handling mode was disabled, the load of not loaded modules was not achieved as soon as some modules on this list were already loaded. (fix issue #281)
4.2.4
- Better track each module evaluation and the context associated to it in order to report a more accurate information on the additional modules loaded or unloaded when proceeding the main evaluation request. (fix issue #244, #245, #246, #247 and #248)
- Doc: preserve quotes and dashes when making HTML docs. (fix issue #250 with contribution from Riccardo Coccioli)
- Fix hanging
listsub-command when terminal width is equal to the single column text width to be printed. (contribution from Jesper Dahlberg) - During an additional evaluation triggered by an automated module handling mechanism, ensure warning and error messages are reported under the message block of the main evaluation. (fix issue #252)
- During the unload of a module when the automated module handling mode is disabled, report a warning message for each unload of a useless requirement that fails as done when the automated module handling mode is enabled. (fix issue #253)
- When multiple modules are listed on a
prereqcommand, drop the output of those modules that fails to load (by the Requirement Load automated mechanism) to only keep the output of the module whose load succeed. (fix issue #254) - Fix
switchsub-command when the switched-off module cannot be unloaded when other loaded modules depend on it. Whole switch process is failed and no load of the switched-on module is attempted. (fix issue #251) - When switching modules, report failure of switched-off module unload or switched-on module load under the message block of the switch action. A failed switched-off module unload is reported as an error, as it aborts the switch evaluation, whereas a failed switched-on module load is reported as a warning. (fix issue #255)
- When a module requirement is seen missing but the load of this module was attempted, report a more specific error or warning message to let user understand that the load of the requirement was attempted but failed. (fix issue #257)
- When loading a module, report any missing requirement on the message reporting block corresponding to this module load. This warning or error message comes in addition to the eventual Requirement Load message reported under the message block of the main evaluation. (fix issue #258)
- When unloading a module which has some dependent module still loaded, produce a more specific error or warning message if an evaluation of these dependent modules has been realized or if the unload of the required module is forced. (fix issue #259)
- When a conflicting module is seen loaded but the unload of this module was attempted, report a Conflict Unload error or warning message toward the main evaluation message block. (fix issue #261)
- When loading a module, report any loaded conflict on the message reporting block corresponding to this module load. This warning or error message comes in addition to the eventual Conflict Unload message reported under the message block of the main evaluation. (fix issue #261)
- Correctly report loading state of conflicting module. (fix issue #262)
- Adapt warning, error and info messages relative to the Dependent Reload mechanism to distinguish the unload phase from the load (reload) phase of this mechanism. In the automated module handling summary report, unloaded modules via this mechanism are reported in the Unloading dependent list and modules reloaded afterward are reported against the Reloading dependent list. (fix issue #263)
- When the automated module handling mode is disabled, do not attempt to load a requirement expressed in a modulefile with a
module loadcommand, if this requirement is already loaded or loading. - Skip load or unload evaluation of a module whose respectively load or unload was already attempted but failed. If this second evaluation attempt occurs within the same main evaluation frame. (fix issue #264)
- When reloading modules through the Dependent Reload automated mechanism, prevent modules to automatically load of other modules with the
module loadmodulefile command, as it is done for theprereqcommand. (fix issue #265) - Raise an error when an invalid option is set on
append-path,prepend-pathorremove-pathmodulefile command. (fix issue #249) - Zsh initializes by default the
MANPATHenvironment variable to an empty value when it starts. To preservemanpathsystem configuration even after addition to this variable by modulefiles, setMANPATHvariable to:if found empty. (improve fix for issue #224) - Doc: provide a short installation guideline in README file. (fix issue #230)
4.2.3
- Add all the module dependency-related internal information to those saved prior a modulefile evaluation in order to correctly restore internal state in case modulefile evaluation fails.
- Init: in shell initialization scripts, initialize
MANPATHif not set with a value that preservesmanpathsystem configuration even after addition of paths to this variable by modulefiles. (fix issue#224) - Enable to define an entire path entry to the
MODULEPATHvariable which corresponds to a variable reference only. (fix issue#223) - Cookbook: add the modulefiles-in-git recipe. (contribution from Scott Johnson)
- When
module switchcommands are found in modulefiles, track switched-off modulefile as a conflict and switched-to modulefile as a requirement to apply same behaviors than formodule loadandmodule unloadcommands in modulefiles. Ifmodule switchhas only one argument, do not define a conflict toward switched-off modulefile. CAUTION: it is not recommended to usemodule switchcommand in modulefiles. (fix issue#229) - When unloading a module, revert
module switchcommands found in modulefile: switched-on module is converted to amodule unload, like formodule loadcommand. Nothing is done for switched-off module, like formodule unloadcommand. (fix issue#226) - For default element in a modulefile directory which is a module alias that points to a modulefile, when this modulefile is loaded, it receives as alternative names the eventual module aliases set on the distant directory holding the alias pointing to it. (fix issue#231)
- When unloading a module that contains
module loadormodule switchcommands in its modulefile, select for unload the automatically loaded requirement module which has been loaded prior its dependent. (fix issue#232) - Doc: describe Emacs settings useful for adhering to coding conventions in CONTRIBUTING guide. (fix issue#233 with contribution from Ben Bowers)
- When looking for a loaded or loading dependency requirement, select among the eventual multiple candidates the closest match to the dependent module.
- During the unload of a module, if the unload of one of its dependent (by the Dependent Unload mechanism) fails, abort the whole unload process. Exception made if the force mode is enabled. In this case failing module stays loaded and the Dependent Unload mechanism continues with next module to unload.
- During the unload of a module, if the unload of one of its useless requirements (by the Useless Requirement Unload mechanism) fails, keep the requirements of this failing module loaded. Such error is reported as a warning and it does not stop the whole unload process. (fix issue#240)
- During the load or the unload of a module, if the unload of one of its dependent (by the Dependent Reload mechanism) fails, abort the whole unload or load process. Exception made if the force mode is enabled. In this case failing module stays loaded and Dependent Reload mechanism continues with next module to unload. This failing module is removed from the Dependent Reload list, so it will not take part of the load phrase of the mechanism. (fix issue#239)
- During the load or the unload of a module, if the load of one of its dependent (by the Dependent Reload mechanism) fails, abort the whole unload or load process. Exception made if the force mode is enabled. In this case failing module stays loaded and Dependent Reload mechanism continues with next module to load. When the mechanism is applied during a
switchcommand, force mode is enabled by default on the load phase. (fix issue#241) - When reloading all loaded modules with the
reloadsub-command, if one reloading module fails to unload or load, abort the whole reload process to preserve environment sanity. (fix issue#237) - During the unload of a module when the automated module handling mode is disabled and this module declares its requirements with the
module loadmodulefile command. If the unload of one of its useless requirements (by the Useless Requirement Unload mechanism) fails, whole unload process is not aborted and continue with next module to unload. (fix issue#238) - Contrib: add
mtreviewutility script that analyzes test suite log file to compare actual and expected output of failed test.mtdoes not output the full test suite logs anymore but only the information produced bymtreviewon failed tests. - Install: exclude Continuous Integration configurations from dist tarballs.
4.2.2
- Correct the Dependent Unload mechanism when it triggers the unload of 2 modules making together a requirement from another module. This module is now also added to the dependent modules to unload.
- Doc: add a cookbook section in the documentation and port there the 3 pre-existing recipes: inhibit-report-info, top-priority-values and unload-firstly-loaded.
- Doc: add a CONTRIBUTING guide.
- Doc: fix a typo on the Python initialization example in module man page.
- Doc: add a FAQ entry to describe the use of module from Makefile. (with contribution from Robert McLay)
- Trim any white-space, newline or
;characters at the beginning or end of the function body passed to set-function modulefile command. - Init: add recognition of the
--auto,--no-autoand--forcecommand-line switches in fish shell completion script. - Init: add recognition of the
--auto,--no-auto,--force,--paginateand--no-pagercommand-line switches in zsh shell completion script. - When the load of a modulefile is asked but a conflict is registered against this modulefile by an already loaded module, the load evaluation is now performed and the conflict is checked after this evaluation. If the conflict is still there, this evaluation (and the evaluation of its requirements) is rolled back. (fix issue#216)
- Init: fix
_module_not_yet_loadedalias in tcsh completion script to handle situation whennoclobbervariable is set. Also ensure actualrmcommand is called and not an alias. (fix issue#219) - Fix warning message when the load of a modulefile is forced over a reflexive conflict (message was reported twice).
- When looking at the dependency of a loaded module, only consider requirement loaded before dependent module (holding a prior position in the loaded module list) as valid. Those loaded after dependent module are considered as an unmet dependency thus they are not taking part in the Dependent Unload, the Useless Requirement Unload and the Dependent Reload mechanisms.
4.2.1
- Cookbook: add the inhibit-report-info recipe.
- Cookbook: port unload-firstly-loaded and top-priority-values recipes to v4.2.
- Init: fix listing of loaded modules for fish and tcsh shell completions.
- Init: fix saved collection listing when no collection found for bash, zsh, tcsh and fish shell completions.
- Adapt
systemmodulefile Tcl command to execute the command passed as argument through shell, like it is performed on compatibility version. (fix issue#205) - Correctly filter modulefile search memory cache entries when using a full search result to search later on a specific modulefile.
- Prefix debug messages by information on the current modulefile or modulerc interpreter if any.
- Init: fix listing of loaded modules on unload and switch sub-commands for bash shell completion.
- Refrain
module unloadmodulefile command from unloading a module required by another loading module. - Enable
is-loadedmodulefile Tcl command in modulerc interpretation context, like done on compatibility version. (fix issue#207) - Check a required module is not already loading before attempting to load it. Helps to handle cyclic dependencies.
- Compute loaded modules requirement dependency relations without cycle and consider the module closing the cycle in a constraint violation state to avoid reloading loops on the Dependent Reload mechanism.
- Safely unset dependency reference when computing dependency relations as some dependencies expressed may target same module.
- Ensure a loaded module matching multiple entries of a same or
prereqwill just be considered as one module matching this requirement. - Init: quote prompt in csh and tcsh script with
:qrather double-quotes to accommodate prompts with embedded newlines. (fix issue#209 with contribution from Satya Mishra) - Init: skip shell environment alteration if
autoinitcommand fails. (fix issue#208) - Reword path-like variable element counter reference handling to simply ignore the counter values not coherent with the content of related path-like variable. (fix issue#206)