summaryrefslogtreecommitdiff
path: root/src/buildtool
AgeCommit message (Collapse)Author
2023-12-13Add a retry lib that provides useful wrappers to allow to retry...Alberto Sartori
...the provided function until either the function succeeds, maximum number of attempts is reached or the function returns an error indicating that we cannot simply retry. It is meant to be used with rpc calls, but the logic can be applied to other scenarios.
2023-12-13bytestream client: log more info in case of a failureAlberto Sartori
2023-12-13executor.hpp: log more info in case of failureAlberto Sartori
2023-12-13Add debug output for blob splittingSascha Roloff
2023-12-12just: Report progress of export targets served during analysisPaul Cristian Sarbu
2023-12-12just serve: Implement a progress reporting infrastructurePaul Cristian Sarbu
This commit simply defines the logic needed for progress reporting.
2023-12-12absent_target_map: Improved loggingPaul Cristian Sarbu
2023-12-12serve target: Update client-side to add execution configuration fields to ↵Paul Cristian Sarbu
request
2023-12-12serve target: Update server-side to compute correct target cache shardPaul Cristian Sarbu
2023-12-12just_serve.proto: Update serve target requestPaul Cristian Sarbu
The request should only be restricted to the minimal information needed by the remote to answer it. In particular, the execution endpoint address should not be transmitted.
2023-12-12execution_api: Move dispatch file parser into separate utilityPaul Cristian Sarbu
2023-12-12build_utils: Be specific in target cache entry store location...Paul Cristian Sarbu
...by specifying which TargetCache instance to use. This will allow 'just serve' to store target cache entries into the correct sharded location.
2023-12-12just serve: Fix handling of missing remote execution endpointPaul Cristian Sarbu
Only the client needs to make sure that the remote execution endpoint is set in the case 'just serve' acts also as 'just execute', i.e., when a remote execution endpoint is not specified, while for setting up the serve server a missing execution endpoint should remain unset.
2023-12-12serve configuration: Fix remote execution check to allow unset valuePaul Cristian Sarbu
In the scenario when 'just serve' acts as 'just execute', the remote execution endpoint returned by the serve service should be allowed to be empty. In this case, from the server's perspective, there is nothing to be checked, however a client might still want to ensure that its own configured serve and execution endpoints match.
2023-12-12serve target: Move server-side helper methods in own libraryPaul Cristian Sarbu
2023-12-12serve target: Use consistent scope resolution in grpc callsPaul Cristian Sarbu
2023-12-12Fix formatting of blob used to shard target cachePaul Cristian Sarbu
The ToJson method of RemoteAddress was wrongly creating a list instead of a simple string, thus a wrongly formatted backend description was being used to shard the target cache. This however does not affect the correctness of the build. Changelog also updated accordingly.
2023-12-12Filesystem: Fix copy overwrite of symlink with fileOliver Reiche
... and improve log messages in case of failure.
2023-12-07just serve: Implement client-side ServeTree and extend serve APIPaul Cristian Sarbu
2023-12-07just serve: Implement server-side ServeTree RPCPaul Cristian Sarbu
2023-12-07source_tree.cpp: Fix wrong path in log messagePaul Cristian Sarbu
2023-12-07just_serve.proto: Add rpc to serve known tree and sync it to remote CASPaul Cristian Sarbu
2023-12-06install-cas cli: Remove remote execution properties and dispatch file...Paul Cristian Sarbu
...options from the generated help messages, as these are not used for the install-cas subcommand. This also updates the man page accordingly, where the dispatch file was marked as supported, as well as update any test affected by these changes.
2023-12-06just serve: make tc write strategy configurableKlaus Aehlig
2023-12-06Add CLI option to set write strategy for target-level cacheKlaus Aehlig
2023-12-05target-cache writing: support different strategiesKlaus Aehlig
2023-12-05just serve: Orchestrate remote build for uncached export targetsPaul Cristian Sarbu
2023-12-05FileRoot: Add ignore-special flag getter and remove unneeded inliningPaul Cristian Sarbu
2023-12-05serve target client: Ensure repository key blob is also in remote CASPaul Cristian Sarbu
2023-12-05just serve: Add configuration fields for remote buildsPaul Cristian Sarbu
2023-12-05serve target: Add missing gc lockPaul Cristian Sarbu
2023-12-05just main: Move useful results processing methods to own libraryPaul Cristian Sarbu
2023-12-05AnalyseTarget: Simplify method signaturePaul Cristian Sarbu
Similarly to the jobs common argument, we can simply only pass the needed single element from the analysis arguments struct. This will allow for a clearer understanding of what target analysis requires and reduce the overhead when reutilizing this method in just serve.
2023-12-05just main: Move root parser into static FileRoot method...Paul Cristian Sarbu
...to make it available also for setting up 'just serve' builds.
2023-12-05just main: Make capitalization in log messages consistentPaul Cristian Sarbu
2023-12-05executor: Move helper methods inside ExecutorImpl classPaul Cristian Sarbu
...with appropriate scope depending on where they are called from, to avoid unnecessary code duplication.
2023-12-04target.hpp: Fix double include statementPaul Cristian Sarbu
2023-11-30Resolve inconsistencies in third-party headers include formatPaul Cristian Sarbu
2023-11-30local API: Implement upload fileKlaus Aehlig
... overriding the default implementation. In this way, files can be added directly to the local CAS without having to completely reside in memory.
2023-11-30Splice blobs on diskKlaus Aehlig
When using blob splitting, we expect to create a potentially large file. Therefore reconstruct it from its parts on disk rather than keeping the whole file in memory.
2023-11-30remote API: support uploading files from the file systemKlaus Aehlig
Allow implementations to have a specialized way of uploading a file owned by the build process to the applicable cas, both as file, as well as as tree object (in native mode). If no implementation is provided, the default is to read the file into memory and use the Upload method.
2023-11-30Add files to CAS without fully keeping them in memoryKlaus Aehlig
2023-11-30hash_function: support hashing of filesKlaus Aehlig
Extend our internal hash-function abstraction to support hashing of files. In this way, we can provide a way to compute the hash of a potentially large file without having to fully read it to memory first, while still keeping the details of the used hash function abstracted away.
2023-11-30ObjectType: Add noexcept specifierPaul Cristian Sarbu
2023-11-30FileRoot: Fix content description for ignore-special rootsPaul Cristian Sarbu
Ignore-special git-tree-based roots are still content defined, so one should use the correct marker in the JSON description of the root that will be stored in the repository description of target cache keys. This commit fixes the issue and improves documentation.
2023-11-27Refactoring RepositoryConfigPaul Cristian Sarbu
With the introduction of 'just serve', export targets can now be built also independently from one another based on their corresponding minimal repository configuration, as stored in the target cache key. In this context, this commit changes the RepositoryConfig usage from one global (static) instance to pointers passed as necessary throughout the code.
2023-11-24just: Fix wrong access to moved structPaul Cristian Sarbu
The traverser instantiation consumes the arguments.build struct, therefore one must not access that struct later in the code.
2023-11-22LocalAction: Fix staging of empty treesOliver Reiche
2023-11-22Implement blob splitting protocol on just client sideSascha Roloff
2023-11-22Implement blob splitting protocol on just server sideSascha Roloff