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

Reply via email to