JUST-MRRC(5) | File Formats Manual | JUST-MRRC(5) |
just-mrrc - The format of the configuration used by just-mr(1)
The file is read as JSON. Any other serialization describing the same JSON object is equivalent. We assume, that in JSON objects, each key occurs at most once; it is implementation defined how repetitions of the same key are treated.
A location is a JSON object with the keys "root", "path", and "base".
The value for key "root" is either "workspace", "home", or "system", which have the following meanings:
The value for key "path" is the relative path of the item to locate within the location root.
The value for key "base" is a relative path within the location root. This path is only relevant for locations of config files. If such a config file contains relative paths, those will be resolved relative to the specified base. If omitted, the default value "." is used.
The just-mrrc is given by a JSON object.
For subkey "address" the value is a string specifying the remote execution address in a NAME:PORT format.
For subkey "compatible" the value is a flag which specifies whether the remote endpoint uses the original remote execution protocol.
Each subkey value can be overwritten by its corresponding command-line argument.
For subkey "address" the value is a string specifying the remote serve address in a NAME:PORT format.
Each subkey value can be overwritten by its corresponding command-line argument.
For subkey "ca cert" the value is a single location object specifying the path to a TLS CA certificate. For subkey "client cert" the value is a single location object specifying the path to a TLS client certificate.
For subkey "client key" the value is a single location object specifying the path to a TLS client key.
Each subkey value can be overwritten by its corresponding command-line argument.
In this way, an rc file commited to a repository can be allowed to set a sensible configuration, remote-execution and serve end points, etc. This is particularly useful when simultaneously working on several projects with different settings.
An example just-mrrc file could look like the following:
{ "rc files": [ {"root": "workspace", "path": "rc.json"} , {"root": "workspace", "path": "etc/rc.json"} ] , "config lookup order": [ {"root": "workspace", "path": "repos.json"} , {"root": "workspace", "path": "etc/repos.json"} , {"root": "home", "path": ".just-repos.json"} , {"root": "system", "path": "etc/just-repos.json"} ] , "absent": [ {"root": "workspace", "path": "etc/absent.json"} , {"root": "home", "path": ".just-absent"} ] , "local build root": {"root": "home", "path": ".cache/just"} , "checkout locations": {"root": "home", "path": ".just-local.json"} , "local launcher": ["env", "--"] , "log limit": 5 , "restrict stderr log limit": 4 , "log files": [{"root": "home", "path": ".log/just/latest-invocation"}] , "distdirs": [{"root": "home", "path": ".distfiles"}] , "just": {"root": "system", "path": "usr/bin/justbuild"} , "git": {"root": "system", "path": "usr/bin/git"} , "remote execution": {"address": "10.0.0.1:8980"} , "remote-execution properties": ["image:development-v1.2.3"] , "just args": { "build": ["-J", "64"] , "install": ["-J", "64", "--remember"] , "install-cas": ["--remember"] } , "just files": { "config": [ {"root": "workspace", "path": "etc/config.json"} , {"root": "home", "path": ".just-config"} ] } }
just-mr(1), just-mr-repository-config(5)