summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-10-19Add generation directory as part of the just cache root.Sascha Roloff
This change is introduced to be prepared for future changes such as garbage collection. It is an incompatible change compared to earlier just versions since it modifies the local path to the just cache directory, where among others the CASes, action cache, target-level cache are located.
2022-10-18TargetResult: Serialise inner TargetResults flatOliver Reiche
Before this change, TargetResults that appear inside of other TargetResults (typically via value nodes) were serialised via the top-level serialisation function for TargetResults. While technically correct, it is rather inefficient as identical expressions from outer and inner TargetResults are not properly deduplicated and a deeply nested data structure is maintained. With this change, expressions of inner TargetResults are serialised in the context of outer TargetResults, resulting in a flat list of all transitively contained expressions with proper deduplication applied. As this serialisation of TargetResult is used in target-level cache entries, the new format is a breaking change to existing entries. Therefore, after switching to the new serialisation format introduced by this commit, users are required to clean their target-level cache. This also reverts commit d22adef666d704680ee74b35a46d530f6b6d5f15, "Recursively scan provided results for known artifacts".
2022-10-14Recursively scan provided results for known artifactsSascha Roloff
This recursive scan of the provided results map of a target-cache entry for known artifacts is required since the serialization format of target results currently does not produce a single flat artifact list, but keeps the result entry structure with a nested list of artifacts. Once the serialization format of target results is changed in a way that a flat list of artifacts is produced, this recursive scan is not required anymore and can be reverted.
2022-10-14Remove default value of ArtifactDigest::Create template parameterSascha Roloff
This enforces the explicit specification, which object type, either file or tree, should be used to create an artifact digest. This also avoids subtile errors at locations as in the previous commit, where files as well as trees are supposed to be handled, but digest creation mistakenly defaults to file object type.
2022-10-14Fix missing tree handling in BazelCasClient::ReadSingleBlob functionSascha Roloff
The initial assumption before introducing the native remote execution protocol was that only blobs were transmitted over the wire and put in a blob store. With the native remote execution protocol, also trees can be transmitted over the wire and they are put in a different store than blobs. Different hashing functions are used for blobs and trees and need to be calculated accordingly for data to be put in the correct store. This distinction of blobs and trees is now implemented. Additionally, a warning is added that checks equality between the requested digest and the digest computed by the received content. This check makes sense to detect, e.g., corrupted messages, unexpected transmission termination, or remote server failure.
2022-10-13bootstrap: by default, bootstrap in parallelKlaus Aehlig
Only if the environment variable DEBUG is set, fall back to sequentially executing the graph generated by the bootstrap version of just.
2022-10-13Add a parallel version of the bootstrap graph traverserOliver Reicher
2022-10-12Add copyright and license notice to all source and header filesKlaus Aehlig
Signed-off-by: Goetz Brasche <goetz.brasche@huawei.com>
2022-10-11Add tree upload end-to-end testSascha Roloff
2022-10-11Refactor ReadTreeInfos function names and add documentationSascha Roloff
2022-10-11Scan provides map of target-cache entries for known artifactsSascha Roloff
2022-10-11FileSystemMgr: Suppress unsupported object type warningOliver Reiche
... if the object does not even exist. In that case, a trace message is produced and the caller is responsible for reporting errors.
2022-10-11configure builtin: Fix segfault on evaluation errorOliver Reiche
2022-10-10libgit2: Use new rule ["CC/auto", "config"]Oliver Reiche
2022-10-10rules: New rule for config header generationOliver Reiche
2022-10-10rules: Use new 'env' expressionOliver Reiche
2022-10-10rules: Remove CC/configure ruleOliver Reiche
2022-10-10Replace CC/configure rule by builtin configureOliver Reiche
2022-10-07just: Use configure built-in to configure libgit2Oliver Reiche
2022-10-07libgit2: Configure entire library in high-level targetOliver Reiche
2022-10-07Bump suffix after fixing upload of known treesKlaus Aehlig
2022-10-07Fix upload of known source treesOliver Reiche
When a tree is taken from a git root, it is not necessarily known on the remote site. So, as any missing artifact it has to be uploaded, recursively uploading the parts to keep the tree invariant. The function RetrieveToCas was doing the correct recursiv pattern, however inspecting trees incorrectly using the function ReadTreeInfos; the latter function, however, was obtaining all the leafs of the tree as is needed for a compatible action-input description. Add and use a function that reads the direct contents of a tree.
2022-10-07LocalTreeMap: Drop the use of the map entirelyOliver Reiche
... as for remote execution, the map entries are only used for the `install` subcommand. For local execution, much less tree objects are read from CAS when using this map. However, the performance benefit is barely measurable and therefore we rather remove this map entirely to reduce complexity.
2022-10-07LocalTreeMap: Prevent tree objects from being storedOliver Reiche
... to align with the original idea of caching a flat list of blob objects, without the need to recursively traverse any trees. Consequently, we cannot create any map entry in places where we do not have all sub-tree entries at hand (e.g., LocalAPI, BazelAPI, BazelResponse).
2022-10-07BazelNetwork: Fix use of DirectoryMap in native modeOliver Reiche
... which is not using `Directory` messages nor does it support the `GetTree()` rpc.
2022-10-07Tutorial: add section on `just rebuild`Klaus Aehlig
2022-10-07Increase log level for grpc-related failures to warningKlaus Aehlig
... so that any infra structure problem on the remote execution is reported by default.
2022-10-07Improve error message on filure to execute a remote actionKlaus Aehlig
... to emphasize that this is the extensional action identifier, not the intensional one.
2022-10-05Doc: Describe usage of 'configure' built-inOliver Reiche
2022-10-05Test: Add tests for 'configure' built-inOliver Reiche
2022-10-05built-ins: Add new built-in rule 'configure'Oliver Reiche
2022-10-05Doc: Describe usage of 'env' expressionOliver Reiche
2022-10-05Test: Add tests for 'env' expressionOliver Reiche
2022-10-05Expr: Add 'env' expressionOliver Reiche
2022-10-05Bootstrap: Support ARM architecturesOliver Reiche
2022-10-05grpc: Simplify target definitionOliver Reiche
2022-10-05LocalAction: Improve error message for stagingOliver Reiche
2022-10-05AnalysedTarget: Make shared pointer's content immutableOliver Reiche
... while technically not required, it makes it harder to run into nasty errors.
2022-10-05just-mr.py: for the fetch subcommand acutally fetchKlaus Aehlig
A checkout does not necessarily fetch an archive: if we already have the git tree for that archive, this is enough to create a build root. For the fetch command, however, we need to have the actual archive as we have to copy it to the distdir. Of course, we only create the git tree once we got hold of the archive. However, with the introduction of CAS purging, the invariant that we have the archive whenever we can create a build root will no longer be true. This is acutally a feature as the git trees can be stored more compactly if we accumulate different release archives of the same upstream project. However, it also means that we explicitly have to fetch the archive in the fetch subcommand. Do this.
2022-10-04just: Fix version subcommand; Fix just section-1 man pagePaul Cristian Sarbu
The version subcommand now has no expected command line options, as expected. Also the version subcommand was missing from the man page synopsis.
2022-09-21grpc: Fix missing propagation of COMPILER_FAMILYOliver Reiche
2022-09-16Also log dumping of the action graphKlaus Aehlig
... at INFO level, in the same way as all other dumping of analysis results happen.
2022-09-16Toolchain: Disable ABI warning for 32bit ARM GCCOliver Reiche
2022-09-16externals: Selectively disable remaining warningsOliver Reiche
2022-09-16protobuf: Precisely replicate original flagsOliver Reiche
2022-09-16grpc: Precisely replicate original flagsOliver Reiche
2022-09-16abseil: Precisely replicate original flagsOliver Reiche
2022-09-16libgit2: Precisely replicate original flagsOliver Reiche
2022-09-14rules: Fix ar binary not taken from defaultsOliver Reiche
2022-09-14Defaults: Fix setting TARGET_ARCH from ARCH if not setOliver Reiche