Skip to content

Releases: envmodules/modules

5.0.0

12 Sep 12:42

Choose a tag to compare

  • Remove deprecated createmodule.sh and createmodule.py tools as shell script to modulefile conversion is now achieved with the sh-to-mod sub-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-user and module-log commands 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 _UNDEFINED_ on getenv modulefile command if passed environment variable is not defined.
  • Align empty directory name error message obtained on use sub-command with message obtained when module or collection name is empty.
  • Accept non-existent modulepath on use sub-command.
  • Install: installation option --enable-auto-handling is set on by default which enables the automated module handling mode (see MODULES_AUTO_HANDLING).
  • Install: installation option --enable-extended-default is set on by default which allows partial module version specification (see MODULES_EXTENDED_DEFAULT).
  • Install: installation option --enable-advanced-version-spec is set on by default which activates the Advanced module version specifiers
  • Install: installation option --enable-color is set on by default which enables the auto output color mode (see MODULES_COLOR).
  • Install: installation option --with-icase is set to search by default to activate case insensitive match on search contexts (see MODULES_ICASE).
  • Install: installation option --enable-new-features has been reset following major version change as all the options it implied are now enabled by default.
  • Install: installation option --enable-set-shell-startup is set off by default but could be enabled once installed through the initrc configuration file.
  • Install: installation option --with-initconf-in is set to etcdir by default to locate configuration files in the directory designated by the --etcdir option. Therefore the initialization configuration file is named initrc in this directory, and the modulepath-specific configuration file is named modulespath.
  • Only look at configuration files found in the location designated by the --etcdir or --initdir option (depending on the value of --with-initconf-in option). Configuration files were previously searched in both locations.
  • Install: remove installation option --enable-compat-version. Compatiblity version co-installation is discontinued. switchml shell function and MODULES_USE_COMPAT_VERSION are thus removed as well.
  • Testsuite: introduce the non-regression quick test mode. When the QUICKTEST environment variable is set to 1, only the main tests from the non-regression testsuite are run. When first argument of the mt script is quick, 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.tcl the value of variables set in quarantine (variables whose name finishes with _modquar). A __MODULES_QUAR_<VAR> prefix is applied to the name of these variables instead of the _modquar suffix 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.tcl to take benefit from the features brought by Tcl 8.5.
  • Split source code in several Tcl files hosted in tcl directory. When building Modules, the Tcl files are concatenated to make the modulecmd.tcl script.
  • Record auto-loaded tag of loaded modules in __MODULES_LMTAG environment variable rather set a specific entry for module in the __MODULES_LMNOTUASKED environment variable.
  • Rename the environment variables used by the reference counting mechanism of path-like environment variables. A __MODULES_SHARE_<VAR> prefix is applied to the name of these variables instead of the _modshare suffix to clearly indicate they are intended for Modules internal use of only.
  • Reference counting mechanism is not anymore applied to the Modules-specific path variables (like LOADEDMODULES). As a result no __MODULES_SHARE_<VAR> variable is set in user environment for these variables. Exception is made for MODULEPATH environment variable where the mechanism still applies.
  • When an element is added to a path-like variable through the append-path or prepend-path modulefile commands, add this element to the associated reference counter variable (named __MODULES_SHARE_<VAR>) only when this element is added multiple times to the path-like variable. When an element is removed from a path-like variable, this element is removed from the reference counter variable when its counter is equal to 1.
  • When the use and unuse module sub-commands are not called during a modulefile evaluation, the reference counter associated with each entry in MODULEPATH environment variable is ignored. In such context, a module use will not increase the reference counter of a path entry already defined and a module unuse will remove specified path whatever its reference counter value.
  • When the append-path, prepend-path and remove-path module sub-commands are not called during a modulefile evaluation, the reference counter associated with each entry in targeted environment variable is ignored. In such context, a module append-path/prepend-path will not increase the reference counter of a path entry already defined and a module remove-path will remove specified path whatever its reference counter value.
  • Fix unuse sub-command when sereval modulepaths are specified as a single argument (i.e., /path/to/dir1:/path/to/dir2). Enabled modulepaths were not correctly detected when specified this way.
  • Doc: clarify that an already defined path is not added again or moved when passed to the use sub-command or the append-path/prepend-path modulefile commands. (fix issue #60)
  • Change the refresh sub-command to evaluate all loaded modulefiles and re-apply the non-persistent environment changes they define (i.e., shell aliases and functions). With this change the refresh sub-command is restored to the behavior it had on Modules version 3.2.
  • Evaluate the modulefile commands resulting from a source-sh command through the current modulefile Tcl interpreter in order to evaluate them according to the current modulefile evaluation mode.
  • When initializing Modules, refresh the loaded modules in case some user environment is already configured. This is especially useful when starting a sub-shell session as it ensures that the loaded environment in parent shell is correctly inherited, as the refresh sub-command re-applies the non-persistent environment configuration (i.e., shell alias and function that are not exported to the sub-shell). (fix issue #86)
  • Init: add example code in default initrc, the initialization script of Modules, to either restore user's default collection if it exists or load a predefined module list at the end of the initialization process.
  • When initializing Modules, evaluate the initrc configuration file in addition to the the modulespath configuration file and not instead of this file. initrc is evaluated after modulespath file.
  • When the installation option --enable-modulespath is set, the list of modulepath to enable by default is now only defined in the modulespath configuration file and not anymore in the initrc configuration file.
  • No error is raised when evaluating in display mode a modulefile without a value specified for the variant it defines. This change helps to learn all the variant a modulefile defines. As a result, the unspecified variant is not instantiated in the ModuleVariant array variable. (fix issue #406)
  • When running the unsetenv modulefile command on an unload evaluation, do not unset designated environment variable if no value to restore is provided.
  • Fix unsetenv to distinguish between being called on a unload evaluation without a value to restore or with an empty string value to restore.
  • Make system modulefile command available from a modulerc evaluation context whatever the underlying module evaluation mode.
  • Make is-used modulefile command available from a modulerc evaluation context.
  • Remove internal state tcl_version_lt85 as Tcl 8.5+ is now a requirement.
  • Forbid use of module source<source> command in modulefile or in an initialization rc file, the source Tcl command should be used instead. source sub-command should only be called from the command-line.
  • Report the modules loading and unloading during the module command initialization (i.e., during the evaluation of the initrc configuration file). These report messages are disabled when the verbosity configuration option is set to concise or silent.
  • During a module restore or source, only report the module load and unload directly triggered by these sub-commands. Load and unload triggered by other modules are reported through the automated module handling messages of the main modules.
  • Enforce use of the module magic cookie (i.e., #%Module) at the start of global or user rc files, initrc configuration file or any scriptfile passed for evaluation to the source sub-command. These files are not evaluated and an error is produced if the magic cookie is missing or if the optional version number placed after the cookie string...
Read more

5.0.0-alpha

25 Jul 21:06

Choose a tag to compare

5.0.0-alpha Pre-release
Pre-release
  • Remove deprecated createmodule.sh and createmodule.py tools as shell script to modulefile conversion is now achieved with the sh-to-mod sub-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-user and module-log commands 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 _UNDEFINED on getenv modulefile command if passed environment variable is not defined.
  • Align empty directory name error message obtained on use sub-command with message obtained when module or collection name is empty.
  • Accept non-existent modulepath on use sub-command.
  • Install: installation option --enable-auto-handling is set on by default which enables the automated module handling mode (see MODULES_AUTO_HANDLING).
  • Install: installation option --enable-extended-default is set on by default which allows partial module version specification (see MODULES_EXTENDED_DEFAULT).
  • Install: installation option --enable-advanced-version-spec is set on by default which activates the Advanced module version specifiers
  • Install: installation option --enable-color is set on by default which enables the auto output color mode (see MODULES_COLOR).
  • Install: installation option --with-icase is set to search by default to activate case insensitive match on search contexts (see MODULES_ICASE).
  • Install: installation option --enable-new-features has been reset following major version change as all the options it implied are now enabled by default.
  • Install: installation option --enable-set-shell-startup is set off by default but could be enabled once installed through the initrc configuration file.
  • Install: installation option --with-initconf-in is set to etcdir by default to locate configuration files in the directory designated by the --etcdir option. Therefore the initialization configuration file is named initrc in this directory, and the modulepath-specific configuration file is named modulespath.
  • Only look at configuration files found in the location designated by the --etcdir or --initdir option (depending on the value of --with-initconf-in option). Configuration files were previously searched in both locations.
  • Install: remove installation option --enable-compat-version. Compatiblity version co-installation is discontinued. switchml shell function and MODULES_USE_COMPAT_VERSION are thus removed as well.
  • Testsuite: introduce the non-regression quick test mode. When the QUICKTEST environment variable is set to 1, only the main tests from the non-regression testsuite are run. When first argument of the mt script is quick, 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.tcl the 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 _modquar suffix 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.tcl to take benefit from the features brought by Tcl 8.5.

4.8.0

14 Jul 11:42

Choose a tag to compare

  • 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 with edit sub-command. When this option is set through the config sub-command, the MODULES_EDITOR environment variable is set. The --with-editor installation option controls the default value of editor configuration option. If not set at installation time, vi is set as default editor.
  • Default value of editor configuration option is overridden by the VISUAL or the EDITOR environment variables, which are both in turn overridden by the MODULES_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 instance mod@: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 the source-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 the export -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 the ModuleVariant 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 following Spack_'s syntax (e.g., name=value). When the advanced_version_spec configuration is enabled, variant could be specified anywhere a module can be specified.
  • Add the --default option to the variant 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 the variant 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 following Spack_'s syntax (e.g., +name, ~name and -name). The -name syntax is not supported on ml(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 accepts Advanced module version specifiers (like load or unload 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 the variant_shortcut option with config sub-command. Which sets the MODULES_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 the list_output and list_terse_output configuration options. Set this new element in the default value list of the list_output option. When set, the variant defined for loaded modules are reported on module list 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 and paths) 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 on setenv since v3.2. (fix issue #402)
  • Introduce the try-load sub-command which like load 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 the module command on this shell. (fix issue #403)

4.7.1

06 Apr 06:53

Choose a tag to compare

  • 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) and modulefile(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 by sh-to-mod.
  • Vim: update addon files to highlight modulefile variables ModuleTool, ModuleToolVersion and ModulesCurrentModulefile.
  • 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 the MODULES_COLORS environment variable.
  • Doc: correct the default value of the --with-tag-abbrev installation option.
  • Doc: add Sticky modules cookbook recipe.

4.7.0

19 Feb 10:20

Choose a tag to compare

  • Doc: simplify TOC of MIGRATING document
  • Add the ModuleTool and ModuleToolVersion 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 the al| 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 on list 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 the autoinit 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 the FPATH environment variable. When the shells_with_ksh_fpath option is set through the config sub-command, the MODULES_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 on module load<module> or module 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 the implicit_requirement option with config sub-command. Which sets the MODULES_IMPLICIT_REQUIREMENT environment variable. (fix issue #260)
  • Add the --not-req option to the module modulefile command to inhibit for its load and unload sub-commands the definition of a prereq or conflict requirement onto specified modules.
  • Add the lpopState and currentState procedures to respectively remove or return the last entry from the list of values of a given state.
  • Add the topState and depthState 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 and super-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 and super-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 on avail and list 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 on avail and list 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 the tag_abbrev option with config sub-command. Which sets the MODULES_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 the tag_color_name option with config sub-command. Which sets the MODULES_TAG_COLOR_NAME environment variable.
  • Add the --hidden-loaded option to the module-hide modulefile command that indicates module should be hidden once loaded. When set, the hidden-loaded module tag applies to module specification set on module-hide command.
  • Do not report on list sub-command results the loaded modules associated with the hidden-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 between verbose and trace levels. Verbose2 mode can be enabled by setting the verbosity config to the verbose2 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 to verbose2 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 with module-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 with module-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 and list sub-commands to explain the meaning of graphical renditions or of elements set in parentheses or chevrons along module name.
  • Fix output of avail and list 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 against module 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 the MODULES_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 set nearly_forbidden_days configuration. (fix ...
Read more

4.6.1

14 Nov 20:26

Choose a tag to compare

  • 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 and module-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 the MODULES_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

16 Sep 06:20

Choose a tag to compare

  • 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 and isStateEqual 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 using source-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 the sh-to-mod sub-command are tracked. The same list of shells than sh-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 the module-info modulefile command to get the username of the user currently running modulecmd.tcl or to test a string passed as argument corresponds to this username.
  • Introduce the usergroups sub-command to the module-info modulefile command to get all the groups of the user currently running modulecmd.tcl or to test a string passed as argument corresponds to one of these groups.
  • Doc: improve markup of NEWS and MIGRATING 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 in modulecmd.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 the module-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 the module-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 of avail 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 for avail, aliases, whatis and search 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 to module-hide and module-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 to module-hide and module-forbid modulefile commands to ignore hiding or forbidding definition respectively after and before a specified date time. Accepted date time format is YYYY-MM-DD[THH:MM].
  • Add --message option to module-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 matching module-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 to 14 (days) by default and this value can be controlled at configure time with --with-nearly-forbidden-days option. When the nearly_forbidden_days configuration is set through the config sub-command, the :envvar:MODULES_NEARLY_FORBIDDEN_DAYS environment variable is set.
  • Add --nearly-message option to module-forbid modulefile command to supplement the warning message obtained when evaluating a nearly forbidden module.
  • Add the debug2 verbosity level, to report each call of modulecmd.tcl internal procedures in addition to debug messages. Debug2 mode can be enabled by setting the verbosity config to the debug2 value or by using the g-D command-line switch twice.
  • Install: look for make rather gmake 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 the verbosity config to the trace 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 for tr key is 2 (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

31 Aug 18:39

Choose a tag to compare

  • Install: take into account the --build, --host, --target, --enable-dependency-tracking and --disable-dependency-tracking configure options to transmit them to the configure 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 on configure script rather raise an error and add support to define environment variable and build system type as configure 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 the module 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

30 Jul 15:15

Choose a tag to compare

  • Init: list and source 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 the configure 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 in modulefile(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 and mpub commands to produce new Modules release from a vZ.Y.x git branch rather than from the repository main branch.

4.5.1

01 Jun 14:41

Choose a tag to compare

  • 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 from ml 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.