Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
test hard-link capabilities on self generated file instead of relying
on right permissions of the input file.
|
|
Add a function transforming a list into a map. In this way, artifacts
collected positionally in a list can easily be realized as a stage
used for input to an action or output of a target.
|
|
Not only trees, but also regular files can disallow paths reaching
into them. If we have a file at a/b then another file at a/b/c
is a staging conflict as well. Make our tool recognize this.
|
|
In particular, ensure that the empty path and "." have the
same normal form.
|
|
|
|
|
|
... and detect conflicts araising this way. Also normalize
the paths after staging them to the specified subdir.
|
|
Our maps serve two purposes: on the one hand, they can be a generic
key-value association with arbitrary strings as keys. On the other
hand, we use them to describe arrangements of files (inputs to actions,
artifacts or runfiles generated). In this function, certain keys refer
to the same path and hence have to be identifed. Therefore, at places
where the keys clearly have to be paths in the file system, implicitly
normalize them and check for conflicts.
|
|
|
|
|
|
|
|
... allowing to provide additional information in case of conflict
during flat staging.
|
|
To concatenate lists (the only ability the "+" operator had),
use "++".
|
|
... to allow for overwriting
|
|
For historic reasons, we considerd special strings as false values.
Drop that behavior in favor of a clean LISP-like semantics: everything
is true that is not empty.
|
|
|
|
... to foster the implementation of the built-in target "TREE"
|
|
|
|
This patch introduces a templated ParseEntityName which can accept a
json or ExpressionPtr. Internally, performs a proper dispatch on these
cases
- isString
- isList
- size == 2
- size >= 3
A test is added for checking the proper handling of an empty list
|
|
EntityName now clearly expresses its double identity:
- NamedTarget
- AnonymousTarget
The usage of std::variant<NamedTarget,AnonymousTarget> guarantees that
EntityName, internally, is not a mix of the two - like could happen
before this patch.
NamedTarget features an enum ReferenceType to express the type of the
target, namely, "normal target" or an "explicit file reference".
Thanks to this refactoring, the introduction of new targets type
should be easier, since the design is more modular.
NamedTarget
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Add a test that compiles many C binaries and runs them. The main
purpose of the test is to detect any race conditions in this
scenario.
|
|
|
|
Given a number or number representation, return a list of that
length consisting of representations of the lower numbers. In this
way, repeated non-pure actions can be generated (e.g., repetitions
of a test to detect flakyness).
|
|
|
|
... to avoid unnecessary copying and moving of larger objects.
|
|
|
|
Use the log functionality instead of relying on stderr being
precisely the log. Also check for the number of processed
actions instead of any number of actions that might be
reported in the log. While there, redirect stderr to stdout
to have a unified cronological log.
|
|
... and therefore produces linker warnings.
|
|
|
|
|
|
... instead of relying on the filesystem preventing us from
writing to a read-only file, which wont happen if the user
is root.
|
|
Repositories are indentified by free names that are bound,
in a per-repository way, in a global configuration. Add
a test verifying this: the name "other" refers to differnt
repositories in the repositories "A" and "B" and chains
of depending on "other" can be followed.
|
|
... in particular verifying that relative references cannot go
outside a repository and explict file ferences cannot go upwards.
|