Module Specifications

Module specifications are central to many commands in sumo. They provide a powerful way to specify what modules and what versions to use.

A module specification is a string with a certain format. “Module specifications” means a list of these strings.

Sources of module specifications

Module specifications can come from three sources (not taking into account commands that read files):

The configuration file

This is a JSON file that contains settings for some or all of the commandline options. Modules are stored here with the key “module” as a list of strings.

The command line option “-m” or “–module”

The argument of this commandline option is a string that is a single module specification or a whitespace separated list of module specifications. In order to give more than one module specification you can also use this option more than once.

Arguments to a command

Some commands may be followed by arguments that must be module specifications.

Combining all module specifications

There are two possibilities, how module specifications from these three sources are combined:

Override mode

Each new set of module specifications overrides the previous one in this order:

  • configuration file

  • command line options

  • command arguments

Append mode

When command line option:

-A module

is given, module specifications from all three sources are combined into a single list in this order:

  • configuration file

  • command line options

  • command arguments

Processing the list

This list is then processed in order to get a list of module specifications where each module is mentioned just once. The order of modules is the same as they were given in the sources.

If a module is specified more than once the last specification overwrites the first one. Here is an example:

A_Module:Version1 B_Module:Version2 A_Module:Version3

becomes:

A_Module:Version3 B_Module:Version2

The format of a module specification

Module versions

A module can be specified in these forms:

schema

meaning

modulename

modulename

modulename:versionspec

modulename and version

A versionspec defines the version the module should have.

Here are some examples:

module specification

meaning

ALARM

modulename “ALARM”, version not specified

ALARM:R3-9

modulename “ALARM”, version “R3-9”

ALARM:-R3-9

modulename “ALARM”, version “R3-9” or below

ALARM:+R3-9

modulename “ALARM”, version “R3-9” or above

Commands

These are commands for the merging process. Commands always start with a colon “:”, arguments to commands must be separated by colons. A command has this form:

:command{arguments}

where arguments is a colon separated list of arguments. Here are some examples how a command looks like:

command

remark

:clear

command “clear” which has no arguments

:load:myfile

command “load” with argument “myfile”

Here are the known commands:

clear

This command clears the list of module specifications so far. For example this module specifications list:

module1 module2 :clear module3 module4

becomes:

module3 module4

rm

This command removes single module from the list. For example this module specifications list:

module1 module2 module3 :rm:module2

becomes:

module1 module3

load

This command loads module specifications from a JSON file. It must be followed by the name of the file. The JSON file must contain a key “module” which is a list of strings. These are then inserted at the place in the list where the command was found.

If for example file “mymodules” has this content:

{
    "module": [
        "AGILENT-SUPPORT:R0-11",
        "AGILENT:R2-3",
}

The module specification:

ASYN:R4-17-2 :load:mymodules EK:R2-2

becomes after merging:

ASYN:R4-17-2 AGILENT-SUPPORT:R0-11 AGILENT:R2-3 EK:R2-2

build

This command takes all module specifications from a build and inserts them in the llist of module specifications. It must be followed by the name of the build, the buildtag.

If for example, build “MLS-01” contains the modules “AGILENT-SUPPORT:R0-11” and “AGILENT:R2-3”, the module specification:

ASYN:R4-17-2 :build:MLS-01 EK:R2-2

becomes after merging:

ASYN:R4-17-2 AGILENT-SUPPORT:R0-11 AGILENT:R2-3 EK:R2-2