Age | Commit message (Collapse) | Author |
|
While building a computed root generally follows the way the main
build is carried out, certain parameters need to be cleared. In
particular, the computed root is not part of the rebuild and no
build output should be dumped anywhere.
|
|
... given that a proper reporting of the return code if
repo_config.SetGitCAS is contained in main anyway. Therefore, log
the details trying to set the git cas to a level less than that of
the final reporting.
|
|
... as there might be cases where it is expected that setting the
git CAS fails, e.g., if referring to the implict git repository in
the local build root as a fallback CAS.
|
|
This method returns a GitCASPtr allowing the caller to handle
failure gracefully. Therefore, logging should be at most at level
Warning as it is up to the caller to provide the fatal error message.
Moreover, it can be at lower level in cases where failure to open
that git cas is not an unexpected event, e.g., when looking for a
blob in local mirrors first.
|
|
When materializing a computed root fails, the error is reported
as a reference (in form of a blob identifier) to the log. This
indirection is necessary as many roots are, in general materialized
simultaneously. When building remotely, also upload the build log
to remote execution; in this way, it is available in the same way
as for serve-build failures (which are the other delegated builds).
One particular use case is if the failure happens on a CI build;
then the upload ensures the actual log is still available for the
observer of the CI (provided they have access to the remote execution
used by the CI).
|
|
... as the base repository of a computed root might be absent.
|
|
|
|
... however, also build the runfiles, as they are needed to write the
target-level cache for the underlying export target.
|
|
|
|
|
|
|
|
...and ignore non-requested digests.
|
|
|
|
...and use expected to replace it.
|
|
As analysis now can compute roots, i.e., can build artifacts, it
needs to support setting the local launcher, action timeout, and
the build jobs.
The stage and rebuild arguments, which are also needed by the graph
traversal, as well as other build-related arguments, remain not
supported for the analysis subcomamnd, however they remain honored
if set by subcommands that trigger an implicit analysis (e.g.,
build or install).
|
|
|
|
Failure to execute an action can be infrastructure problems, like failure to
reach the server, etc. However, it can also be an action timeout; in the latter
case, we want to know which action it was that did time out.
|
|
|
|
Some actions are allowed to fail, typically tests. By reporting the
output of failed such actions early, the user can already have a
look at those artifacts, typically a test log, while the build is
still going on.
|
|
... to avoid unnecessary network fetches.
|
|
|
|
Extend the api to optionally accept a different API for preferred
fetching. This is already supported when fetching to a file path;
therefore, extend to keep the interface symmetric.
|
|
If fetching via the primary API failed and there is no fallback,
we should fail rather than tacitly continuing with the next object
to fetch.
|
|
...and access internal state via getters.
|
|
...since there are no unique_locks any more.
|
|
...and remove GuardedRepo.
|
|
|
|
...and use it in GitRepo to set custom backends.
|
|
|
|
...and fix a potential memory leak in the try-catch for std::filesystem::absolute.
|
|
|
|
|
|
To avoid unnecessary staging and git imports of computed roots for
build in compatible mode, use the rehashing functionality to allow
us to compute the git tree of that root in memory.
|
|
|
|
When constructing a git tree out of an artifact stage, support
rehashing the artifact digests on the fly, so that artifact stages
not based on GitSHA1 can be supported as well.
|
|
... to allow a more specific signature when passing around
the rehash function.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
...and process their bindings.
|
|
...and remove the second for-loop.
|
|
|
|
|
|
|
|
|