summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
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.
2022-05-09Move path normalisation to a separate libraryKlaus Aehlig
... as it will be required outside the target map.
2022-05-09log to Error level when remote is unreachableAlberto Sartori
2022-05-04just: add --compatible also to "just analyse"Klaus Aehlig
One of the uses of "just analyse" is to obtain the action graph which also contains identifiers depending on the way artifacts are hashed, e.g., blobs or known artifacts. Therefore, make just analyse support compatible mode as well.
2022-05-04install: normalize dir pathsOliver Reiche
2022-04-27Remove libggit2 as host bootstrap dependencyKlaus Aehlig
Since in default (bundled) bootstrap, we bring our own version of libgit2, also use that for the initial bootstrap step.
2022-04-27use kebab-case for all cmd line argsAlberto Sartori
2022-04-27Allow for better error reporting in case of a malformed targetAlberto Sartori
The expected size of the list that defines the target was not checked consistently. So, in case a target expected a list with 4 elements, but got just 3, a segfault would happen. This patch resolves this issue.
2022-04-27dump action command on DebugLevelAlberto Sartori
2022-04-26Rebuild: report full command lineKlaus Aehlig
With the reformating of the analyse result we accepted longer output lines anyway. Allowing them in the report of a detected flaky action immediately gets the log and console output more useful, as the source can often be identified without looking at the full definition of the action in the action graph.
2022-04-26doc strings: support documentation of the resultKlaus Aehlig
A complete documentation of a rule should not only include how to use it (i.e., which fields are present and what is their meaning) but also what the result is. This is particularly true, as the result is structured and can contain some complex logic or conventions in the provided information.
2022-04-26bug fix: FileRoot::DirectoryEntries cannot hold std::monostate anymoreAlberto Sartori
DirectoryEntries must be constructed explicitly either via a GitTree* or an unordered_map<string,ObjectType>. So, the case of an empty directory, is represented by an empty map. Before this patch, empty directories were represented by std::monostate and missing checks on that led to a seg-fault.
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-25result description: always show full informationKlaus Aehlig
So far, `just describe` reported only the list of keys for runfiles and artifacts while reporting full information for the provided data, including the artifacts contained therein. Change this to always reporting the full information, as for runfiles and artifacts the detailed information is valuable as well.
2022-04-25json utils: support indentation up to a given depthKlaus Aehlig
2022-04-25expression: add "msg" argument to "to_subdir"Klaus Aehlig
... allowing to provide additional information in case of conflict during flat staging.
2022-04-22Fix remote-client names in loggingKlaus Aehlig
The fact that we happen to use the same protocol as bazel does, does not mean we are bazel. After all, the remote-build-execution protocol is meant as a generic protocol. Hence change the names in logs to avoid confusions.
2022-04-21add compatibility with original remote build protocolAlberto Sartori
2022-04-20Remove unused "+" on expressionsKlaus Aehlig
To concatenate lists (the only ability the "+" operator had), use "++".
2022-04-19Conflict checking: use normalized pathsKlaus Aehlig
2022-04-14just: Add support for building static binaryOliver Reiche
2022-04-14add u+w permission when installing a fileAlberto Sartori
... to allow for overwriting
2022-04-07expression evaluation: clean up truth valuesKlaus Aehlig
For historic reasons, we considerd special strings as false values. Drop that behavior in favor of a clean LISP-like semantics: everything is true that is not empty.
2022-04-07main: warn if result contains failed artifactsKlaus Aehlig
2022-04-07implement new built-in target TREEAlberto Sartori
2022-04-07refactor FileRoot::DirectoryEntriesAlberto Sartori
... to foster the implementation of the built-in target "TREE"
2022-04-07FileSystemManager::ReadDirectory does just one system callAlberto Sartori
2022-04-05Rule map: "import" is no a reserved key word of a ruleKlaus Aehlig
... so remove it from the list of expected keys.
2022-04-04Add a basic progress reporterKlaus Aehlig
Reporting, with exponentially backing off intervals, the number of cache hits found so far, the number of actions that have ben run, and the number of actions currently under consideration.
2022-04-04statistics: also count completed uncached actionsKlaus Aehlig
2022-04-04Graph traverser: support progress observingKlaus Aehlig