summaryrefslogtreecommitdiff
path: root/src/buildtool/file_system
AgeCommit message (Collapse)Author
2025-06-16Ensure equality operators are really noexcept.Klaus T. Aehlig
... by explicitly catching any possible exception. Mainly to make clang-tidy happy. ...
2025-06-05GitRepo: Fix wrong handling of fatal loggingPaul Cristian Sarbu
...in creating Git tree from filesystem directory.
2025-06-05GitRepo: Fix capitalisation inconsistency in loggingPaul Cristian Sarbu
2025-06-05GitRepo: Use std::invoke to call generic loggerPaul Cristian Sarbu
2025-06-05GitRepo: Reduce logging levelsPaul Cristian Sarbu
...in methods that should not report at error level themselves, but let this be handled by its callers. While there, remove an unneeded path manipulation in a defferent set of log messages.
2025-06-05GitRepo: Ensure compliance with existing noexcept specifiersPaul Cristian Sarbu
...while also removing some unneeded one. Do not implicitly trust that the third-party code called in these methods is non-throwing and instead properly handle any exception that might arise. Also remove the specifiers from some anonymous namespace methods where a try-catch would be overkill and let their callers handle any exceptions instead.
2025-06-05GitCAS: Reduce log level where fatal not expectedPaul Cristian Sarbu
...and fix inconsistent capitalisation.
2025-06-05GitCAS: Ensure compliance with existing noexcept specifiersPaul Cristian Sarbu
Do not implicitly trust that the third-party code called in these methods is non-throwing and instead properly handle any exception that might arise.
2025-06-04directory_map: Correctly report fatal on failures to read from workspace rootsPaul Cristian Sarbu
2025-06-04FileRoot: Improve documentationPaul Cristian Sarbu
2025-06-04FileRoot: Ensure all read blobs and trees contain valid entriesPaul Cristian Sarbu
In particular, ensure that Git roots check for, e.g., upwards symlinks, before returning blobs and trees. To ensure that only the bear minimum extra work is performed for this purpose, Git roots now keep also the root's GitTreeEntry as a field, allowing the validity check of root source trees to take place only once and only if required.
2025-06-04FileRoot: Small format fixPaul Cristian Sarbu
2025-06-04FileRoot: Give git-based roots access to storage configPaul Cristian Sarbu
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-04Add utility methods for caching valid treesPaul Cristian Sarbu
...through marker files kept in storage under generation regime. These can be used to allow valid source trees, i.e., those free of upwards symlinks, to be cached in a persistent manner over multiple builds.
2025-06-04GitTree: Allow tree reading to skip symlinks checkerPaul Cristian Sarbu
This is useful when the caller already knows that the tree to look up is valid, and thus the extra check step can be safely skipped.
2025-06-04GitRepo: Fix wrong logging level in reading treesPaul Cristian Sarbu
This removes a scenario where otherwise successful (exit code 0) calls to just and just-mr would result in an error-level log message.
2025-06-04GitRepo: Add tree reader without symlink checkerPaul Cristian Sarbu
2025-06-04GitTree: Ensure all read entries are validPaul Cristian Sarbu
Match behaviour of reading trees, which always checks for invalid entries, also for reading blobs.
2025-06-04git_cas read object: allow validation of individual blobsPaul Cristian Sarbu
This allows individual blobs read to be checked, e.g., for upwards symlinks, also when not part of a tree, which performs such a validation for its entries during its parsing into a GitTree.
2025-06-04git_cas: Be explicit in hash type (raw or hex) when readingPaul Cristian Sarbu
2025-06-04GitTree: Fix comment typoPaul Cristian Sarbu
2025-05-28GitRepo: Methods expected to use a logger should do so...Paul Cristian Sarbu
...in all return paths, including in reporting caught exceptions. In this way give the opportunity for any calling AsyncMap to receive an expected fatal logger call on failure and thus be able to shut down gracefully. This is in line with the AsyncMap design, where the loggers are assumed to be safe to call by a consumer.
2025-04-22FileSystemManager: When copying, take into account equivalent files.Maksim Denisov
2025-04-22FileSystemManager: Always copy directories recursivelyMaksim Denisov
2025-04-22FileSystemManager: Always remove directories recursivelyMaksim Denisov
2025-04-10FilesystemManger: reduce debug level for absent filesKlaus Aehlig
At various places in the build tool, we try to read files from various CASes and caches. The absence of a file there is normal; therefore, reduce log level in order to not overload the debug-level log.
2025-04-01git_repo: Add missing include in debug modePaul Cristian Sarbu
2025-03-11Add library for atomically writing filesKlaus Aehlig
... by using the write-rename dance. This allows processes waiting for pid or similar files to rely on the information being available as soon as the file is available.
2025-03-05resolve_symlinks_map: Fix missing ignore special flag in reading treePaul Cristian Sarbu
2025-03-05FileSystemManager: Let caller decide log level for reading directoryPaul Cristian Sarbu
Do not emit errors when it does not lead to build failures. Callers handle the log level at which failures of this method should be logged.
2025-02-28Include ArtifactDigestFactory into "common" libraryMaksim Denisov
2025-02-21FileSystemManager: Use IncrementalReaderMaksim Denisov
2025-02-20Separate off id generation to a separate libraryKlaus Aehlig
... and rename appropriately to reflect contents more precisely than the generic "common". This separation also disentangles dependencies a bit.
2025-02-19Store HashFunction by valueMaksim Denisov
Although references give an additional information about ownership, they introduce additional design difficulties.
2025-02-14Add enum for add-to-cas resolve special optionPaul Cristian Sarbu
2025-02-14code structure: rename symlinks_map folder to symlinksPaul Cristian Sarbu
...to remove the unnecessary link between folder name and the logic of resolve_symlinks_map.
2025-02-14pragma_special.hpp: Inline global scope mapsPaul Cristian Sarbu
2025-01-22Git CAS access: reduce log levelKlaus Aehlig
Trying to access a git object return a recoverable failure, hence the failure to find the object in the git object database should be logged at warning level at most. Moreover, in some cases we should log that event at an even lower level, e.g., if we're just checking the presence of the object in the local git cas to avoid unnecessary network access.
2025-01-22Computed roots: extend data structure to support the absent pragmaKlaus Aehlig
2025-01-21Just: Support absent tree structure rootsMaksim Denisov
2025-01-15Add to GitRepo common implementation IsTreeInRepoMaksim Denisov
2025-01-15Add to GitRepo common implementation of ImportToGitMaksim Denisov
2024-12-19Implement TreeStructureRootMaksim Denisov
2024-12-19FileRoot: disclose RootGit data.Maksim Denisov
2024-12-19Remove FileRoot::ComputedRootMaksim Denisov
2024-12-19Use PrecomputedRoots during evaluationMaksim Denisov
2024-12-19Support PrecomputedRoots in FileRootMaksim Denisov
2024-12-19Implement PrecomputedRootsMaksim Denisov
...that is an abstract representation of roots that must be computed before the start of the main build.
2024-12-19Fix cause of minor warningsOliver Reiche