summaryrefslogtreecommitdiff
path: root/src/buildtool/common/TARGETS
AgeCommit message (Collapse)Author
2025-06-04RepositoryConfig: Ensure consistency in reading blobs and treesPaul Cristian Sarbu
...with respect to rejecting invalid entries such as upwards symlinks. Also ensure that valid trees are only checked once by remebering known valid tress though marker files in local storage.
2025-06-04RepositoryConfig: Give access to a persistent storage config...Paul Cristian Sarbu
...whenever it is given access to a Git repository. The referenced storage config needs to outlive the repository config instance.
2025-04-08Keep identifiers for actions, trees, and tree_overlays disjointKlaus Aehlig
While our traverser correctly keeps separate identifier spaces for those entities, having disjoint identifiers allows easier reading of log messages and more simple reporting of origins of actions.
2025-04-07Add a class describing a tree defined as an overlayKlaus Aehlig
2025-03-24ArtifactBlob: Support construction from temporary filesMaksim Denisov
2025-02-28Make statistics a separate libraryMaksim Denisov
2025-02-28Artifact: Use ArtifactDigestFactoryMaksim Denisov
...to remove code duplication.
2025-02-28Include ArtifactDigestFactory into "common" libraryMaksim Denisov
2025-02-27ArtifactBlob: Support construction from an existing fileMaksim Denisov
2025-02-27ArtifactBlob: Allow different content sourcesMaksim Denisov
2025-02-27ArtifactBlob: Support construction in memoryMaksim Denisov
2025-02-27ArtifactBlob: Support incremental readingMaksim Denisov
2025-02-27ArtifactBlob: Add cpp fileMaksim Denisov
2025-02-27ArtifactBlob: Move from execution_api/common to commonMaksim Denisov
2025-02-14just add-to-cas: Enable --resolve-special optionPaul Cristian Sarbu
2024-12-19Support substitution of precomputed roots in RepositoryConfigMaksim Denisov
2024-12-11RepositoryConfig::SetGitCAS: allow setting log_levelKlaus Aehlig
... as there might be cases where it is expected that setting the git CAS fails, e.g., if referring to the implict git repository in the local build root as a fallback CAS.
2024-11-14common: Implement IWYU suggestionsPaul Cristian Sarbu
2024-10-29Clean up unused dependenciesKlaus Aehlig
2024-10-25Add dependencies explicitly that are included directlyKlaus Aehlig
... instead of relying on those dependencies being pulled in indirectly.
2024-10-25ObjectInfo: Fix digest creation in FromStringPaul Cristian Sarbu
The digest tree check should take into account the protocol. Also add a TODO to point out the currently needed code duplication.
2024-09-23Reorder dependencies and remove duplicates in OSSMaksim Denisov
2024-09-13Remove Compatibility flag from justMaksim Denisov
2024-09-13Add to ProtocolTraits static functions that provide protocol-specific behaviourMaksim Denisov
2024-09-13Rename Compatibility class to ProtocolTraitsMaksim Denisov
...and move it to the common stage.
2024-09-13Move to GitHashesConverter functionality related to conversion of git hashesMaksim Denisov
...from Compatibility.
2024-09-11Store HashInfo as a field in ArtifactDigestMaksim Denisov
...and adjust ArtifactDigestFactory accordingly.
2024-09-11Remove the plain data constructor from ArtifactDigestMaksim Denisov
2024-09-11Use HashFunction::Type to deserialize ArtifactDescriptionMaksim Denisov
2024-09-11Return ArtifactDigest from RepositoryConfig::RepositoryKeyMaksim Denisov
...to prevent additional conversions to ArtifactDigest from plain strings.
2024-09-09Implement ArtifactDigestFactory classMaksim Denisov
...that provides ways to create valid ArtifactDigests.
2024-09-09Validate bazel_re::Digests in BazelDigestFactoryMaksim Denisov
2024-08-30Use BazelDigestFactory to create bazel_re::Digest directly if neededMaksim Denisov
...bypassing ArtifactDigest functionality.
2024-07-22Use HashFunction from Storage in RepositoryConfigMaksim Denisov
2024-07-22Use HashFunction functionality via Instance()Maksim Denisov
...to track changes during refactoring easier.
2024-07-12Remove redundant ArtifactFactory class used in tests onlyMaksim Denisov
...and move the related tests to artifact_description.test
2024-07-12Move implementation details of ArtifactDescription to the cpp fileMaksim Denisov
2024-07-05Pass Storage to RepositoryConfigMaksim Denisov
...and adjust AnalyseContext.
2024-07-05Move functionality from StorageConfig to related classes.Maksim Denisov
2024-06-28Use (un)expected for reading location objectsOliver Reiche
2024-04-25just-mr rc: Extract location object parser in separate libraryPaul Cristian Sarbu
This will make it available also to just.
2024-04-18Move retry-related CLI parts into separate librariesKlaus Aehlig
... to simplify reuse.
2024-03-15Clean up more includes and targetsPaul Cristian Sarbu
Some of the more specific issues addressed: - missing log_level target/include - header-only libs wrongly marking deps as private - missing/misplaced gsl includes
2023-12-06Add CLI option to set write strategy for target-level cacheKlaus Aehlig
2023-11-02Decoupling symlinks map and CAS utilities from just-mrPaul Cristian Sarbu
This is required in order to make them available to 'just serve' in a minimal just installation.
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-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-04clean up targets filesKlaus Aehlig
- deduplicate dependencies - remove unused dependency
2023-03-23targets: Fix deps structurePaul Cristian Sarbu
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.