Determining module implementation and version
timestamp1609234620001
New Modules variables are introduced to determine during the evaluation of a modulefile or a modulerc what module implementation is currently in use. The ModuleTool
variable corresponds to the name of the module implementation and is set to Modules
for this project. The ModuleToolVersion
variable corresponds to the version number of the implementation (e.g. 4.7.0
).
With these new variables it is possible to precisely know what module command is in use then adapt modulefile code to handle a specific behavior or leverage a new feature.
The modulefile command versioncmp
is also introduced to provide a simple way to compare two version strings and return if first version string is less than, equal to or greater than second one.
if {[info exists ModuleTool] && $ModuleTool eq {Modules}
&& [versioncmp $ModuleToolVersion 4.7] >= 0} {
# here some code specific for Modules 4.7 and later versions
}
The ModuleTool
and ModuleToolVersion
variables and the versioncmp
modulefile command are supported by the Lmod project starting version 8.4.8
.