Age | Commit message (Collapse) | Author |
|
|
|
Before this patch, if the option `--remote-execution-property KEY:VAL`
is repeated multiple times (also with different `KEY`s), only the last
one is taken into account.
This patch fixes the intended behavior.
(cherry picked from commit 2e953b04bbd8e619172c9d0eeafd0342700d6ee9)
|
|
To avoid too many intermediate results, we compute the union of
a list in a divide and conquer fashion. Of course, for a disjoint
union, the recursive calls on the lists of half the length have to
be disjoint as well, i.e., the template parameter kDisjoint has to
be passed on. Fix this.
(cherry picked from commit 469a7190bee490344d147099c3511fc45e2aadf0)
|
|
grpc is used in the toolchain defaults for proto servive libraries.
Still, it is typically built on its own, with its own toolchain,
flags, etc. Now, grpc, however has a public dependency on a the
rpc-status proto library, that the user may well use on their own,
however building in their own way which can yield conflicts. To solve
this, we hide the dependency on that proto library, as infrastructure
libs should not make assumptions on user-servicable libraries.
- First, we note that the dependency can be made a private one,
which already solves the conflict on header files (which will
essentially be the same, but might be defined in a different way).
- Next, we note that the library at linking basically only acts
as a default implementation; if the user provides their own
version of the rpc-status library, we should prefer that anyway.
As infrastructure is linked last, we have that default character
anyway; the only thing to do is to rename the library that no
staging conflict occurs.
(cherry picked from commit dc97c25fabb53f95c4f0826db2323008e22505fd)
|
|
For historic reasons (as quite some tests date back till before the
public name of the build tools was decided), the end-to-end tests
assume generic names for the tools. This used to be done by simple
staging the artifacts. As soon as we started to support dynamic
linking, we also have to allow the runtime dependnecies, as provided
by our install-with-deps rule. ae2e515ab84ea3ab08764685f84441c0741f8039
attempted to add those dependencies by replacing the staging by
a generic action doing a copy. This, however, made the "lib" dir
containing the dependencies an opaque tree
- defined by different actions, and, more importantly,
- containing only the run-time dependencies of one of the tools.
This causes staging conflicts between those two lib dirs (currently
hidden by a bug in the computation of the disjoint union) and things
only worked because in the canonical configuration used for testing
both "lib" dirs are empty anyway.
The correct way of adding dependencies while renaming the tool is
still staging; fix this.
(cherry picked from commit ddd2f5937a9016f5ff2f6bf659ba459129e49826)
|
|
... as any unguarded access to non-const members of the same
shared_ptr instance require the use of `atomic_load` and
`atomic_store`.
(cherry picked from commit bda3dabe37fdde648f90ce5aa4b20d7336570cf0)
|
|
Taken from commit fb365b17ca339a25688ff61918280a46d64943b9
|
|
Our fetch and launch tool is parametric in the tool to be launched.
Reflect this in the documentation and do not pretend it to be the
name "just" hard coded. While there, also fix the hard-coded name
"git" in the documentation of the default value.
(cherry picked from commit e15f11ce0a7813602d9627e95ae9fb125afa891e)
|
|
While it is best practise to build outside the source tree, some
package formats require that a build be carried out inside the
source tree. As there are no principle obstacles, as long as a
non-existing directory is requested as build dir, support it by
ignoring the destination in the recursive copy.
(cherry-picked from 264ba60e221231109201da1c6d336c642959a0c2)
|
|
(cherry-picked from commit c3d28a4cc3115644414ddba41d4b7ada5fd74fc2)
|
|
... to provide an informative error message on how a rule is related
to a particular import and, in particularly, at which expression
a problem with the import occurred.
While there, also improve the message in the other error case to
follow our standard line-breaking scheme.
(cherry picked from commit be91d666a483d0c982aea3c7b2d77a1c1dfa1bf9)
|
|
|
|
|
|
... and improve log messages in case of failure.
(cherry picked from commit 65d35006de65e540355833a56bcaa7659f6f1afd)
|
|
... as an overlay for the configuration, not the configuration
to be used for the target to configure.
(cherry picked from commit 76582028a15e265518fad839039ec0efff75383e)
|
|
The traverser instantiation consumes the arguments.build struct,
therefore one must not access that struct later in the code.
(cherry picked from commit bc09302c2772c979c45ecc716c36e4a70bb484ac)
|
|
(cherry picked from bab0d949d51fe4f10c8d492083427d514206cb63)
|
|
(cherry picked from 2e54838fae527baba13d88e505f3e4241c45a3a8)
|
|
The install target, like any other target, has to have artifacts
and runfiles being proper stages, i.e., in such a way that the
keys can be interpreted as names in the file system without causing
conflicts. This property used to be unchecked, thus allowing users
to define mal-formed targets that, when used as inputs to actions,
would result in unspecified layout of the action directory. Fix
this by adding an appropriate check enforcing well-formedness of
the resulting stage.
(cherry picked from f66db4bb21efeead140a453f91280bb9471f24a9)
|
|
|
|
|
|
Make sure that all CopyFile, WriteFile, and CreateSymlink
functions properly unlink the target file (if it exists and
overwrite requested) to avoid interferences of the install
command. With this change, the clean up step for install-cas
and the within GraphTraverser can new be omitted.
(cherry-picked from 04e2f0aa0ccfe4f39c5f6c713bde182c6b7704dd)
|
|
... which was accidentially a list of (a single) object,
instead of only a single JSON object.
(cherry-picked from 63a874517618a57dd5ca223d19a795c28a39c123)
|
|
The cache key for an export target should contain as target name
that of the export target (and its effective configuration) rather
than the exported target. As we computed the repository part of
the cache key for the target included in the key, this was still a
correct cache key except in the case an explicit file reference was
exported (as here, the information that the file was to be taken
rather than the target of the same name got lost). We still fix
this issue by making the implementation match our design (rather
than by including the file-reference bit in the cache key), as the
original design gives the cleaner protocol for target-level caching
as a service.
(cherry-picked from 180d8d89ffa92f8c3e8b8bcb912ec1a4990569c9)
|
|
...of the internal cache used for keeping track of running operations.
(cherry-picked from bec4dbd9bd995f73eab1ff803e7895187068ddb0)
|
|
|
|
|
|
...which signal either cient- or server-side failures.
This ensures we exit with a failed network fetch early in cases
where it is clear we won't receive useful data.
(cherry-picked from 4ef74caa5d96471d058bd1c9542d79ad58538da7)
|
|
After successfully fetching data over the network for an archive,
if the optional checksums are not provided, the code will throw if
there is a mismatch between the hash of the fetched data stream
and the provided content hash.
This commit fixes the issue by adding an additional check which
properly handles the possible mismatch.
(cherry-picked from 9acaa7f60c88c97f58b757ffb6ce206f3f2953a2)
|
|
... by renaming test/end-to-end/targets.
(cherry-picked from d95d8121199e2519aa441cb1a471cf5aec69574d)
|
|
... as well as the already present -Wno-error. In this way,
packagebuilding should work out of the box on more systems.
(cherry-picked from 5abcd4140a91236c7bda1c21ce69e76a28da7c8a)
|
|
(cherry-picked from 82e0bd818aee1ca8751e0abf20455af88cc513bf)
|
|
|
|
|
|
(cherry picked from 53ba5581070bc8914a35a5e16af901c562923e61)
|
|
(cherry picked from 3e4e2b6fcbffe5de62d7c3eab47fdf3987dc778d)
|
|
... std::hash<fs::path> was first implemented in libstdc++
version 12. However, that change was also backported to
bug-fix release 11.4, so we may not include our
reimplementation if that version is used.
(cherry picked from 8fb4a41a63e5d195c2463ce0bc75e9d41cc0c5be)
|
|
The formatter is based on fmt's ostream_formatter, using the provided
operator<<(std::ostream&) of nlohmann::basic_json. This is required to
allow compilation against fmt 10.x
(cherry picked from 601d546b8452159c38d65231d52f0dbd05e793d2)
Co-authored-by: Oliver Reiche <oliver.reiche@huawei.com>
|
|
... to improve portability
(cherry picked from 2b2719c7507437d722ad673d8c563f1c54974770)
|
|
|
|
|
|
|
|
... causing an error with gcc 13.2.0.
|
|
|
|
|
|
... to silence false-positive 'possible dangling reference'
warning produced by gcc 13.2.0.
|
|
... on next invocation, instead of being taken from cache.
|
|
... which are only actions that, besides giving exit code 0 also
created all the outputs they promised to.
|
|
... to suppress 'unused function' warnings.
|
|
|