Age | Commit message (Collapse) | Author |
|
Also adds missing TARGETS file in serve_api folder and ensures
code comments are consistent with the proto file.
|
|
- add missing serve_api TARGETS file
- rename service client to align with server naming scheme
- fix inconsistencies in comments between implementation and protocol
|
|
This is required in order to make them available to 'just serve'
in a minimal just installation.
|
|
This way they can be used by 'just serve'.
|
|
This avoids using the more geenric GitRepoRemote method which
has libcurl as a dependency, something that is not needed for this
Git operation.
|
|
Also fixes a small typo in tree existence checker log messages.
|
|
Co-authored-by: Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com>
|
|
|
|
This is brought in by the tree-of-archive rpc of just serve.
Also adds lzma and bzip2 as transitive dependencies.
|
|
Export the same target from different repositories, as well as
an explicit file reference with the same name and verify that
no spourious cache hits occur.
|
|
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.
|
|
|
|
|
|
...of the internal cache used for keeping track of running operations.
|
|
Co-authored-by: Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com>
|
|
... and point to the repository with machine-readable instructions
on how to properly build them.
|
|
|
|
|
|
...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.
|
|
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.
|
|
|
|
|
|
... by renaming test/end-to-end/targets.
|
|
When a shared library is picked up from the host system via pkg-config
that is located at a non-standard location, binaries linked against
this library by a standard linker either need LD_LIBRARY_PATH set
appropriately, or -rpath set at link time. However, not all custom
installations set -rpath in the link flags in their pkg-config file.
Therefore, in order to get working binaries (and not have to set
custom paths in tests), add a -rpath for every -L option found in
the ldflags provided by pkg-config.
|
|
|
|
|
|
|
|
|
|
... as tree for the whole commit, and thus pollutes subsequent builds.
|
|
In order to not pollute builds, one should only store in the id
file the association between a commit and its *root* tree. As the
need for such a file only happens when asked to fetch absent
roots, which should be a quite rare use case, we can request the
whole tree of a commit to be served (incl. synced with remote
execution) and perform the subdir tree extraction locally instead.
|
|
|
|
|
|
This was causing the remote serve address to overwrite the one set
for remote execution.
Also, to keep things clean, some common remote server-related
methods and definitions were moved into their own library.
|
|
|
|
Using absent repositories depends on a just-serve endpoint. As
such, it is not a datum of the project, but one of the available
infrastructure. As the latter can change independently of the
project, it is desriable to have the option to specify those pieces
of information in separate files.
|
|
As we have, with "remote execution", a command-independent option to
set the remote-execution endpoint that also gets forwarded, a typical
configuration would specify the endpoint there.
|
|
Just like the remote-execution protocol has several services (Execution,
ActionCache, ContentAddressableStorage, etc), so will the serve
protocol: the actual target-level caching, as well auxilliary
services, like the service to obtain the tree for a given root. Already
follow that scheme, before the protocol gets part of any release.
Also, move the status enum into the respective answer messages. In this
way, we can have different enums for different requests without causing
conflicts on the named enum constants.
|
|
... as well as the already present -Wno-error. In this way,
packagebuilding should work out of the box on more systems.
|
|
server is started
|
|
... by also keeping the map of commit to tree locally.
|
|
|
|
|
|
The serve service will communicate with this endpoint when needed,
as well as ensure artifacts it provides are synced with the remote
execution CAS, if requested by the client.
If just-mr is given the --fetch-absent option, it Always produce
present roots irrespective of the 'absent' pragma. For Git repositories
marked with the 'absent' pragma, first try to fetch any commit
trees provided by the serve endpoint from the execution endpoint
CAS, before reverting to a network fetch.
Co-authored-by: Klaus Aehlig <klaus.aehlig@huawei.com>
Co-authored-by: Alberto Sartori <alberto.sartori@huawei.com>
|
|
This functionality will be needed to upload git trees
to a remote-execution end point by `just serve.
|
|
- Document that `just serve` can be asked to back up a tree to the
remote execution end point.
- Specify, that similar to getting the tree of a commit, just serve
can also be asked to provide the tree of an unpacked archive
given by its blob identifier.
- Document the auxilliary request by which `just build` can get
the needed information about the flexible variables of an export
target in order to construct the correct cache key.
|
|
|
|
|
|
|
|
...via an 'absent' pragma in repository descriptions.
For 'git'-type repositories, first interrogates a 'just serve'
remote, if given, before reverting to fetching from the network.
|
|
|