summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2023-06-22generic rule: fix error handling for "env"Klaus Aehlig
After a fatal error, do not continue evaluation, but return immediately.
2023-06-20just-mr: Auto detect archive compressionOliver Reiche
2023-06-20ArchiveOps: Support unpacking tar.xz archivesOliver Reiche
2023-06-15executor: honor action-specific execution propertiesKlaus Aehlig
2023-06-15ACTION constructor: accept "execution properties"Klaus Aehlig
Allow rules to set (additional) execution properties for individual action. In this way the need for a special image (e.g., with additional, maybe test-only, tools) or execution platform (e.g., when cross-compiling but having to execute the tests on the native platform) can be expressed.
2023-06-15action data structure: support (additional) execution propertiesKlaus Aehlig
2023-06-09Git CAS: report absence of CAS at debug levelKlaus Aehlig
A git CAS ist just a fall back, so it is OK if it is absent (e.g., the specificed directory does not exist). Therefore only log at debug level, not at error level if we cannot open it.
2023-06-07file_system: Drop unused template argumentOliver Reiche
... which became obsolete with the new fdless write/copy implementations.
2023-06-07file_system: Avoid malloc in 'fdless' copy/writeOliver Reiche
... to remove the risk of deadlocks on certain combinations of C++ standard library and libc when performing the copy/write in a child process. For 'fdless' copy/write, a child process is used to prevent the parent from getting polluted with open writable file descriptors (which might get inherited by other children that keep them open and can cause EBUSY errors).
2023-06-06style: Use designated initializersPaul Cristian Sarbu
This feature has been introduced with C++20.
2023-06-05git cas: only compute absolute path if not absolute alreadyKlaus Aehlig
... and in this way, continue to work correctly in the absence of a current working directory.
2023-06-05File Locking: only compute absolute path, if not absolute alreadyKlaus Aehlig
... and in this way, ensure we can lock files given by absolute path even if we don't have a working directory. While there, drop uncessary split just to combine of the file name.
2023-06-05just: improve error reporting on missing pwdKlaus Aehlig
... also, gracefully handle the case of a missing working directory when determining the current module, falling back to the top-level module.
2023-05-31Avoid potential malloc between fork/execOliver Reiche
2023-05-31Support FINAL_LDFLAGS variable for binariesOliver Reiche
... and set default stack size to 8 MB.
2023-05-31git tree repos: Add option for ignore-special root...Paul Cristian Sarbu
...and fix missing origin field initialization for progress tracing.
2023-05-31distdir repos: Add option for ignore-special rootPaul Cristian Sarbu
2023-05-31archive repos: Add option for ignore-special rootPaul Cristian Sarbu
2023-05-31git repos: Add option for ignore-special rootPaul Cristian Sarbu
2023-05-31file repos: Add option for ignore-special rootPaul Cristian Sarbu
2023-05-31utils: Relocate the std::filesystem::hash_value libc fix...Paul Cristian Sarbu
...and make the use of std::hash consistent. This will make it easier to remove the fix once the libc implementation we use catches up with the C++ standard.
2023-05-31just: Add handling of ignore-special rootsPaul Cristian Sarbu
2023-05-31FileRoot: Add ignore-special roots logicPaul Cristian Sarbu
2023-05-31Executor: honor timeout scalingKlaus Aehlig
2023-05-31ACTION constructor: accept "timeout scaling"Klaus Aehlig
Allow rules to set the timeout-scaling factor for their actions to indicate that some actions are expected to take longer than others, e.g., because they call a foreign build tool or are a very complex end-to-end test.
2023-05-31action data structure: support timeout-scaling factorKlaus Aehlig
2023-05-23Storage config: also specify the location of the execution rootKlaus Aehlig
As local execution is tightly coupled to storage, also specify the layout in the storage configuration. In this way, we have a central place specifying the layout of just's cache directory and avoid accidentally getting into conflicting situations. While there, also move the execution root under the generation regime, to ensure that left-over execution directories (e.g., after a forceful termination of the program) eventually get cleaned up by garbage collection.
2023-05-19Start 1.2 development cycleKlaus Aehlig
2023-05-19Release 1.1.0v1.1.0Klaus Aehlig
2023-05-15Relase 1.1.0~beta2v1.1.0-beta2Klaus Aehlig
2023-05-15memcheck: fix race in libgit2...Paul Cristian Sarbu
...caused by incorrectly setting and resetting the library internal state and the misuse of pthreads in libgit2. Normally, git_libgit2_init and git_libgit2_shutdown should span the life of a worker thread in order to be safely used. However, due to an incorrect implementation of libgit2's threadstate with pthreads, on unix systems there is a race condition. Until the use of pthread_key_t is corrected in libgit2, we need to apply a workaround by always ensuring that the main thread is the first thread reaching the GitContext constructor.
2023-05-05GitTree: Check optional before accessing itOliver Reiche
... and drop unecessary IsTree() check.
2023-05-03grpc: fix build fail with protobuf in debug modePaul Cristian Sarbu
2023-04-28Release 1.1.0~beta1v1.1.0-beta1Klaus Aehlig
2023-04-27just-mr: Fix config always being requiredPaul Cristian Sarbu
In just-mr the config file should only be needed if: 1. We call just with a subcommand requiring a config file, or 2. We use one of just-mr's own commands (except version).
2023-04-26imports: Switch to Microsoft GSL implementationOliver Reiche
... with two minor code base changes compared to previous use of gsl-lite: - dag.hpp: ActionNode::Ptr and ArtifactNode::Ptr are not wrapped in gsl::not_null<> anymore, due to lack of support for wrapping std::unique_ptr<>. More specifically, the move constructor is missing, rendering it impossible to use std::vector<>::emplace_back(). - utils/cpp/gsl.hpp: New header file added to implement the macros ExpectsAudit() and EnsureAudit(), asserts running only in debug builds, which were available in gsl-lite but are missing in MS GSL.
2023-04-26just-mr: Fix warning about unused lambda captureOliver Reiche
2023-04-26bazel_network: grpc++ is not a direct dependencyOliver Reiche
2023-04-26evaluator: Improve evaluation error reportingOliver Reiche
2023-04-19just-mr archive: subdir matters!Klaus Aehlig
When deciding if two archive-based repositories create the same root it is not enough to compare the contents of the archive; it also matters which subdirectory we will take as root. This is especially important, if we take the same archive on the one hand for the code and also the example subdir for testing. Additionally, we cannot ignore the archive type; there are tar archives that are also zip archives, but with different content. (Tar only cares about the initial segment till it finds the two empty blocks; zip has the index at the end and ignores any initial segment that might have been prepended to a valid zip archive.)
2023-04-14just-mr support -D optionKlaus Aehlig
Make just-mr unconditionally support an option -D that collects a configuration overlay and forwards it to the invocation of a just subcommand that supports this option. This syntax-switching facility makes it easy to embedd dynamic parts of the configuration (like the head commit to be part of a version string) as those information can unconditionally be the first argument to just-mr.
2023-04-04local API: fall back to git api, if availableKlaus Aehlig
2023-04-04just install-cas: use local git as git CASKlaus Aehlig
2023-04-04Add a git based read-only APIKlaus Aehlig
From a git CAS crate an execution API unable to execute actions or to store anything. This implementaiton of the common interface is still useful as the execution API is the interface used for tranfering artifacts.
2023-04-04Make git root part of the storage configKlaus Aehlig
In this way, we have the whole layout of the local build root consolidated in one place. Moreover, in this way, the location of the git root is also available to the build tool itself and can, e.g., be used as fallback CAS.
2023-04-04CAS: demote log messages of to debugKlaus Aehlig
As those functions indicate success, it is up to the caller to decide if the error was fatal or not. Reporting an error nevertheless might result in error messages on successful operaitons, which is confusing for the user.
2023-04-04disjoint_map_union: show conflicting values on errorKlaus Aehlig
2023-04-04command-line logging: change color schemeKlaus Aehlig
... to make it readable also on white background, where yellow is hardly readable.
2023-04-04clean up targets filesKlaus Aehlig
- deduplicate dependencies - remove unused dependency
2023-03-31git tree: degrade log level for missing entry in a git tree to debugKlaus Aehlig
... as this is only an internal functionality, and the caller will take care of a proper error message if the absence of that entry is not expected.