- Remove deprecated
createmodule.sh
andcreatemodule.py
tools as shell script to modulefile conversion is now achieved with thesh-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
andmodule-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_
ongetenv
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 (seeMODULES_AUTO_HANDLING
). - Install: installation option
--enable-extended-default
is set on by default which allows partial module version specification (seeMODULES_EXTENDED_DEFAULT
). - Install: installation option
--enable-advanced-version-spec
is set on by default which activates theAdvanced module version specifiers
- Install: installation option
--enable-color
is set on by default which enables theauto
output color mode (seeMODULES_COLOR
). - Install: installation option
--with-icase
is set tosearch
by default to activate case insensitive match on search contexts (seeMODULES_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 theinitrc
configuration file. - Install: installation option
--with-initconf-in
is set toetcdir
by default to locate configuration files in the directory designated by the--etcdir
option. Therefore the initialization configuration file is namedinitrc
in this directory, and the modulepath-specific configuration file is namedmodulespath
. - 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 andMODULES_USE_COMPAT_VERSION
are thus removed as well. - Testsuite: introduce the non-regression quick test mode. When the
QUICKTEST
environment variable is set to1
, only the main tests from the non-regression testsuite are run. When first argument of themt
script 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.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 themodulecmd.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 forMODULEPATH
environment variable where the mechanism still applies. - When an element is added to a path-like variable through the
append-path
orprepend-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
andunuse
module sub-commands are not called during a modulefile evaluation, the reference counter associated with each entry inMODULEPATH
environment variable is ignored. In such context, amodule use
will not increase the reference counter of a path entry already defined and amodule unuse
will remove specified path whatever its reference counter value. - When the
append-path
,prepend-path
andremove-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, amodule append-path/prepend-path
will not increase the reference counter of a path entry already defined and amodule 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 theappend-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 therefresh
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 themodulespath
configuration file and not instead of this file.initrc
is evaluated aftermodulespath
file. - When the installation option
--enable-modulespath
is set, the list of modulepath to enable by default is now only defined in themodulespath
configuration file and not anymore in theinitrc
configuration file. - No error is raised when evaluating in
display
mode a modulefile without a value specified for thevariant
it defines. This change helps to learn all the variant a modulefile defines. As a result, the unspecified variant is not instantiated in theModuleVariant
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, thesource
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 theinitrc
configuration file). These report messages are disabled when theverbosity
configuration option is set toconcise
orsilent
. - During a module
restore
orsource
, 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 thesource
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 is higher than the version of themodulecmd.tcl
script in use. - Doc: alphabetically sort installation option in
INSTALL
document. - Update the
--enable-quarantine-support
installation option to control aquarantine_support
configuration option. When this option is enabled, theautoinit
sub-command produces the shell code for themodule
shell function definition with quarantine mechanism support. When disabled, code is generated without quarantine support. - Install: installation option
--enable-quarantine-support
is set off by default. - Introduce the
MODULES_QUARANTINE_SUPPORT
environment variable to control thequarantine_support
configuration option once Modules is installed. To enable the quarantine mechanism,MODULES_QUARANTINE_SUPPORT
should be set to1
prior Modules initialization orquarantine_support
configuration option should be set to1
in theinitrc
configuration file. - Quarantine mechanism code in the Modules shell initialization scripts is now always defined and mechanism always applies if some environment variables are defined in
MODULES_RUN_QUARANTINE
. - Code in the
modulecmd.tcl
script to restore environment variables put in quarantine is now always generated and applies if the__MODULES_QUARANTINE_SET
environment variable is set to1
. This variable is set by the Modules initialization script prior calling theautoinit
sub-command or by themodule
shell function if it has been generated with quarantine support enabled. - Install: installation option
--enable-silent-shell-debug-support
is set off by default. - Code to silence shell debug properties in the Modules shell initialization scripts is now always defined and mechanism applies if
MODULES_SILENT_SHELL_DEBUG
environment variable is set to1
. - Code to silence shell debug properties in the
module
shell function could now be enabled ifMODULES_SILENT_SHELL_DEBUG
is set to1
prior Modules initialization or if thesilent_shell_debug
configuration option is set to1
in theinitrc
configuration file. - Doc: clarify TOC and title of
MIGRATING
document. - Doc: extend description of Modules configuration steps of in
INSTALL
document. - Doc: document
initrc
andmodulespath
configuration files inmodule(1)
man page. - Install: replace
example.txt
byINSTALL.txt
guide in RPM. - Doc/Install: rename
diff_v3_v4
document intochanges
. - Doc: reorganize
changes
document to let room to describe Modules 5 changes.