summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-03-04Add rule ["patch", "file"]Klaus Aehlig
... to patch a single file, logically in place.
2022-03-04executor: fix json reporting of commandsKlaus Aehlig
When reporting a command that failed, or produced some output, report it as a list of strings, not as a singleton-list consisting of a list of strings. While there, improve wording of message; in particular, avoid confussion between a command that errored and one that produced outout on stderr.
2022-03-04rule_map: improve error message by proper quotingKlaus Aehlig
Our rule names can be arbitrary strings, so improve readability of error message by properly quoting the rule name; while there, also properly quote the module name, resulting in better readability if the module is "".
2022-03-03Externals: Set `-O2` and C standard `gnu17`Oliver Reiche
2022-03-03External gRPC: Disable warningsOliver Reiche
2022-03-03External libgit2: Disable warningsOliver Reiche
2022-03-03External re2: Disable warningsOliver Reiche
2022-03-03External absl: Disable warningsOliver Reiche
2022-03-03CC rules: Disable warnings for protobufOliver Reiche
2022-03-03CC rules: Add support for local cflagsOliver Reiche
2022-03-03Add end-to-end test executing compiled binariesKlaus Aehlig
Add a test that compiles many C binaries and runs them. The main purpose of the test is to detect any race conditions in this scenario.
2022-03-03Add end-to-end test using built shell scripts to generate filesKlaus Aehlig
2022-03-02Extend shell-test rules to optionally detect flakynessKlaus Aehlig
2022-03-02expression language: add a range functionKlaus Aehlig
Given a number or number representation, return a list of that length consisting of representations of the lower numbers. In this way, repeated non-pure actions can be generated (e.g., repetitions of a test to detect flakyness).
2022-03-02tool: at the earliest possible moment confirm the targetKlaus Aehlig
In this way the user gets an early feedback about the target that was requested and can check if that was the target they had in mind, especially in the case of fall back to the alphabetically first one (according to native byte order). As a nice side effect, we have a timestap on when the analysis started.
2022-03-01CC test: Add optional test launcher `CC_TEST_LAUNCHER`Oliver Reiche
2022-03-01Test TaskSystem: Fix read after freeOliver 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-03-01main: add a log message after finishing analysisKlaus Aehlig
In this way, the user has a slightly better insight into the stage the tool currently works on. While there, also move the first report of taintedness to the earliest possible moment.
2022-03-01flush after logging to stderrKlaus Aehlig
2022-03-01Link build_engine tests to overall test targetKlaus Aehlig
2022-02-28action-equality test: improve conditionsKlaus Aehlig
Use the log functionality instead of relying on stderr being precisely the log. Also check for the number of processed actions instead of any number of actions that might be reported in the log. While there, redirect stderr to stdout to have a unified cronological log.
2022-02-28Tests: Avoid std::tmpnam as it is considered unsafeOliver Reiche
... and therefore produces linker warnings.
2022-02-28Executor: Log failing action's commandOliver Reiche
2022-02-28Format: Apply clang-format suggestions to testsOliver Reiche
2022-02-28Test GraphTraverser: Use update-alternatives' c++ by defaultOliver Reiche
2022-02-28Test filesystem: Check exact permissionsOliver Reiche
... instead of relying on the filesystem preventing us from writing to a read-only file, which wont happen if the user is root.
2022-02-28External libgit2: Fix header declarationOliver Reiche
2022-02-28External protobuf: Add missing zlib dependencyOliver Reiche
2022-02-28CLI: Add option to set action timeoutOliver Reiche
2022-02-25Add end-to-end test verifying repository-name resolvingKlaus Aehlig
Repositories are indentified by free names that are bound, in a per-repository way, in a global configuration. Add a test verifying this: the name "other" refers to differnt repositories in the repositories "A" and "B" and chains of depending on "other" can be followed.
2022-02-25Add end-to-end test about target namingKlaus Aehlig
... in particular verifying that relative references cannot go outside a repository and explict file ferences cannot go upwards.
2022-02-25Format: Apply alphabetical include orderOliver Reiche
2022-02-25External bazel_remote_api: Add target for headers of CC bindingsOliver Reiche
2022-02-25External google_apis: Add target for headers of CC bindingsOliver Reiche
... and remove unused CC proto library target.
2022-02-25rules: Add CC/proto/IDE headersOliver Reiche
... to manually request the generation of headers for CC proto bindings. This is useful for IDEs and needed as implicitly generating those bindings via the `proto` field of CC libraries does not expose the produced headers.
2022-02-23Add a first end-to-end test for action equalityKlaus Aehlig
This test also demonstrates the notion of equality used in our action graph: actions are considered equal, if they are defined in the same way (regardless of where they are defined); when looking up actions in cache, however, the inputs are considered extensionally. The test also verifies that if one dumps the action graph, the origins of an action (as the same action can be defined in many places) are reported correctly.
2022-02-23Add shell/test ruleKlaus Aehlig
... allowing to run simple tests given by a shell script.
2022-02-23common rule expression: improve error reportingKlaus Aehlig
... by asserting that "stage_singleton_field" return a non-empty map and providing a meaningful message in the "disjoint_map_union" contained in it.
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>