Lmod is program to manage the user environment under Unix: (Linux, Mac OS X, ...). It is a new implementation of environment modules.
- Documentation: http://lmod.readthedocs.org
- Github: https://github.com/TACC/Lmod
- Sourceforge: https://lmod.sf.net
- TACC Homepage: https://www.tacc.utexas.edu/research-development/tacc-projects/lmod
- Lmod Test Suite: https://github.com/rtmclay/Lmod_test_suite
Please go to https://lists.sourceforge.net/lists/listinfo/lmod-users to join.
The most up-to-date source will be at github. All known bugs have been fixed if it is released on github. When there has been sufficient improvement or important bugfixes there is a new release at sourceforge.
Features:
-
Lmod now uses reference counting for PATH-like variables
-
Support for MODULEPATH_INIT. If found use <install_dir>/init/.modulespath to specify initial MODULEPATH.
-
Tracing now reports changes to MODULEPATH
-
Support for ml keyword <prop_name> added
Bug Fixes:
-
Lmod now uses the spider cache when restoring when LMOD_CACHED_LOAD=yes
-
Lmod now supports a module with a single leading underscore. It reports an error if there are two or more.
Features:
-
Support for disable <collection_name>
-
A marked default is honored even if it is hidden
-
Support for depends_on() as a better way to handle module dependencies.
Features:
-
Added -T, --trace option to report restore, load, unloads and spider.
-
Report both global and version aliases with module --terse Add Global Aliases output to module avail if they exist.
-
Support for isVisibleHook (Thanks @wpoely86!) to control whether a module is hidden or not.
-
Support for "spider -o spider-json" to set the key "hidden" to true or false for each module.
-
Setting LMOD_EXACT_MATCH=yes also turns off the display of (D) with avail.
-
CMake "shell" added.
-
Added feature that LMOD_TMOD_FIND_FIRST. A site can decide to force FIND_FIRST instead FIND_BEST for NV module layouts.
Bug Fixes:
-
Fix bug where Lmod would be unable to load a module where NV and NVV module layouts were mixed.
-
Fix bug where LMOD_CASE_INDEPENDENT_SORTING=yes wasn't case independent when using avail hook.
Features:
-
Using built-in luafilesystem if system version doesn't exist or < 1.6.2
-
Support for setting LMOD_SYSHOST with configure.
-
Sites or users can use italic instead of dim for hidden modules
-
Detailed spider output reports all dependencies hidden or not.
-
Support for fish shell
-
Move almost all configuration variables from profile.in to bash.in and similarly for tcsh.
Bug Fixes:
-
Fixed bug that caused LMOD env vars to be lower cased.
-
Fixed bug where tcsh/csh exit status was not returned.
-
bash and zsh tab completions works when LMOD_REDIRECT is yes.
-
Can now conflict with a version.
-
Fixed bug with addto a:b:c
-
Fixed bugs in computeHashSum, generating softwarePage.
Bug Fixes:
-
The isloaded() function has been repaired.
-
Updated French, German and Spanish translations.
-
Two error message related to missing modules are now available for translations.
Features:
-
A test suite for testing the Lmod installation has been added. See https://github.com/rtmclay/Lmod_test_suite for details.
-
Added support for localization of errors and warnings and messages.
-
Language Translations complete: ES, Partial: FR, ZH, DE
-
Introduced "errWarnMsgHook" to take advantage of the new message handling.
Bug Fixes:
-
Several bug fixes related to Spider Cache and LMOD_CACHED_LOADS=1
-
Repaired zsh tab completion.
-
Minimize the output of Lmod's BASH_ENV when debugging Bash shell scripts.
-
Allow colons as well as spaces for the path used in the addto command.
-
Handles module directories that are empty or bad symlink or a .version file only.
-
Fix bug in module describe.
Features:
-
The commands "module --show_hidden avail" and "module --show_hidden" list now show "hidden" modules with the (H) property. Also they are displayed as dim. This works better on black backgrounds.
-
Added the command "module --config_json" to generate a json output of Lmod's configuration.
-
Add support for env. var. LMOD_SITE_NAME to set a site's name. This is also a configure option.
Bug Fixes:
-
Hidden module now will not be marked as default.
-
Now check permission of a directory before trying to open it.
-
Lmod now does not pollute the configure time value of LD_LIBRARY_PATH and LD_PRELOAD into the users env.
-
Lmod now handles illegal values of $TERM.
-
This version support N/V/V. (e.g. fftw/64/3.3.4). Put a .version file in with the "64" directory to tell Lmod where the version starts.
-
Marking a default in the MODULERC is now supported.
-
User ~/.modulerc has priority over system MODULERC.
-
System MODULERC has priority over marking a default in the module tree.
-
Installed Modules can be hidden by "hide-version foo/3.2.1" in any modulerc file.
-
The system spider cache has changed. Please update your scripts to build spiderT.lua instead of moduleT.lua
Features:
-
Now uses the value of LD_PRELOAD and LD_LIBRARY_PATH found at configure time to run all TCL progams.
-
Now uses a custom _module_dir function for tab completion in bash for module use path. Thanks to Pieter Neerincx!
-
Support for LMOD_FAMILY__VERSION added.
-
If ~/.lmod.d/.cache/invalidated exists then the user cache file(s) are ignored. When generating a user cache file ~/.lmod.d/.cache/invalidated is deleted.
Bug Fixes:
-
Correctly merges spider cache location where there are multiple lmodrc.lua files.
-
Remove leading and trailing blanks for names in setenv, pushenv, prepend_path, etc.
-
ml now generates error for unknown argument that start with a double minus. (e.g. ml --vers)
-
pushenv("name","") fixed when unloading module.
-
Make sure to regularize MODULEPATH when ingesting it for the first time.
Features:
-
All the Lmod programs now resolve any symlinks to the actual program before adding to the Lua's package.path and package.cpath.
-
Contrib patch: Extend msgHook to LmodError and LmodWarning.
-
Now using travis for CI and testing.
-
Configure time option to have Lmod check for magic TCL string in modulefiles (#%Module)
Bug Fixes:
-
The command "savelist" now only reports collections that match $LMOD_SYSTEM_NAME (install of all collections).
-
A collection name now CANNOT have `.' in its name.
-
Contrib patch: Get correct status in a capture in Lua 5.1.
-
Contrib patch: Failback to /proc/sys/kernel/random/uuid if uuidgen isn't available.
-
Contrib patch: Failback to shasum if sha1sum isn't available.
-
Now uses the tclsh (and the LD_LIBRARY_PATH) found at configure time.
-
Now searches for ps, basename, expr in /bin and /usr/bin when not using the locations found by configure
Features:
- Lmod now uses a regular expression to match user commands to internal commands. For example "av", "ava" or "available" will match "avail".
Bug Fixes:
-
Lmod now obeys LMOD_REDIRECT (or module --redirect) when using the --terse option. This means that if LMOD_REDIRECT is set then module -t av will go to stdout instead of stderr.
-
Lmod now does not resolve any symlinks when doing "module use "
-
LMOD_REDIRECT is now reported with --config option.
-
Lmod would sometimes miss a symlink to a directory with module use. This is now fixed.
-
Lmod now correctly ignores a valid .version/.modulerc file that points to a non-existant modulefile.
-
Allow the use of md5 -r as an alternative to sha1sum and md5sum
-
Added uninstall target to Lmod.
Bug Fixes:
- Lmod now uses the values of LUA_PATH and LUA_CPATH at configuration time. This way Lmod is safe from user changes to these important Lua values.
Bug Fixes:
-
Updated documentation at lmod.readthedocs.org
-
Support for generating xalt_rmapT.json used by XALT.
-
Fixed bug with upcase characters in version file.
Features:
-
It is now possible to configure Lmod to use the spider cache when loading (
--with-cachedLoads=yes
orexport LMOD_CACHED_LOADS=1
to activate). This is off by default. Sites that use this will have to keep their spider caches up-to-date or user will not be able to load modules not in the cache. -
It is now possible to configure Lmod to use Legacy Version ordering (
--with-legacyOrdering=yes
orexport LMOD_LEGACY_VERSION_ORDERING=1
). With legacy ordering 9.0 is "newer" than 10.0. This is the ordering that Tmod uses. -
Lmod will print admin message (a.k.a nag messages) when doing module whatis or module help . In other words if a nag message would appear with module load then it will also appear when using whatis or help.
-
Many improvement in the generation of the lmod database for module tracking.
Bug Fixes:
-
The command module spider would fail to find a module if a site had the spider cache file dbT.lua files and a user had personal modulefiles. This is now fixed.
-
Two or more .version files could confused Lmod. This is now fixed.
-
Lmod can now find UPPER CASE string when doing "module key ..."
-
Lmod now ignore the value of PAGER, instead it uses LMOD_PAGER (default "less") and LMOD_PAGER_OPTS (default "-XqRMEF"). This allows for consistent behavior under systems like the Cray and Mac OS X.
-
Lmod now reports the module stack when loads fail.
-
Set $LMOD_REVERSEMAPT_DIR after $LMOD_CACHE_DIR in update_lmod_system_cache_files.
-
Support for exit 1 in tcl modulefiles.
-
Fixed bug in tcl and unsetenv.
Bug Fixes:
-
This version now contains the contrib/tracking_module_usage directory.
-
This version fixes a bug when trying to run module avail or module spider with an old cache file.
Features:
-
Full support for global RC files as well as .modulerc files. This means that $MODULERCFILE will be read along with ~/.modulerc. Also .modulerc files are read when they appear in the same directory and the version files (i.e. the same directory as 1.2 or 2.1.lua). One caveat, Setting the default module version in $MODULERCFILE or ~/.modulerc is not supported due Spider cache issues.
-
Instructions on how to save module usage data to a MySQL database along with scripts to analyze the usage are in contrib/tracking_module_usage/README.
-
Adding an exit hook. This makes for more accurate tracking of module usage. See README above as to why this is a good idea.
-
Some minor speed-ups and minimizing of directory tree
For information to version changes for Lmod before 6.0 see README.old