Hi EasyBuilders,
We have been looking into adding support for module properties recently,
a feature that is specific to Lmod and allows labeling module files with
one or more properties.
Note that module properties can also be used in the traditional module
files in Tcl syntax, and can be included such that the Tcl-based
environment modules tool just ignores them.
Module properties are visible in the output of 'module avail' and
'module list'.
Making modules 'sticky' (such that they are only unloaded on a 'purge'
when --force is used) is also done by setting a particular property
('lmod:sticky').
The properties used in module files must be known to Lmod (via the
$LMODRC file), otherwise Lmod will complain.
Lmod lists a couple of properties in the default lmodrc.lua, but
defining additional (site-specific) properties is trivial.
For example (the different labels are also colored):
$ ml av bzip2
------ /Users/kehoste/.local/easybuild/modules/all ------
bzip2/1.0.6 (*) (S) (T)
Where:
(S): Module is Sticky, requires --force to unload or purge
(T): Testing
(*): built for host, native MIC and offload to the MIC
Use "module spider" to find all possible modules.
Use "module keyword key1 key2 ..." to search for all possible
modules matching any of the "keys".
One important thing to mention is that properties are key-value, for
example state:testing, arch:mic:offload (key: arch, values: mic, offload).
There are several ways in which we could add support for module
properties in EasyBuild, and we would like to get some feedback from you
to determine which approach we should take.
We may be able to reach some kind of consensus on useful properties, for
which we can provide dedicated command-line options.
If the properties you have in mind differ significantly we can (also)
provide 'open' support for properties (e.g. --module-properties and/or a
module_properties easyconfig parameter).
We are a bit reluctant to take (only) the latter approach however, and
would like to see whether a more organized approach can be used instead.
One issue is that properties are key-value, and specifying something
like --module-properties=state:testing;arch:mic:offload becomes
unreadable quite quickly.
The approach we're currently considering is to support properties
indirectly, i.e. via options --sticky-module, --state, --arch, etc.
(and/or equivalent easyconfig parameters).
These could imply more than simply setting a property; for example
--state=testing could imply to also install a hidden module, while
specifying --arch=mic could imply enabling a particular toolchain option
to enable MIC support (or maybe enabling a toolchain option 'mic' could
imply setting the arch:mic property).
If you are interested in having support for module properties in
EasyBuild, please provide some feedback by answering the following
questions:
* What kind of properties would you like to be able to add to module
files generated by EasyBuild?
* How would you like to see properties supported? Which command line
options and/or easyconfig parameters would you expect to see added?
* Does a command line option like --sticky-module (and/or easyconfig
parameters 'sticky = True') make sense, i.e. which modules (generated by
EasyBuild) would you make sticky?
regards,
Kenneth