summaryrefslogtreecommitdiff
path: root/src/buildtool/main
AgeCommit message (Collapse)Author
2024-04-10Release 1.2.5v1.2.5Klaus Aehlig
2024-04-10Start 1.2.5 development cycleKlaus Aehlig
2023-12-19Release 1.2.4v1.2.4Klaus Aehlig
2023-12-13just: Fix wrong access to moved structPaul Cristian Sarbu
The traverser instantiation consumes the arguments.build struct, therefore one must not access that struct later in the code. (cherry picked from commit bc09302c2772c979c45ecc716c36e4a70bb484ac)
2023-12-13Start 1.2.4 development cycleOliver Reiche
2023-11-15Release 1.2.3v1.2.3Klaus Aehlig
2023-11-15bugfix: Also unlink symlinks before installingOliver Reiche
Make sure that all CopyFile, WriteFile, and CreateSymlink functions properly unlink the target file (if it exists and overwrite requested) to avoid interferences of the install command. With this change, the clean up step for install-cas and the within GraphTraverser can new be omitted. (cherry-picked from 04e2f0aa0ccfe4f39c5f6c713bde182c6b7704dd)
2023-11-15Start 1.2.3 development cycleKlaus Aehlig
2023-10-17Release 1.2.2v1.2.2Klaus Aehlig
2023-10-17Start 1.2.2 development cycleKlaus Aehlig
2023-08-29Release 1.2.1v1.2.1Klaus Aehlig
2023-08-28Start 1.2.1 development cycleOliver Reiche
2023-08-25Release 1.2.0v1.2.0Klaus Aehlig
2023-08-23just: split main codeKlaus Aehlig
... by moving the diagnose and cli related code into to separate libraries. In this way, we hopefully improve maintainability of the code base.
2023-08-22Release 1.2.0~beta3v1.2.0-beta3Oliver Reiche
2023-08-18Release 1.2.0~beta2v1.2.0-beta2Klaus Aehlig
2023-08-16Release 1.2.0~beta1v1.2.0-beta1Klaus Aehlig
2023-08-11Move downstepping to subobjects to a libraryKlaus Aehlig
... in order to make that functionality reusable
2023-08-08Unlink files before creation on install-casKlaus Aehlig
If install-cas finds a file in the target location, unlink it before writing (in the same way as install does already). In this way, we avoid changing other file locations in the presence of hard links.
2023-07-27Add option -P to just-install-casKlaus Aehlig
... to allow selecting a sub object of a specified tree.
2023-07-11filesystem: Avoid unwanted indirections...Paul Cristian Sarbu
...that std::filesystem::* calls produce. This is because existence and type checks use almost exclusively std::filesystem::status, which follows symbolic links, when being called with path arguments. Instead, one should instead use these methods with the value returned by a call of std::filesystem::symlink_status. This commit also streamlines the FileSystemManager tests, as well as replace bare calls to std::filesystem with their FileSystemManager counterparts (where suitable).
2023-07-05Add CLI argument to dispatch endpointKlaus Aehlig
In this way, the user can specify which execution endpoint to use depending on the execution properties.
2023-07-05main: RemoteExecutionConfig is a direct dependencyKlaus Aehlig
... and hence should be declared as such.
2023-06-28Fix json to filepath conversion in mainSascha Roloff
2023-06-26Add non-upwards symlinks in the rule language...Paul Cristian Sarbu
via a 'SYMLINK' constructor function. This works similarly to the 'FILE' construct, but the name given must point to a non-upwards symlink and a symlink artifact is being generated from it. Also updates the relevant tests.
2023-06-26FileRoot: Add handling of non-upwards symlink...Paul Cristian Sarbu
...and update tests accordingly.
2023-06-06style: Use designated initializersPaul Cristian Sarbu
This feature has been introduced with C++20.
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-31Support FINAL_LDFLAGS variable for binariesOliver Reiche
... and set default stack size to 8 MB.
2023-05-31just: Add handling of ignore-special rootsPaul Cristian Sarbu
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-04-28Release 1.1.0~beta1v1.1.0-beta1Klaus Aehlig
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-04just install-cas: use local git as git CASKlaus Aehlig
2023-03-30Improve error messages on reading invalid target filesKlaus Aehlig
... by including the details of the parse error.
2023-03-24just install{,-cas}: add --remember optionKlaus Aehlig
... asking just to transfer everyting installed to the local CAS first.
2023-03-23just install{,-cas}: offer local CAS as preferred CASKlaus Aehlig
... to avoid unnecessary downloads and hence speed things up.
2023-03-23targets: Fix deps structurePaul Cristian Sarbu
2023-03-20just: only report export targets if there are anyKlaus Aehlig
By default, messages at level "progress" and above are shown. So, messages at that level should be useful for the user in the typical case. For the count of export targets, this information is only useful if the build involves export targets at all; the absence of export targets is typically only used when debugging the build structure.
2023-03-13Storage: Reworked storage and garbage collectionOliver Reiche
The improved GC implementation uses refactored storage classes instead of directly accessing "unknown" file paths. The required storage class refactoring is quite substantial and outlined in the following paragraphs. The module `buildtool/file_system` was extended by: - `ObjectCAS`: a plain CAS implementation for reading/writing blobs and computing digests for a given `ObjectType`. Depending on that type, files written to the file system may have different properties (e.g., the x-bit set) or the digest may be computed differently (e.g., tree digests in non-compatible mode). A new module `buildtool/storage` was introduced containing: - `LocalCAS`: provides a common interface for the "logical CAS", which internally combines three `ObjectCAS`s, one for each `ObjectType` (file, executable, tree). - `LocalAC`: implements the action cache, which needs the `LocalCAS` for storing cache values. - `TargetCache`: implements the high-level target cache, which also needs the `LocalCAS` for storing cache values. - `LocalStorage`: combines the storage classes `LocalCAS`, `LocalAC`, and `TargetCache`. Those are initialized with settings from `StorageConfig`, such as the build root base path or number of generations for the garbage collector. `LocalStorage` is templated with a Boolean parameter `kDoGlobalUplink`, which indicates that, on every read/write access, the garbage collector should be used for uplinking across all generations (global). - `GarbageCollector`: responsible for garbage collection and the global uplinking across all generations. To do so, it employs instances of `LocalStorage` with `kDoGlobalUplink` set to false, in order to avoid endless recursion. The actual (local) uplinking within two single generations is performed by the corresponding storage class (e.g., `TargetCache` implements uplinking of target cache entries between two target cache generations etc.). Thereby, the actual knowledge how data should be uplinked is implemented by the instance that is responsible for creating the data in the first place.
2023-03-13TargetCache: Drop dependency on execution apiOliver Reiche
2023-03-10Update nlohmann::json to 3.11.2Klaus Aehlig
2023-03-10execution service: implement WaitExecution and ↵Alberto Sartori
google::longrunning::Operations::GetOperation For each action that is executed, an entry is added to a shared thread safe cache. Once the number of operations stored exceeds twice 2^n, where n is given by the option --log-operations-threshold, at most 2^n operations will be removed, in a FIFO scheme.
2023-03-02just: make -D options overlayKlaus Aehlig
... instead of only honoring the latest argument. In this way, standard overlays coming from the launcher configuration can be amended in individual invocations.
2023-02-27Progress reporting: Extract generic logic from just base progress reporter classSascha Roloff
2023-02-27Logging: Add --log-append clarg to justPaul Cristian Sarbu
2023-02-20Add logging command-line arguments to gc subcommandSascha Roloff