Checking Syntax in Your Sites Modulefiles

As of Lmod (8.4.3+), it is possible to check the syntax of your sites module tree(s). The command check_module_tree_syntax will walk your module directories just like the spider command. But the spider command does not report warning and errors, the check_module_tree_syntax command does. This command is meant to be run by a Site’s staff and not users as it is designed to catch modulefile errors before your users do.

To run do:

$LMOD_DIR/check_module_tree_syntax $MODULEPATH

This command will report all the modulefiles that have syntax errors.

Check for multiple ways set a marked default

Lmod has multiple ways to mark a default (See Marking a Version as Default for more details). With a large module tree it can be difficult to know that a particular a directory that contains multiple modulefiles has more than one file to mark a default.

When this command walks the module tree reading, it also checks for multiple ways to mark a default. For example if a directory has:

.version 1.0.lua 2.0.lua 3.0.lua default@

Where symlink default points to the file 2.0.lua. The command will report that this directory has multiple files marking a default.

Using the –checkSyntax option to check the syntax of a module

Tools that generate modulefiles may wish to check the syntax of a modulefile before installing it. For example, TACC builds RPMs that include the package and the modulefile. They use Lmod to check the syntax of a modulefile without having to have the tree installed.

In other words, this options ignores the Lmod commands like execute{}, load(), depends_on() and other Lmod commands that would require a whole module tree be present.

To use put the modulefile in a sub-directory with just the modulefile in it. Then set $MODULEPATH to point to that sub-directory. Then load the module as follows:

module --checkSyntax load <modulefile>

Where <modulefile> is modulefile you wish to test.