Releases: envmodules/modules
Releases · envmodules/modules
5.0.0-alpha
- Remove deprecated
createmodule.shandcreatemodule.pytools as shell script to modulefile conversion is now achieved with thesh-to-modsub-command. - Remove mention of the
init*sub-commands in module usage message to put focus on the collection handling sub-commands. - Do not declare anymore the
chdir,module,module-trace,module-verbosity,module-userandmodule-logcommands under the modulerc Tcl interpreter as no-op commands. A clear error message is obtained if these commands are still used in modulerc files instead of silently ignoring them. - Return by default an empty string rather
_UNDEFINEDongetenvmodulefile command if passed environment variable is not defined. - Align empty directory name error message obtained on
usesub-command with message obtained when module or collection name is empty. - Accept non-existent modulepath on
usesub-command. - Install: installation option
--enable-auto-handlingis set on by default which enables the automated module handling mode (seeMODULES_AUTO_HANDLING). - Install: installation option
--enable-extended-defaultis set on by default which allows partial module version specification (seeMODULES_EXTENDED_DEFAULT). - Install: installation option
--enable-advanced-version-specis set on by default which activates the Advanced module version specifiers - Install: installation option
--enable-coloris set on by default which enables theautooutput color mode (seeMODULES_COLOR). - Install: installation option
--with-icaseis set tosearchby default to activate case insensitive match on search contexts (seeMODULES_ICASE). - Install: installation option
--enable-new-featureshas been reset following major version change as all the options it implied are now enabled by default. - Install: installation option
--enable-set-shell-startupis set off by default but could be enabled once installed through theinitrcconfiguration file. - Install: installation option
--with-initconf-inis set toetcdirby default to locate configuration files in the directory designated by the--etcdiroption. Therefore the initialization configuration file is namedinitrcin this directory, and the modulepath-specific configuration file is namedmodulespath. - Only look at configuration files found in the location designated by the
--etcdiror--initdiroption (depending on the value of--with-initconf-inoption). Configuration files were previously searched in both locations. - Install: remove installation option
--enable-compat-version. Compatiblity version co-installation is discontinued.switchmlshell function andMODULES_USE_COMPAT_VERSIONare thus removed as well. - Testsuite: introduce the non-regression quick test mode. When the
QUICKTESTenvironment variable is set to1, only the main tests from the non-regression testsuite are run. When first argument of themtscript isquick, tests are run in quick mode. - Install: run non-regression testsuite in quick mode in RPM spec file.
- Rename the environment variables that are used by Modules to track loaded environment state (variables whose name starts with
MODULES_LM). A__prefix is added to the name of these variables to indicate that they are intended for internal use only. - Rename the environment variables used to indirectly pass to
modulecmd.tclthe value of variables set in quarantine (variables whose name finishes with_modquar). A__MODULES_QUAR_prefix is applied to the name of these variables instead of the_modquarsuffix to indicate they are intended for Modules internal use of only. - Update Tcl requirement to version 8.5 as Tcl 8.4 is deprecated since a long time and this version is not available anymore on recent OS distributions. Update internal code of
modulecmd.tclto take benefit from the features brought by Tcl 8.5.
4.8.0
- Introduce the
editsub-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
editorconfiguration option to select the text editor to use witheditsub-command. When this option is set through theconfigsub-command, theMODULES_EDITORenvironment variable is set. The--with-editorinstallation option controls the default value ofeditorconfiguration option. If not set at installation time,viis set as default editor. - Default value of
editorconfiguration option is overridden by theVISUALor theEDITORenvironment variables, which are both in turn overridden by theMODULES_EDITORenvironment variable. - Doc: fix
modulecmd.tclinternal state check in recipes example codes. (fix issue #396) - The
Advanced module version specifiersmechanism 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-modulefilerecipe how to use thesource-shcommand when software provide a specific initialization script for each shell it supports. (fix issue #399) - When defining a shell function with the
set-functionmodulefile command, only export this function when using the Bash shell (using theexport -fshell 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
variantsdesign notes. - Add the
variantmodulefile 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,variantinstantiates an element in theModuleVariantarray 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 specifiersto handle variant specification followingSpack_'s syntax (e.g., name=value). When theadvanced_version_specconfiguration is enabled, variant could be specified anywhere a module can be specified. - Add the
--defaultoption to thevariantmodulefile 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
--booleanoption to thevariantmodulefile 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 specifiersto 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_specconfiguration is enabled and if sub-command acceptsAdvanced module version specifiers(likeloadorunloadsub-commands). A false value may be set to Boolean variant this way. - Add the
variant_shortcutconfiguration 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-shortcutoption. No variant shortcut is defined by default. This value could be superseded by setting up thevariant_shortcutoption withconfigsub-command. Which sets theMODULES_VARIANT_SHORTCUTenvironment variable. - Enhance the
Advanced module version specifiersto handle variant shortcut specification (e.g., value). - Record in user loaded environment, with
MODULES_LMVARIANTenvironment 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
variantelement in the allowed value list of thelist_outputandlist_terse_outputconfiguration options. Set this new element in the default value list of thelist_outputoption. When set, the variant defined for loaded modules are reported on modulelistcommand output. - Add the
vacolor key in default light and dark color palettes to graphically enhance the report of variant value. - Update the key section to explain on
listsub-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_versionconfiguration 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
getvariantmodulefile command to query for currently evaluating module the value of a given variant name. - When translating the
@loadedversion 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,pathandpaths) is ignored. - Raise an error if a variant named
versionis declared in a modulefile to let room for the future implementation of this specific variant. - Doc: describe in the
diff_v3_v4document argument handling change onsetenvsince v3.2. (fix issue #402) - Introduce the
try-loadsub-command which likeloadsub-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
rcexpandparamZsh option when initializing themodulecommand 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
configurescript 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-modmechanism 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,ModuleToolVersionandModulesCurrentModulefile. - Doc: update the description and default value of the
--with-dark-background-colorsand--with-light-background-colorsinstallation options. - Doc: add description of changes that occurred on versions 4.6 and 4.7 for the
--with-dark-background-colorsand--with-light-background-colorsinstallation options and for theMODULES_COLORSenvironment variable. - Doc: correct the default value of the
--with-tag-abbrevinstallation option. - Doc: add Sticky modules cookbook recipe.
4.7.0
- Doc: simplify TOC of
MIGRATINGdocument - Add the
ModuleToolandModuleToolVersionModules variables to determine during modulefile or modulerc evaluation the name and version of the module implementation currently in use. - Introduce the
versioncmpmodulefile 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_LMALTNAMEenvironment variable. Prefix these alias entries with theal|string. - Fetch modulefile modification time only if required by
listsub-command display format. - Use symbolic versions recorded in environment, with
MODULES_LMALTNAMEvariable, to report the symbols applying to loaded modules onlistsub-command. Modulerc files are not evaluated anymore when performing a module list. - Move the definition of the
FPATHenvironment variable for Modules initialization on ksh shell from the initialization script of this shell to the resulting output of theautoinitsub-command. - Introduce the
shells_with_ksh_fpathconfiguration option to define a list of shell where to ensure that any ksh sub-shell will get the module function defined by use of theFPATHenvironment variable. When theshells_with_ksh_fpathoption is set through theconfigsub-command, theMODULES_SHELLS_WITH_KSH_FPATHenvironment variable is set. Accepted values are a list of shell among sh, bash, csh, tcsh and fish separated by colon character (:). - Add the
implicit_requirementconfiguration 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-requirementoption (enabled by default). This value could be superseded by setting up theimplicit_requirementoption withconfigsub-command. Which sets theMODULES_IMPLICIT_REQUIREMENTenvironment variable. (fix issue #260) - Add the
--not-reqoption to themodulemodulefile command to inhibit for itsloadandunloadsub-commands the definition of a prereq or conflict requirement onto specified modules. - Add the
lpopStateandcurrentStateprocedures to respectively remove or return the last entry from the list of values of a given state. - Add the
topStateanddepthStateprocedures 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
loadedsymbolic 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
availsub-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,stickyandsuper-sticky. - Record tags applying to each loaded module in the
MODULES_LMTAGenvironment variable to make this information persist after module being loaded. - Report tags applying to the loaded modules returned by the
listsub-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,stickyandsuper-sticky. - Introduce the
module-info tags<module-info>modulefile command to query the tags that apply to the currently evaluated modulefile. - Add the
module-tagmodulefile command to associate tag to designated modulefile. Those tags are reported onavailandlistsub-commands along the module they are attached to.module-tagsupports the advanced module version specifier syntax. - Add the
tag_abbrevconfiguration option to define abbreviated strings for module tags and use these abbreviations instead of tag names when reporting tags onavailandlistcommand results. Default value for this option could be set at configure time with the--with-tag-abbrevoption. By default the following abbreviations are set:aLfor auto-loaded,Ffor forbidden,Hfor hidden,Hfor hidden-loaded,Lfor loaded,nFfor nearly-forbidden,Sfor sticky,sSfor super-sticky. This value could be superseded by setting up thetag_abbrevoption withconfigsub-command. Which sets theMODULES_TAG_ABBREVenvironment 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_nameconfiguration 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-nameoption (empty by default). This value could be superseded by setting up thetag_color_nameoption withconfigsub-command. Which sets theMODULES_TAG_COLOR_NAMEenvironment variable. - Add the
--hidden-loadedoption to themodule-hidemodulefile command that indicates module should be hidden once loaded. When set, thehidden-loadedmodule tag applies to module specification set onmodule-hidecommand. - Do not report on
listsub-command results the loaded modules associated with thehidden-loadedtag, unless if the--alloption is set. - Doc: add an
hidden-loadedexample in the Hide and forbid modules cookbook recipe. - Introduce the
verbose2verbosity level betweenverboseandtracelevels. Verbose2 mode can be enabled by setting theverbosityconfig to theverbose2value or by using the-vcommand-line switch twice. - Do not report the load, unload or switch of modules set
hidden-loadedif these modules have been loaded, unloaded or switched automatically. Unless the verbosity mode is set toverbose2or 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
verbose2or any higher level. (fix issue #187) - Doc: improve readability of version 4 improvements in
diff_v3_v4document. - Introduce stickyness: module tagged
stickywithmodule-tagcommand cannot be unloaded unless if the unload is forced or if the module is reloaded. (fix issue #269) - Introduce super-stickyness: module tagged
super-stickywithmodule-tagcommand 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
INSTALLdocument 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
MIGRATINGdocument. - Abort modulefile read if first file content chunk does not start with the
#%Modulemagic cookie. (fix issue #375) - Install: add installation option
--enable-new-featuresthat 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
availandlistsub-commands to explain the meaning of graphical renditions or of elements set in parentheses or chevrons along module name. - Fix output of
availandlistsub-commands on very small termminal width. (fix issue #378) - Add
mcookie_version_checkconfiguration to define if version set in modulefile magic cookie should be checked againstmodulecurrent 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-checkor can be superseded later on with theMODULES_MCOOKIE_VERSION_CHECKenvironment variable. (fix issue #377) - Fix output of modulefile evaluation error stack trace on very small terminal width. (fix issues #379 and #381)
- Correct
configsub-command to setnearly_forbidden_daysconfiguration. (fix ...
4.6.1
- Lib: implement
initStateClockSecondsas a Tcl command in libtclenvmodules to provide an optimized way to retrieve current Epoch time. - Lib: implement
parseDateTimeArgas 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
mbutility. - Doc: add Use new features without breaking old module command cookbook recipe
- Doc: rework option description for
module-hideandmodule-forbidcommands 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
clearsub-command to unset theMODULES_LMSOURCESHenvironment variable. (fix issue #367) - Correctly return on
availsub-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-hidestatements 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
purgesub-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,isStateDefinedandisStateEqualprocedures to provide unified ways to set or check the value of state. - Introduce the
sh-to-modsub-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-shmodulefile command, to evaluate shell script and apply resulting environment changes through modulefile commands. When a modulefile usingsource-shmodulefile command is loaded, the modulefile commands resulting from shell script evaluation are recorded in the :envvar:MODULES_LMSOURCESHenvironment 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-modsub-command are tracked. The same list of shells thansh-to-modsub-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-versionhas to be set to trigger this build. - Introduce the
usernamesub-command to themodule-infomodulefile command to get the username of the user currently runningmodulecmd.tclor to test a string passed as argument corresponds to this username. - Introduce the
usergroupssub-command to themodule-infomodulefile command to get all the groups of the user currently runningmodulecmd.tclor to test a string passed as argument corresponds to one of these groups. - Doc: improve markup of
NEWSandMIGRATINGdocuments 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-supportconfigure option to add mechanism inmodulecmd.tclto 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
getFilesInDirectoryprocedure of Modules Tcl extension library. - Doc: add Hide or forbid modulefile design notes.
- Add the
module-hidemodulefile 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-hidesupports the advanced module version specifiers. (fix issue #202) - Add option
--softto themodule-hidemodulefile 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
--hardto themodule-hidemodulefile 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
whatissearch 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-hidestatement), 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
availsub-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
--defaultfilter ofavailsub-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
loadtentative 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-availmodulefile command. - Introduce the g
--all/-aoption foravail,aliases,whatisandsearchsub-commands, to include in the search process all hidden modulefiles, module aliases or symbolic versions. Hard-hidden modules stay hidden even if--all/-aoption is used. - Add the
module-forbidmodulefile 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-forbidsupports the advanced module version specifiers. - Add
--not-userand--not-groupoptions tomodule-hideandmodule-forbidmodulefile 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
--beforeand--afteroptions tomodule-hideandmodule-forbidmodulefile 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
--messageoption tomodule-forbidmodulefile 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
--afteroption of a matchingmodule-forbidcommand 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_daysconfiguration 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 atconfiguretime with--with-nearly-forbidden-daysoption. When thenearly_forbidden_daysconfiguration is set through theconfigsub-command, the :envvar:MODULES_NEARLY_FORBIDDEN_DAYSenvironment variable is set. - Add
--nearly-messageoption tomodule-forbidmodulefile command to supplement the warning message obtained when evaluating a nearly forbidden module. - Add the
debug2verbosity level, to report each call ofmodulecmd.tclinternal procedures in addition to debug messages. Debug2 mode can be enabled by setting theverbosityconfig to thedebug2value or by using the g-Dcommand-line switch twice. - Install: look for
makerathergmakeon MinGW and build library with a.dllextension on this platform. - Add the
traceverbosity level, to report details on module searches, resolutions, selections and evaluations. Trace mode can be enabled by setting theverbosityconfig to thetracevalue or by using the g-T/--tracecommand-line switches. - Introduce the
trkey in the color palette to specifically render trace messages. Default value fortrkey 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-trackingand--disable-dependency-trackingconfigure options to transmit them to theconfigurescripts of Modules Tcl extension library and Modules compatibility version. (fix issue #354) - Install: ignore some regular options of an Autoconf
configurescript that are useless for this project but usually implied in build macros (like RPM%configuremacro). - Install: ignore unsupported
--enable-*and--with-*options onconfigurescript rather raise an error and add support to define environment variable and build system type asconfigurescript arguments to comply with GNU configuration recommendations. - Install: fix
modulecmdpre-alternatives check in RPM spec file. - Install: use
%make_buildand%make_installmacros in RPM spec file. - When
module switchcommand is used in modulefile, do not state when processing it a conflict over switched-off module if its specification on themodule switchcommand 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:
listandsourcesub-commands do not take available modules as argument in fish completion script. - Init: fix option list for
searchsub-command in bash completion script. - Fix double error counter increase when modulefile evaluation breaks.
- Install: adapt
configurescript to pass to theconfigurescript 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
configurescript rather silently ignore it. (fix issue #348) - Install: enable the definition of installation directory options of
configurescript with the--option valuesyntax in addition to the--option=valuesyntax. (fix issue #348) - Doc: alphabetically sort sub-commands of
module-infomodulefile Tcl command inmodulefile(4)document. - Script: clean previously built environment-modules RPMs in
mrel. - Clearly separate quarantine variable definition from tclsh binary on
modulecmd.tclevaluated command call in_module_rawfunction 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
mrelandmpubcommands 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
mrelscript, that automates build of the Modules release files and performs tests over these distribution files to guaranty their correctness. - Script: add the
mpubscript, 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
clearsub-command is called frommlshortcut 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
envin 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
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)