Age | Commit message (Collapse) | Author |
|
... by using "disjoint_map_union" instead of "map_union" which
has a latest-wins semantics and does not have a "msg" arguement.
|
|
|
|
... and replace all instances where the field_*_list variant
of those expressions is used solely for the purpose of
performing the disjoint union manually.
|
|
|
|
... for collecting link-args from dependencies. By
consistently using this expression, we fix an issue with C++
binary and test, which both did not collect the linker
arguments from their proto-deps.
|
|
|
|
... to query and merge map/list entries from the provides
map of the given target_fields' targets.
|
|
|
|
before this patch the completion from just install to install-cas did not work.
this patch adds autocompletion to directories and files as well.
|
|
|
|
While git's (sha1-based) blob identifier is good for daily use and
strong enough to avoid accidental hash collisions (after all, we're
using git to version our sources), sha1 is no longer considered
safe enough to verify files downloaded through an unsecure channel.
Therefore, support additional checksum verification when obtaining
a file from the network.
|
|
As our default (bundled) bootstrap brings a well defined version of
ssl, use this also in the initial bootstrap step.
|
|
Since in default (bundled) bootstrap, we bring our own version
of libgit2, also use that for the initial bootstrap step.
|
|
Some libraries, e.g., libgit2, bring an include directory that is
expected to occur directly in the search path (containing a git2
directory and a git2.h file). Support this use case by allowing
"." as include_name in the bootstrap hints.
|
|
|
|
The expected size of the list that defines the target was not checked
consistently. So, in case a target expected a list with 4 elements,
but got just 3, a segfault would happen.
This patch resolves this issue.
|
|
|
|
... which are more efficient if the caller wants to perform
the union manually (because disjointness should be enforced
or additional maps should be added to the union, etc.). As a
positive side effect, code reuse is slightly increased by
consistently calling these newly introduced expressions for
obtaining the artifacts/runfiles from all targets of a
target field.
|
|
... which can now be parameterized which target_fields to
query the dependencies from.
|
|
With the reformating of the analyse result we accepted longer
output lines anyway. Allowing them in the report of a detected
flaky action immediately gets the log and console output more
useful, as the source can often be identified without looking
at the full definition of the action in the action graph.
|
|
In particular, document the result for the most important
rules.
|
|
A complete documentation of a rule should not only include how to
use it (i.e., which fields are present and what is their meaning)
but also what the result is. This is particularly true, as the result
is structured and can contain some complex logic or conventions in
the provided information.
|
|
|
|
DirectoryEntries must be constructed explicitly either via a GitTree*
or an unordered_map<string,ObjectType>. So, the case of an empty
directory, is represented by an empty map. Before this patch, empty
directories were represented by std::monostate and missing checks
on that led to a seg-fault.
|
|
For a user, an important information is to know which actions
are currently running and, more importantly, the target that
caused them. To do so, we need a bit of infrastructure.
- We have to keep track of begin and end of running actions,
as well as the order in which they were started. That has
to happen efficiently and in a thread-safe way.
- We have to compute and keep the origin map for actions,
even if we don't serialize the action graph.
|
|
So far, `just describe` reported only the list of keys for runfiles
and artifacts while reporting full information for the provided
data, including the artifacts contained therein. Change this to
always reporting the full information, as for runfiles and artifacts
the detailed information is valuable as well.
|
|
|
|
... allowing to provide additional information in case of conflict
during flat staging.
|
|
|
|
|
|
On the one hand, this keeps the rules files more readable. On the
other hand, we can even deduplicate code, as those expressions are
used twice.
|
|
The idea, as documented, of a header directory is to have a
directory, closed as a tree, owned by the respective library and
internally handled in an efficient way (as a single tree). If we
open up that directory, we just have staged data, and therefore
should treat it as such.
|
|
... by presenting the data both, as artifacts and as runfiles
in the same way as inputs do.
|
|
The fact that we happen to use the same protocol as bazel does,
does not mean we are bazel. After all, the remote-build-execution
protocol is meant as a generic protocol. Hence change the names in
logs to avoid confusions.
|
|
|
|
|
|
|
|
To concatenate lists (the only ability the "+" operator had),
use "++".
|
|
... so accessing the CAS from a different cwd wont fail if
the local_build_root was provided as relative path.
|
|
... instead of naming every single file. This will, on the one
hand keep the targets file more readable and, on the other hand
more easy to maintain.
|
|
|
|
|
|
... to allow for overwriting
|
|
As the default target is also staged canonically, there
is no longer the need for the bootstrap script to know
the path and staging output of the internal main target.
|
|
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.
|
|
|
|
... so that the calls using stdin/stdout redirect also work
properly.
|
|
|
|
... to foster the implementation of the built-in target "TREE"
|
|
|