diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2025-01-24 12:12:00 +0100 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2025-01-24 12:23:22 +0100 |
commit | 5e104a526cf76fe75312d2fd288a3c88f506fb0a (patch) | |
tree | c37892136648b438f96e44ad05dcd0b0fb2a2b37 /doc/concepts | |
parent | bc5eee755cb649e850911c644ba4e55e83c78dd9 (diff) | |
download | justbuild-5e104a526cf76fe75312d2fd288a3c88f506fb0a.tar.gz |
"generic" rule: verify staging conflicts on inputs
The "generic" rules deliberately resolves conflicts on identical
paths in a latest-wins fashion (seeing all artifacts as later than
all runfiles) to allow an easy way to define actions. However, the
inputs stage obtained by this resolution can still contain conflicts
and those are an error. Properly detect those. Also clarify in the
documentation, that only conflicts on identical paths are resolved
in the described priority, not semantic overlap.
Diffstat (limited to 'doc/concepts')
-rw-r--r-- | doc/concepts/built-in-rules.md | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/doc/concepts/built-in-rules.md b/doc/concepts/built-in-rules.md index 6c80ffb4..e7a5e2e3 100644 --- a/doc/concepts/built-in-rules.md +++ b/doc/concepts/built-in-rules.md @@ -86,10 +86,12 @@ choice. The `"deps"` argument is evaluated and has to evaluate to a list of target names. The runfiles and artifacts of these targets form the -inputs of the action. Conflicts are not an error and resolved by giving -precedence to the artifacts over the runfiles; conflicts within -artifacts or runfiles are resolved in a latest-wins fashion using the -order of the targets in the evaluated `"deps"` argument. +inputs of the action. Conflicting definitions for individual paths +are not an error and resolved by giving precedence to the artifacts +over the runfiles; conflicts within artifacts or runfiles are +resolved in a latest-wins fashion using the order of the targets in +the evaluated `"deps"` argument. However, the input stage obtained +by those resolution rules has to be free of semantic conflicts. The fields `"cmds"`, `"cwd"`, `"sh -c"`, `"out_dirs"`, `"outs"`, and `"env"` are evaluated fields where `"cmds"`, `"out_dirs"`, and `"outs"` |