summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-04-10git_repo: Improve error message for CreateTreePaul Cristian Sarbu
2024-04-10tests with infrastructure: keep remote build rootKlaus Aehlig
Often outputs are only referenced as blobs but not downloaded to the working directory of the test. This can make it hard to understand errors, as the respective artifacts are not available for inspection. This is even more important in case of tests with a provided serve endpoint as then even the error message of a failed serve build is only referenced as blob. Solve this by keeping the local build root of the remote-execution service using the fact that all objects are transferred between the serve endpoint and the client go through the remote-execution endpoint.
2024-04-10bugfix: cli: remote-execution-property: allow for accumulating multiple pairs.Alberto Sartori
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.
2024-04-08Use properly included standard library types by defaultPaul Cristian Sarbu
2024-04-08Consistently guard all POSIX C includesPaul Cristian Sarbu
2024-04-08test: Add missing includes and fix depsPaul Cristian Sarbu
2024-04-08Test ["utils/archive", "archive_usage"]: fix assumptions on pathKlaus Aehlig
This test, among others, verifies the archive functionality by creating an archive with our library, extractting it with the system command-line tools, and comparing the result. In order to not depend on the host system having installed tools for all possible compression algorithms, it tacitly drops the extraction test if the respective tool could not be found under /usr/bin. This, however, assumes that /usr/bin is in path; ensure this, by extending PATH accordingly.
2024-04-08doc: Remove logo frame for better visibilityOliver Reiche
... and set quadratic bounding box.
2024-04-08doc: Add Justbuild logoOliver Reiche
2024-04-05Add test verifying origin reporting in case of conflictsKlaus Aehlig
2024-04-05User-defined rules: annotate revelant objects relevant to evaluation errors.Klaus Aehlig
2024-04-05Evaluator: Add infrastructure to annotate relevant objectsKlaus Aehlig
... which are, in particular, artifacts involved in staging conflicts. While there, also make disjoint union honor the expression log limit.
2024-04-05built-in rules: describe staging conflict in more detailKlaus Aehlig
Mentioning in particular the involved artifacts as well as the direct dependencies that brought them in. Here, we are in a simple situation as all built-in rules that check conflicts only use artifacts and runfiles of their dependencies, but not the provided data. Also, the built-in rules that check staging conflicts do not do configuration transitions, hence it is enough to show the target name of the dependencies containing the artifact if for the built-in target we show the configuration.
2024-04-05Test ["end-to-end/built-in-rules","export_counting"]: avoid unnecessary IO ↵Klaus Aehlig
operations This test creates a "file" repository with pragma "to_git". Move to a subdirectory to avoid including all the tools in that created root.
2024-04-05bug fix in expresion, Union: propagate the disjointness propertyKlaus Aehlig
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.
2024-04-05grpc: hide dependency on google_rpc_statusKlaus Aehlig
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.
2024-04-05end-to-end tests: fix tool set upKlaus Aehlig
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.
2024-04-02LargeBlobs: Use LocalCAS methods to implement split-splice logic of CASUtils.Maksim Denisov
2024-04-02LargeBlobs: Splice large objects from external sources.Maksim Denisov
For splicing of large objects from external sources additional checks are performed: * The digest of the spliced result must be equal to the expected digest; * The parts of a spliced tree must be in the storage. Tested: * Regular splicing of large objects; * If the result is unexpected, splicing fails; * If some parts of a tree are missing, splicing fails.
2024-04-02ObjectCAS: Move the method for calculating file digests to the public space.Maksim Denisov
This is needed for LocalCAS's splice routines.
2024-04-02LargeBlobs: Uplink large objects.Maksim Denisov
* Uplink parts of the large entry before entry itself; * Uplink large entries in LargeObjectCAS::GetEntryPath to not split things two times; * Promote spliced tree during uplinking of a large tree entry to properly promote parts of the tree; * Uplink large entries in LocalUplink{Blob, Tree} to support proper uplinking in Action Cache and Target Cache; Tested: * Uplink large blobs and trees; * Uplink a large object that depends on other large objects.
2024-04-02LargeBlobs: Splice large objects implicitly.Maksim Denisov
Implicitly reconstruct objects during regular uplinking of Blobs/Trees.
2024-04-02LargeBlobs: Split large objects.Maksim Denisov
* Add LargeObjectCAS fields for files and trees to LocalCAS; * Add logic for splitting objects located in the main storage. Tested: Splitting of large, small and empty objects.
2024-04-02LargeObjectCAS: Implement auxiliary class for storing error information.Maksim Denisov
2024-04-02LargeObjectUtils: Randomize large files and directories for testing purposesMaksim Denisov
2024-04-02LargeObjectCAS: Store large objects.Maksim Denisov
Every large object is keyed by the hash of the result and contains hashes of the parts from which the result can be reconstructed.
2024-04-02Move file chunker to storage.Maksim Denisov
2024-04-02just-serve-config(5): add an example of a configurationKlaus Aehlig
2024-04-02just-mrrc(5): update exampleKlaus Aehlig
With "remote-execution properties" a primary property, there is no need anymore to repeat the property as part of the "just args".
2024-04-02Revert "third-party: Update lzma to v5.6.1"Klaus Aehlig
This reverts commit 0db6f248a04f5a23102b4208c1f28b3633c6ef8a. We have our own build description for lzma, hence we are likely not affected by CVE-2024-3094. Nevertheless, we should not encourage the use or distribution of an archive that contains a known backdoor. Reverting this commit also points us to a mirror that is still fetchable.
2024-04-02Clean up repo structure: compression is only a dependency of libarchiveKlaus Aehlig
... and not directly used by our tool.
2024-03-28CAS-import design: update implementation stateKlaus Aehlig
2024-03-28Add a test verifying the reproducibility of the archiveKlaus Aehlig
2024-03-28just install-cas: add option --archiveKlaus Aehlig
Trees are first-class objects for justbuild. To allow interoperation with other tools, it is necessary to provide those objects in a standard format; for directories, those are archives. Hence procive a corresponding option.
2024-03-28Add library to generate an archive from a local objectKlaus Aehlig
2024-03-28End-to-end tests: be independent of local rc filesKlaus Aehlig
2024-03-26Add missing system includesPaul Cristian Sarbu
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>
2024-03-26third-party: Update libcurl to v8.6.0Paul Cristian Sarbu
Now the curl URL API always fails to parse the empty string, so our test was changed to reflect this.
2024-03-26third-party: Update libarchive to v3.7.2Paul Cristian Sarbu
2024-03-26third-party: Update catch2 to v3.5.3Paul Cristian Sarbu
2024-03-26third-party: Update libgit2 to v1.7.2Paul Cristian Sarbu
2024-03-26third-party: Update lzma to v5.6.1Paul Cristian Sarbu
Also updated the remote fetch repository, as the previous upstream repository has since been archived.
2024-03-26third-party: Update fmt to v10.2.1Paul Cristian Sarbu
Also updates the test-mixed-bootstrap script which must use the explicit library version.
2024-03-26third-party: Update json to v3.11.3Paul Cristian Sarbu
2024-03-26third-party: Update cli11 to v2.4.1Paul Cristian Sarbu
2024-03-26Expression language: add float operations "*" and "+"Klaus Aehlig
Numerical values are used at some places in justbuild: as value for timeout scaling, as well as by the "range" expression that is used, e.g., to define repreated test runs. Therefore, improve support for numerical values by adding basic operations.
2024-03-22Absent target: deduplicate serve calls asking for flexible variablesKlaus Aehlig
For an absent export target, the first step of analysis is to ask serve for the flexible variables. The answer to this request is, however, independent of the configuration for this target. So we can avoid calls by caching the answer in an additional map.
2024-03-22Add a test verifying that absent export targets are deduplicated correctlyKlaus Aehlig
2024-03-22Avoid unnecessary calls to serve for export targetsKlaus Aehlig
For export targets, we know ahead of time the effective configuration; so, if the current configuration is not the effective anyway, we can simply analyse the effective configuration and take that result. In this way, we can avoid calls to serve if a target is analysed in two configurations that coincide on the flexible variables.
2024-03-22Add a test verifying export targets are counted only onceKlaus Aehlig