summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2022-06-22RemoteExecutionClient: Check and log execution statusOliver Reiche
2022-06-20Correctly serialize and deserialize results and nodesKlaus Aehlig
So far, our serialisation and deserialisation assumed that no node or result values are included contained in the given value. However, for nodes (and hence ressults, given our implementation of value nodes) there is a legitimate use case. An abstract interface specification, given by provided nodes, can well be a meaningful target to be exported. Implement serialisation for those values. Also, avoid tree-unfolding the value when deserialising the value by appropriately caching the corresponding expression pointers. Moreover, avoid the quadratic overhead through linearly searching through the list of artifacts.
2022-06-20Repository representation: also use string as name in bindingsKlaus Aehlig
In this way, we keep the repsitory description more close to a normal multi-repository configuration. The only difference remaining is the absence of repository locations for git-tree roots.
2022-06-20analysed targets: artifacts can also be contained in nodes and resultsKlaus Aehlig
2022-06-20Disallow comparison of namesKlaus Aehlig
In our semantics, it was always intended that names are completely opaque and only used by passing them to functions providing information about a target. However, we never enforced that they not be compared for equality, even though we always had this in mind, and the computation of the target-level cache key was designed with this semantics in mind. Enforce this restriction now.
2022-06-20expression: cache the cacheability propertyKlaus Aehlig
2022-06-20Crypto: Refactor hash computationOliver Reiche
... by renaming HashGenerator to (incremental) Hasher and dropping support for Git/MD5 hashes. The Hasher does not expose the actual hash implementation.
2022-06-20Crypto: Add and use set of globally used hash functionsOliver Reiche
2022-06-20Executor: Fix printing artifact idsOliver Reiche
2022-06-14fix handling of workspace root for the main repositoryAlberto Sartori
commit fd58a5eb429d4a9db51f73c06137f1a4ebe41c08 introduced a bug. If the main workspace root is a git repo, it will be overwritten by a std::optional<std::filesystem::path> storing std::nullopt. This patch fixes this wrong behaviour.
2022-06-13Fix target cache key: Use repository-local target nameOliver Reiche
2022-06-13Main: Print statistics for export targetsOliver Reiche
2022-06-13ExportRule: Compute target cache key use target cacheOliver Reiche
2022-06-13Statistics: Add counters for export targetsOliver Reiche
2022-06-13Logging: Extend logger by level for PerformanceOliver Reiche
2022-06-13Main: Collect cache artifacts and Write target cache entriesOliver Reiche
2022-06-13ResultMap: Keep track of targets to cacheOliver Reiche
2022-06-13AnalysedTarget: Add getter to obtain non-known artifactsOliver Reiche
2022-06-13TargetCache: Initial implementationOliver Reiche
2022-06-13TargetResult: Add support for JSON (de)serializationOliver Reiche
2022-06-13GraphTraverser: Add support for extra artifactsOliver Reiche
2022-06-13ArtifactDescription: Add ref getter for id and C++ hashOliver Reiche
2022-06-13RemoteExecutionConfig: Keep global platform propertiesOliver Reiche
... and cache endpoint address for rebuilding.
2022-06-13RepoConfig: Compute repository keyOliver Reiche
2022-06-13LocalCAS: Add singleton patternOliver Reiche
2022-06-13multithreading: Add AtomicValue to atomically set/get valueOliver Reiche
... and use it to replace the commonly used pattern in Expression, LinkedMap, and GitTreeEntry. Furthermore, remove assignment operators for Expression and LinkedMap as those are considered to be used in an immutable manner anyway.
2022-06-13utils: Add DFAMinimizer for computing bisimulationsOliver Reiche
2022-06-13HashGenerator: Add global function for obtaining digestOliver Reiche
2022-06-13FileRoot: support content descriptionKlaus Aehlig
For some file roots, in particular git trees, we can give a complete selfcontained description of the content without accessing any external resources. For those, add a method to return such a complete description that will be used to compute the keys of content-defined repositories.
2022-06-13Include raw identifier to GitTreeKlaus Aehlig
In this way, we have it available when needed, e.g., to get identifers for file roots or to get whole trees as source artifacts.
2022-06-13utils: convert hex to stringKlaus Aehlig
2022-06-13CLI: Catch and report non-CLI11 related errorsOliver Reiche
... and ensure that the default logging is set up before.
2022-06-09Disallow upwards-facing inputs in actions and tree constructorsKlaus Aehlig
2022-06-09Change wording of -D to emphasize that it is an overlayKlaus Aehlig
While there, also document the option (in more detail) in the man page.
2022-06-09improve error messageAlberto Sartori
2022-06-09reduce code duplicationAlberto Sartori
2022-06-09pass by const ref big objectsAlberto Sartori
2022-06-09fix order of evaluations for the workspace root of the main repositoryAlberto Sartori
the command line --workspace-root now overwrites what is eventually read from the multi-repository configuration file for the main repository
2022-06-09remove misleading commentAlberto Sartori
2022-06-09fix typosAlberto Sartori
2022-06-02CLI: New option -D/--defines for in-line configurationOliver Reiche
2022-06-02Split off the expression_ptr interfaceKlaus Aehlig
So that we can, also for header-only libraries, always declare the direct dependencies without creating a cyclic dependency between entity_name_data and expressions.
2022-06-02Add missing direct dependenciesKlaus Aehlig
2022-05-31"enumerate" expression: add padding to 10 charactersKlaus Aehlig
2022-05-30Built-in expressions: add enumerateKlaus Aehlig
Add a function transforming a list into a map. In this way, artifacts collected positionally in a list can easily be realized as a stage used for input to an action or output of a target.
2022-05-12Ensure we also correctly handle tree conflicts between filesKlaus Aehlig
Not only trees, but also regular files can disallow paths reaching into them. If we have a file at a/b then another file at a/b/c is a staging conflict as well. Make our tool recognize this.
2022-05-12Ensure consistent path normalisationKlaus Aehlig
In particular, ensure that the empty path and "." have the same normal form.
2022-05-09CLI: Fix use of multiple RE property optionsOliver Reiche
... which were all ignored except the last. CLI11 usually only calls the option function once all options have been parsed. This change ensures that the option function is called everytime the option is parsed.
2022-05-09Built-in "to_subdir": interpret input keys as pathKlaus Aehlig
... and detect conflicts araising this way. Also normalize the paths after staging them to the specified subdir.
2022-05-09Verify conflict-freeness in inputs, artifacts, and runfilesKlaus Aehlig
Our maps serve two purposes: on the one hand, they can be a generic key-value association with arbitrary strings as keys. On the other hand, we use them to describe arrangements of files (inputs to actions, artifacts or runfiles generated). In this function, certain keys refer to the same path and hence have to be identifed. Therefore, at places where the keys clearly have to be paths in the file system, implicitly normalize them and check for conflicts.