Skip to content

5.2.0

Compare
Choose a tag to compare
@xdelaruelle xdelaruelle released this 08 Nov 06:06
· 1009 commits to main since this release
  • Introduce the --optional option on prereq, prereq-all, depends-on and always-load modulefile commands. Expressed optional dependency is considered satisfied even if modulefile is not loaded. If optional requirement is loaded afterward, dependent module is automatically reloaded, unless if the auto_handling configuration option is disabled.
  • A dependency expressed in modulefile with module try-load<module> command is considered optional. Dependent module is automatically reloaded if the optional requirement is loaded afterward, unless if the auto_handling configuration option is disabled.
  • Raise error in case of unknown or misplaced option set on prereq, prereq-all, depends-on or always-load modulefile commands.
  • Add the --timer command-line switch to report the total execution time of the module command. Also report the execution time of every internal procedure calls when mixed with --debug option.
  • Init: move PATH setup (to locate Modules' binaries location) from shell initialization scripts to the autoinit sub-command. (fix issue #462)
  • Init: move MANPATH setup (to locate Modules' man-pages) from shell initialization scripts to the autoinit sub-command. (fix issue #462)
  • Init: move shell completion setup from shell initialization scripts to the autoinit sub-command. (fix issue #462)
  • Enclose installation path references in shell code produced by autoinit, in initialization scripts and Makefiles to guaranty correct evaluation in case these paths contain a space character. Note that the quarantine mechanism is not compatible with such installation paths.
  • Fix source-sh and sh-to-mod when used with fish shell script if regex-easyesc fish option is enabled. (fix issue #463)
  • Add the protected_envvars configuration option to define a list of environment variables that cannot be modified by modulefile commands. When set, protected_envvars defines MODULES_PROTECTED_ENVVARS environment variable. (fix issue #429 with contribution from Adrien Cotte)
  • Introduce the lint sub-command to statically analyze syntax of modulefiles, modulerc and global/user rc. (fix issue #451)
  • Add the tcl_linter configuration option to define the program used to analyze files with lint sub-command. This option is set to nagelfar.tcl by default. When changed from default value, the MODULES_TCL_LINTER environment variable is defined. Default value can be changed with --with-tcl-linter and --with-tcl-linter-opts installation options.
  • Add the --enable-nagelfar-addons installation option (enabled by default) to install specific syntax databases and plugins to lint modulefiles, modulerc and global/user rc with Nagelfar. These files are installed in the directory designated by the --nagelfardatadir (DATAROOTDIR/nagelfar by default).
  • Doc: add lint-sub-command design notes.
  • Install: use install command rather cp or mkdir to install Modules and guaranty consistent permission modes on deployed files.
  • Also unset pushenv value stacks on clear sub-command.
  • Doc: add mod-to-sh-sub-command design notes.
  • Introduce the mod-to-sh sub-command to translate designated modulefile(s) into code for specified shell. (fix issue #447)
  • Make source sub-command accepts modulefile specification as argument. If argument does not correspond to a file path, search it among available modulefiles. (fix issue #424)
  • Doc: clarify set-alias only define shell alias and not shell function.
  • Add the ability to filter the list of collections returned by savelist sub-command. Filtering pattern is matched in a case insensitive manner by default.
  • Add support for --starts-with and --contains options on savelist sub-command.
  • Highlight all search patterns on list sub-command output instead of only the first one..
  • Highlight all search patterns on savelist sub-command output.
  • Add support for --all option on savelist sub-command not to limit result to the collection matching currently defined collection_target.
  • Doc: add Shell support section in modulefile(4) man page to describe how shells support the different kind of environment changes that can be defined in modulefiles.
  • Record during autoinit sub-command the initial environment state in __MODULES_LMINIT. Enabled modulepaths and loaded modulefiles through modulespath and initrc initialization configuration files are recorded in this new environment variable.
  • Add reset sub-command to restore initial environment. It takes recorded environment in __MODULES_LMINIT and restores it.
  • Initial environment is restored when collection name specified on restore sub-command equals __init__.
  • When no argument is provided to restore sub-command and if default collection does not exist, initial environment is restored.
  • Initial environment content is displayed when collection name specified on saveshow sub-command equals __init__.
  • When no argument is provided to saveshow sub-command and if default collection does not exist, initial environment content is displayed.
  • Add reset_target_state configuration option to determine behavior of reset sub-command. When set to __init__ (default value) initial environment is restored. When set to __purge__, a purge sub-command is performed. Any other value, corresponds to the name of a collection to restore. When set, reset_target_state defines MODULES_RESET_TARGET_STATE environment variable.
  • Doc: add initial-environment design notes.
  • Unload sticky modules on restore and reset sub-commands to fully set environment in collection or initial state.
  • Testsuite: add lint testsuite to validate syntax of shell and Tcl scripts of this project. This testsuite can be invoked with make testlint or script/mt lint. sh, bash and ksh scripts are checked with ShellCheck tool and tcl scripts are checked with Nagelfar.
  • Update modulecmd.tcl code and add Nagelfar inline comments to fix linter reports.
  • Script: add usage message and support for -h/--help option on mrel, mpub, mt, mtreview, nglfar2ccov, mb and mlprof development utilities.
  • Doc: describe script/mt and script/mb utilities in CONTRIBUTING guide.
  • Fix ShellCheck error, warning and info reports over all sh, bash and ksh shell scripts. (fix issue #470 with contribution from Lukáš Zaoral)
  • Init: update profile script for sh-like shells to only source sh or bash initialization script when BASH environment variable is found set. (fix issue #473)
  • Add stash sub-command to save current environment and restore initial one.
  • Add stashpop sub-command to restore stash collection then delete this collection file.
  • Add stashrm sub-command to delete stash collection file.
  • Add stashshow sub-command to display stash collection file.
  • Add stashclear sub-command to delete all stash collection files.
  • Add stashlist sub-command to list all stash collection files.
  • Update savelist sub-command to filter out stash collections unless if --all option is set.
  • Doc: ensure current user environment does not break logging system in log-module-command recipe. (fix issue #475)
  • Rename the default git branch from master to main to use inclusive terminology.
  • Mark loaded modules that could benefit from a refresh evaluation in the __MODULES_LMREFRESH environment variable.
  • Optimize refresh sub-command to only evaluate loaded modules that defines volatile environment changes (shell completion, alias or function). (fix issue #477)
  • Add modulefile_extra_cmds hook variable that could be defined in siteconfig.tcl file to define specific commands in modulefile interpreter context. modulefile_extra_cmds is a list of command name and relative procedure pairs. (fix issue #286)
  • Add modulefile_extra_vars hook variable that could be defined in siteconfig.tcl file to define specific variables in modulefile interpreter context. modulefile_extra_vars is a list of variable name and value pairs. (fix issue #286)
  • Add modulerc_extra_cmds hook variable that could be defined in siteconfig.tcl file to define specific commands in modulerc interpreter context. modulerc_extra_cmds is a list of command name and relative procedure pairs. (fix issue #286)
  • Add modulerc_extra_vars hook variable that could be defined in siteconfig.tcl file to define specific variables in modulerc interpreter context. modulerc_extra_vars is a list of variable name and value pairs. (fix issue #286)
  • Doc: Add Site-specific configuration section in module(1) man page.
  • Doc: extend Collections section with examples in module(1) man page.