The FCM 1 extract system is deprecated. The documentation for the current extract system can be found at FCM Make.
The following is a list of supported declarations for the configuration file used by the FCM extract system. Unless otherwise stated, the fields in all declaration labels are not case sensitive.
The configuration file type, the value should always be ext for an extract configuration file. This declaration is compulsory for all extract configuration files.
Example:
cfg::type ext
The file format version, currently 1.0 - a version is included so that we shall be able to read the configuration file correctly should we decide to change its format in the future.
Example:
cfg::version 1.0
%<name>
declares an internal variable
<name> that can later be re-used.
Example:
%my_variable foo src::bar::base %my_variable src::egg::base %my_variable src::ham::base %my_variable
This declares the name of a file containing extract configuration. The lines in the declared file will be included inline to the current configuration file.
Example:
inc ~frva/var_stable_22.0/cfg/ext.cfg # ... and then your changes ...
The root path of the destination of this extract. This declaration is compulsory for all extract configuration files.
Example:
dest $HOME/project/my_project
This declares the location of a previous successful extract, which the current extract will inherit from. If the previous extract is also a build, the subsequent invocation of the build system on the current extract will automatically trigger an inherited incremental build based on that build.
Example:
use ~frva/var_stable_22.0 # ... and then the settings for your current extract ...
The alternate destination of this extract. This declaration is compulsory if this extract requires mirroring to an alternate destination.
Example:
rdest /home/nwp/da/frva/project/my_project
The login name of the user on the alternate destination machine. If not specified, the current login name of the user on the local platform is assumed.
Example:
rdest::logname frva
The destination machine for this extract. If not specified, the current host name is assumed.
Example:
rdest::machine tx01
The extract system can mirror the extracted source to an alternate
machine. Currently, it does this using either the rdist
or
the rsync
command. The default is rsync. This
declaration can be used to switch to using rdist.
Example:
rdest::mirror_cmd rdist
If rsync
is used to mirror an extract, the system needs to
issue a separate remote shell command to create the container directory of
the mirror destination. The default is to issue a shell command in the
form ssh -n -oBatchMode=yes LOGNAME@MACHINE mkdir -p DEST.
These declarations can be used to modify the command.
Example:
# Examples using the default settings: rdest::rsh_mkdir_rsh ssh rdest::rsh_mkdir_rshflags -n -oBatchMode=yes rdest::rsh_mkdir_mkdir mkdir rdest::rsh_mkdir_mkdirflags -p
These declarations are only useful if rsync
is used to
mirror an extract. By default, the system issues the shell command
rsync -a --exclude='.*' --delete-excluded --timeout=900 --rsh='ssh
-oBatchMode=yes' SOURCE DEST. These declarations can be used to
modify the command.
Example:
# Examples using the default settings: rdest::rsync rsync rdest::rsyncflags -a --exclude='.*' --delete-excluded --timeout=900 \ --rsh='ssh -oBatchMode=yes'
This declares a URL or a local file system path for the container
repository of a branch named <branch> in a package named
<pck>. The package name <pck> must be the name of a top-level
package (i.e. it must not contain the double colon ::
delimiter). The name <branch> is used internally within the extract
system, and so is independent of the branch name of the code management
system. However, it is usually desirable to use the same name of the
actual branch in the code management system. For declaration of a local
file system path, the convention is to name the branch user.
Please note that both <pck> and <branch> fields are case
sensitive. The declared URL must be a valid Subversion URL or a valid FCM
URL keyword.
Example:
repos::var::base fcm:var_tr repos::var::branch1 fcm:var_br/frsn/r4790_foobar repos::var::user $HOME/var
The revision to be used for the URL of <branch> in the package <pck>. If specified, the revision must be a revision where the branch exists. If not specified, the revision defaults to last changed revision at the HEAD of the branch. Please note that if the declared branch is in the local file system, this declaration must not be used. The value of the declaration can be a FCM revision keyword or any revision argument acceptable by Subversion. You can use a valid revision number, a date between a pair of curly brackets (e.g. {"2005-05-01 12:00"}) or the keyword HEAD. However, please do not use the keywords BASE, COMMITTED or PREV as these are reserved for working copies only. Again, please note that both <pck> and <branch> fields are case sensitive.
Example:
# Declare the revision with the FCM revision keyword "vn22.0" revision::var::base vn22.0 # Declare the revision with a {date} revision::var::branch1 {2006-01-01}
If set to true, the declared revision of a branch must be a changed revision of that branch, (unless the keyword HEAD is used).
Example:
revmatch true
This declares a source directory for the sub-package <pcks> of <branch>. If the repository is declared as a URL, the source directory must be quoted as a relative path to the URL. If the repository is declared as a path in the local file system, the source directory can be declared as either a relative path to the repository or a full path. If the source directory is a relative path and <pcks> is a top-level package, the full name of the sub-package will be determined automatically using the directory names of the relative path as the names of the sub-packages. If the source directory is a full path, the full sub-package name must be specified. The name of the sub-package determines the destination path of the source directory in the extract.
Example:
src::var::base code/VarMod_PF src::var/code/VarMod_PF::user $HOME/var/code/VarMod_PF
This declares an expandable source directory for the sub-package <pcks> of <branch>. This declaration is essentially the same as the SRC declaration, except that the system will attempt to search recursively for sub-directories within the declared source directory.
Example:
expsrc::var::base code expsrc::var::user code
This declaration can be used to specify the conflict mode, which is
relevant when a file is modified by two different branches (or more)
relative to the base branch. The conflict mode can be fail,
merge (default) or override (or 0, 1 and 2
respectively). If fail is specified, the extract fails when
a file is modified by two branches (or more) relative to the base branch.
If merge is specified, the system will attempt to merge the
changes. It will fail only on unresolved conflicts. If
override is specified, the changes in the last branch takes
precedence and the changes in the earlier branches will be ignored. Note:
the old override true|false
declaration is deprecated. If
declared, override true
will be equivalent to conflict
override
, and override false
will be equivalent to
conflict fail
.
Example:
conflict override
Declare a build configuration file declaration. The label <fields> is the label of the declaration. On a successful extract, <fields> will be added to the build configuration file. Please note that some of the <fields> may be case sensitive.
Example:
bld::target VarScr_AnalysePF bld::tool::fc sxmpif90 bld::tool::cc sxmpic++ # ... and so on ...