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.
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