Age | Commit message (Collapse) | Author |
|
...to remove the unnecessary link between folder name and the logic
of resolve_symlinks_map.
|
|
Also follow-up changes to ensure build success.
|
|
...to be able to interrogate remotes irrespective of protocol.
When serve endpoint is active, it will provide the correct digest
with which to interrogate the remote endpoint. Otherwise, for a
compatible remote check the file mappings for the correct digest.
The serve service proto file is updated accordingly.
|
|
|
|
...and use it to create ArtifactDigests.
|
|
...instead of using the singleton.
|
|
|
|
...since it is used for capturing in lambdas for AsyncMaps and mustn't be temporary.
|
|
...instead of std::optional<gsl::not_null<IExecutionApi const*>>
|
|
...and replace verbose constructions.
|
|
|
|
...and adjust interfaces.
|
|
...instead of using singleton calls.
|
|
Main culprits:
- std::size_t, std::nullptr_t, and NULL require <cstddef>
- std::move and std::forward require <utility>
- unordered maps and sets require respective includes
- std::for_each and std::all_of require <algorithm>
|
|
|
|
For archive repositories we need to ensure that a non-absent root
is backed by an archive content blob in the local CAS, in order to
also keep the proper root tree file associations. This change also
simplifies the content_cas_map logic by removing the previous
separation of implementation logic between fetching and setting up
the workspace root.
|
|
To take advantage of absent roots, we need to ensure that a given
serve endpoint can build against the tree of this generated root.
To this end, for an 'archive' repository we only set the root as
absent if the serve endpoint knows already the root, it can set it
up itself, or we can create the root locally without a network
fetch and then upload it to the serve endpoint via the remote CAS.
A network fetch never gets performed for an absent root.
If a serve endpoint is not provided, an absent root can still be
generated, but only if no network fetches are required. In this
case a warning is emitted.
|
|
This is to uphold the coding style guide we employ.
|
|
Now we look for the content blob also in the local Git cache, not
just in local CAS. If found, we store the blob read from Git cache
into local CAS and continue as usual.
|
|
This fixes the multiple instances of (mainly) missing or wrong
includes of standard, third-party, and own headers in the
other_tools source folder.
|
|
As this map is supposed to work as an all-or-nothing guarantee of
content being in CAS, we can replace the bool return type with the
null type instead.
|
|
Before trying to fetch an archive content from other non-local
sources, check first the just serve endpoint.
|
|
...before going to the network, if 'just serve' endpoint given.
ContentCASMap was reworked to provide a cleaner logic for handling
pure fetches, which also reduced code duplication in ContentGitMap.
|
|
|
|
Also extends 'distdir' repositories logic accordingly.
|
|
This is required in order to make them available to 'just serve'
in a minimal just installation.
|
|
...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.
|
|
The IsAvailable method with the correct signature is now called.
|
|
...for archives not already in local CAS.
|
|
For 'file' and 'archive' checkouts we will handle more than just
the 'ignore' value.
|
|
|
|
When deciding if two archive-based repositories create the same root
it is not enough to compare the contents of the archive; it also
matters which subdirectory we will take as root. This is especially
important, if we take the same archive on the one hand for the code
and also the example subdir for testing.
Additionally, we cannot ignore the archive type; there are tar
archives that are also zip archives, but with different content. (Tar
only cares about the initial segment till it finds the two empty
blocks; zip has the index at the end and ignores any initial segment
that might have been prepended to a valid zip archive.)
|
|
|
|
In order to only report actual work, the name of the repository for which
work is actually done needs to be known to certain AsyncMaps used by just-mr.
Also, fetches not originating in a distdir repo checkout need to be counted
additionally, so an additional flag was needed for the content_cas_map.
|
|
Calls libcurl to fetch the archives from the internet.
|