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