summaryrefslogtreecommitdiff
path: root/src/buildtool/build_engine/target_map
AgeCommit message (Collapse)Author
2022-10-05AnalysedTarget: Make shared pointer's content immutableOliver Reiche
... while technically not required, it makes it harder to run into nasty errors.
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-13Fix build with gcc/g++Oliver Reiche
2022-09-13Fix wrongful conversions of object to arraysOliver Reiche
... by dropping curl-brace-initializers for nlohmann::json, which calls the intializer-list constructor converting any JSON type to array.
2022-09-12Removed prefix from execution backend hash to fix target cache directory nameSascha Roloff
2022-09-12Adapted TargetCache to download known artifacts from remote CAS to local CASSascha Roloff
2022-08-31Also track the the dependencies on configured targetsKlaus Aehlig
... to be able to report the respective graph for later analysis by other tools.
2022-08-23Track tree references that have to be expandedKlaus Aehlig
... as this is relevant for performance of analysis. We log the total numer of trees at performance level and the individual directories at debug level, if requested.
2022-08-19Add glob reference to source filesKlaus Aehlig
Like file or tree references, globs are restricted to the current module; in fact, by the way we evaluate them, even to the top-level directory of that module: a glob is a target having as artifacts and runfiles those entries of the top-level directory of the specified module that match the given pattern.
2022-08-05Target map makes use of known trees and avoids directory traversalSascha Roloff
2022-08-05Modified artifact digest to provide wire digest on demandSascha Roloff
2022-07-05ResultMapTargetMap: support looking up an action by identifierKlaus Aehlig
2022-07-04Improve move semantics with smart pointersOliver Reiche
2022-06-28Generic: add support for out_dirsAlberto Sartori
Before this patch, the built-in "generic" type allowed for just output files, listed in the field "outs". Now, the type also supports output directories, listed in the "out_dirs" field. The output directories are created before the command is executed.
2022-06-28sort and deduplicate outputs before creating the actionAlberto Sartori
2022-06-28improve error message when outpus are not disjointAlberto Sartori
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-13Fix target cache key: Use repository-local target nameOliver Reiche
2022-06-13ExportRule: Compute target cache key use target cacheOliver Reiche
2022-06-13ResultMap: Keep track of targets to cacheOliver Reiche
2022-06-13TargetCache: Initial implementationOliver Reiche
2022-06-09Disallow upwards-facing inputs in actions and tree constructorsKlaus Aehlig
2022-06-09fix typosAlberto Sartori
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-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.
2022-05-09Move path normalisation to a separate libraryKlaus Aehlig
... as it will be required outside the target map.
2022-05-04install: normalize dir pathsOliver Reiche
2022-04-25Progress reporting: include origins of running actionsKlaus Aehlig
For a user, an important information is to know which actions are currently running and, more importantly, the target that caused them. To do so, we need a bit of infrastructure. - We have to keep track of begin and end of running actions, as well as the order in which they were started. That has to happen efficiently and in a thread-safe way. - We have to compute and keep the origin map for actions, even if we don't serialize the action graph.
2022-04-19Conflict checking: use normalized pathsKlaus Aehlig
2022-04-07implement new built-in target TREEAlberto Sartori
2022-03-29refactor EntityNameAlberto Sartori
EntityName now clearly expresses its double identity: - NamedTarget - AnonymousTarget The usage of std::variant<NamedTarget,AnonymousTarget> guarantees that EntityName, internally, is not a mix of the two - like could happen before this patch. NamedTarget features an enum ReferenceType to express the type of the target, namely, "normal target" or an "explicit file reference". Thanks to this refactoring, the introduction of new targets type should be easier, since the design is more modular. NamedTarget
2022-03-23Apply changes suggested by clang-tidy 11Oliver Reiche
2022-03-23Apply changes suggested by clang-format 11Oliver Reiche
2022-03-16Format: Apply compact JSON formattingOliver Reiche
2022-03-01Add a message after consolidating the analysis resultKlaus Aehlig
On the one hand, this message is after an important step in the build process, to giving the user a better insight into what is going on. On the other hand, the size of the discovered graph is useful information, e.g., when comparing with the number of actions actually traversed when building the requested artifacts.
2022-03-01Pass actions and trees in analysis result as shared pointerKlaus Aehlig
... to avoid unnecessary copying and moving of larger objects.
2022-02-25Format: Apply alphabetical include orderOliver Reiche
2022-02-22Initial self-hosting commitKlaus Aehlig
This is the initial version of our tool that is able to build itself. In can be bootstrapped by ./bin/bootstrap.py Co-authored-by: Oliver Reiche <oliver.reiche@huawei.com> Co-authored-by: Victor Moreno <victor.moreno1@huawei.com>