summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-05-02import git2: close header directory as a treeKlaus Aehlig
We assume that the git2 directory in the include-file path is owned by git2 and no other targets put files there. Document this by closing it up as a tree. (As a side effect we pass around fewer identifiers and reported runfiles list get easier to read.) Note that for the tree we can't use the TREE constructor, as, besides the source files, there is also a generated file contained in that directory.
2022-05-02Expression ['', 'field_runfiles']: ensure disjointnessKlaus Aehlig
... by using "disjoint_map_union" instead of "map_union" which has a latest-wins semantics and does not have a "msg" arguement.
2022-04-29add simple bash completion for targetsAlberto Sartori
2022-04-29rules: Perform disjoint map union in field_* expressionsOliver Reiche
... and replace all instances where the field_*_list variant of those expressions is used solely for the purpose of performing the disjoint union manually.
2022-04-28rules: Consistently use new provider expressionsOliver Reiche
2022-04-28rules: Add "link-args-deps" expressionOliver Reiche
... for collecting link-args from dependencies. By consistently using this expression, we fix an issue with C++ binary and test, which both did not collect the linker arguments from their proto-deps.
2022-04-28rules: Honor transition variable in *-deps expressionsOliver Reiche
2022-04-28rules: Add "field_map_provider" and "field_list_provider"Oliver Reiche
... to query and merge map/list entries from the provides map of the given target_fields' targets.
2022-04-28rules: Fix field_artifacts/field_runfiles expressions' docsOliver Reiche
2022-04-28improve bash completionAlberto Sartori
before this patch the completion from just install to install-cas did not work. this patch adds autocompletion to directories and files as well.
2022-04-27repos.json: add stronger checksums for files obtained via the networkKlaus Aehlig
2022-04-27just-mr: support additional hashes for fetched filesKlaus Aehlig
While git's (sha1-based) blob identifier is good for daily use and strong enough to avoid accidental hash collisions (after all, we're using git to version our sources), sha1 is no longer considered safe enough to verify files downloaded through an unsecure channel. Therefore, support additional checksum verification when obtaining a file from the network.
2022-04-27Remove ssl from bootstrap dependencyKlaus Aehlig
As our default (bundled) bootstrap brings a well defined version of ssl, use this also in the initial bootstrap step.
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-27bootstrap.py: support header dirs directly stagedKlaus Aehlig
Some libraries, e.g., libgit2, bring an include directory that is expected to occur directly in the search path (containing a git2 directory and a git2.h file). Support this use case by allowing "." as include_name in the bootstrap hints.
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-26rules: Add field_artifacts_list and field_runfiles_listOliver Reiche
... which are more efficient if the caller wants to perform the union manually (because disjointness should be enforced or additional maps should be added to the union, etc.). As a positive side effect, code reuse is slightly increased by consistently calling these newly introduced expressions for obtaining the artifacts/runfiles from all targets of a target field.
2022-04-26rules: More flexible compile-deps and link-depsOliver Reiche
... which can now be parameterized which target_fields to query the dependencies from.
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-26Improve documenatation of our internal rulesKlaus Aehlig
In particular, document the result for the most important rules.
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-26test {Files,Directories}Iterator for an empty dirAlberto Sartori
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-25upgrade from optparse to argparseAlberto Sartori
2022-04-22simple bash completionAlberto Sartori
2022-04-22rules: move compiler/flags computation into expressionsKlaus Aehlig
On the one hand, this keeps the rules files more readable. On the other hand, we can even deduplicate code, as those expressions are used twice.
2022-04-22rule ["CC", "header directory"]: drop ill-advised "public stage"Klaus Aehlig
The idea, as documented, of a header directory is to have a directory, closed as a tree, owned by the respective library and internally handled in an efficient way (as a single tree). If we open up that directory, we just have staged data, and therefore should treat it as such.
2022-04-22rule ["data", "staged"]: behave more file likeKlaus Aehlig
... by presenting the data both, as artifacts and as runfiles in the same way as inputs do.
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-21just-mr: correctly set times and permissions in CASKlaus Aehlig
2022-04-21add compatibility with original remote build protocolAlberto Sartori
2022-04-21Document the expression language used in our build toolKlaus Aehlig
2022-04-20Remove unused "+" on expressionsKlaus Aehlig
To concatenate lists (the only ability the "+" operator had), use "++".
2022-04-19just-mr: Refer to ROOT via absolute pathOliver Reiche
... so accessing the CAS from a different cwd wont fail if the local_build_root was provided as relative path.
2022-04-19TARGETS.json: use TREE constructor to get whole directoryKlaus Aehlig
... instead of naming every single file. This will, on the one hand keep the targets file more readable and, on the other hand more easy to maintain.
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-07bin/bootstrap: use top-level default targetKlaus Aehlig
As the default target is also staged canonically, there is no longer the need for the bootstrap script to know the path and staging output of the internal main target.
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-07just-mr: fix run_cmd interfaceKlaus Aehlig
... so that the calls using stdin/stdout redirect also work properly.
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"