summaryrefslogtreecommitdiff
path: root/src/buildtool
AgeCommit message (Collapse)Author
2023-01-24GitRepo: Add SSL certificate verification callbacks for remote commit updatePaul Cristian Sarbu
The libgit2 library does not satisfy the http.sslVerify gitconfig field or the GIT_SSL_NO_VERIFY environment variable, so we have to perform these checks ourselves and supply the correct return value from the certificate_check git_fetch_options callback. The callbacks used for fixing the remote fetch SSL certificate verification are reused here.
2023-01-24GitRepo: Add SSL certificate verification callbacks for remote fetchPaul Cristian Sarbu
The libgit2 library does not satisfy the http.sslVerify gitconfig field or the GIT_SSL_NO_VERIFY environment variable, so we have to perform these checks ourselves and supply the correct return value from the certificate_check git_fetch_options callback.
2023-01-24GitRepo: Remove refspec argument in retrieving commit from remote...Paul Cristian Sarbu
...and use instead the branch name. A valid direct refspec (as those retrieved by a remote_ls call) will always end in the branch name, so checking the last path component ('/'-delimited substring) of a retrieved refspec is enough.
2023-01-24GitRepo: Add libgit2 proxy options for remote connection for commit updatePaul Cristian Sarbu
2023-01-24GitRepo: Set libgit2 option for auto-detection of proxy settings in fetching ↵Paul Cristian Sarbu
from remote
2023-01-24GitRepo: Change FetchFromRemote to fetch based on branch namePaul Cristian Sarbu
This also removes the need to call the GET_BRANCH_REFNAME critical operation.
2023-01-20Add gc subcommandSascha Roloff
2023-01-20Add local garbage collectionSascha Roloff
2023-01-20Move execution-backend-id calculation from target-level cache to local configSascha Roloff
This code movement is required to break a cyclic dependency coming with the introduction of the garbage collector. target_cache depends on garbage_collector and garbage_collector would depend on target_cache to determine the target-level-cache directory. After moving this calculation to a more general location, the cycle is broken.
2023-01-20Introduce multiple cache generationsSascha Roloff
2023-01-20Configured target uses entity_name_data.hpp instead of entity_name.hppSascha Roloff
This usage of a different header file is required to break a cyclic dependency coming with the introduction of the garbage collector. entity_name implicitly depends on local_cas, which will get a new dependency to garbage_collector. garbage_collector depends on target_cache_entry, which transitively depends on entity_name. entity_name_data instead does not depend on local_cas and breaks the cycle.
2023-01-20Cleanup local CAS dependency for repository configSascha Roloff
2023-01-20Add check for same CAS in CAS-to-CAS artifact retrievalSascha Roloff
2023-01-20Move file_storage.hpp to file_system subdirectorySascha Roloff
2023-01-20Refactor target cache key and entry to separate files and targetsSascha Roloff
2023-01-20generic built-in rule: fix typo in error messageKlaus Aehlig
2023-01-19Minor fixes for compiling with clang-14Oliver Reiche
2023-01-18authentication: add TLS and mTLS supportAlberto Sartori
2023-01-12source map: quote file names in error messageKlaus Aehlig
... to ensure unique readability even with file names containing spaces or other special symbols; those kind of fancy file names typically occur when a string intended as named target is implicitly taken as a file (e.g., due to a spelling error). While there, also include directory and repository in the error message.
2022-12-23Just-MR: Remove wrong pass-by-reference when wrapping loggersPaul Cristian Sarbu
Passing the logger by reference would require the caller to be kept alive. Also, being a shared_ptr, the logger can be passed by value at almost no cost.
2022-12-22Add option --dump-export-targetsKlaus Aehlig
... dumping only the configured targets that are export targets. Those targets are of particular interest as those are the targets, as they are the high-level caching points and also often serve as interface between projects.
2022-12-22export targets: identify as such in result_mapKlaus Aehlig
Make export targets identify themselves in the result_map, so that we have accurate knowledge of the export targets seen.
2022-12-22result_map: also keep track of export targetsKlaus Aehlig
Allow in the addition of a target to the result map to indicate that it was an export target; in this way, the information is available as a result of the analysis.
2022-12-21Crypto: Add SHA512 hasherPaul Cristian Sarbu
Needed by the content-in-CAS git map to check fetched archives' checksums. SHA1 and SHA256 hashers are already implemented.
2022-12-21FS Manager: Add CopyDirectoryImpl methodPaul Cristian Sarbu
2022-12-21Just-MR: Add utilities library for just-mrPaul Cristian Sarbu
2022-12-21Just: Move constants from main into own header filePaul Cristian Sarbu
2022-12-21Git: Wrap libgit2 raw pointersPaul Cristian Sarbu
2022-12-21Test: Add tests for critical git opsPaul Cristian Sarbu
2022-12-21Just-MR: Add non-critical git ops logic to git repo classPaul Cristian Sarbu
2022-12-21Just-MR: Add critical ops logic to git repo classPaul Cristian Sarbu
2022-12-21Git CAS: Move Git tree ops to fake repo wrapper classPaul Cristian Sarbu
2022-12-20Git CAS: Add fake repository wrapper for git odbPaul Cristian Sarbu
2022-12-20Git CAS: Clean includesPaul Cristian Sarbu
Removed unused file_system_manager dependency
2022-12-20Git CAS: Add a Git context class to maintain the libgit2 statePaul Cristian Sarbu
2022-12-12Start 1.1 development cycleKlaus Aehlig
2022-12-12Release 1.0.0v1.0.0Klaus Aehlig
2022-12-09rules: Refactoring and minor improvementsOliver Reiche
Compared to the previous commit, the action graphs for just and its unit tests are unchanged. - Git hash of action graph for ["",""]: c6e75f17abd7ffaab6ff9bb725ad67ec0bf6c973 - Git hash of action graph for ["test/buildtool","TESTS"]: 8063dfb3dd7daa9ae01d95c177e14946f785c57e Refactor: - "local cflags" to "private-cflags" - "local defines" to "private-defines" - "link externals" to "private-ldflags" - "deps" to "private-deps" for (test) binaries - "proto" to "private-proto" for binaries Improvements: - consistent variable declaration order: OS, ARCH, HOST_ARCH, TARGET_ARCH, CC, CXX, CFLAGS, CXXFLAGS, ADD_CFLAGS, ADD_CXXFLAGS, AR, ENV, PATH - use fields close to their definition (in RULES) - use common expression for binaries and test binaries - split expression "flags" and "compiler" ... to separate ones for CC and CXX. - rename "transition" to "deps-transition" ... to avoid conflicts with other transitions. - support "defaults-transition" for CC expressions Implement: - "cflags" for libraries - "private-cflags" for (test) binaries - "private-defines" for test binaries - "private-ldflags" for test binaries - (public) "defines" for libraries
2022-12-07Built-in rules: add a tree ruleKlaus Aehlig
... so that for every construct supported in rules there is an analogous one as a built-in rule to allow ad-hoc constructions without having to write a rule (even though writing a rule is recommended for everything occuring more than once): - the "generic" rule allows an ad-hoc ACTION, - the "file_gen" rule allows an ad-hoc BLOB, - the "tree" rule allows an an ad-hoc TREE, and - the "configure" rule allows an ad-hoc configuration transition.
2022-12-07file_gen rule: fix computation of effective configurationKlaus Aehlig
The dependencies requested in order to read their "outs" or "runfiles" also contribute to the effective configuration.
2022-12-07just: Allow multiple log filesPaul Cristian Sarbu
2022-12-07just: Fix typos in command descriptions (--help)Paul Cristian Sarbu
2022-11-28describe: Print rule as ordered JSONOliver Reiche
... with the order for "field_doc" being taken from "string_fields", "target_fields", and "config_fields" (in that order). For "config_doc", the order is taken from the "config_vars" list. Thus, being consistent with the (non-JSON) pretty printing of rules.
2022-11-24Add tree id to trace outputSascha Roloff
2022-11-24Fix root directory upload to honor tree invariant.Sascha Roloff
2022-11-21Use the newly-added concept of private-depsKlaus Aehlig
While there, also add all direct dependencies explicitly; using directly dependencies that are pulled in only indireclty causes problems from a maintainability point of view.
2022-11-16Release 1.0.0~beta6Klaus Aehlig
2022-11-16Fix effective configuration computation in configureKlaus Aehlig
While the built-in "configure" rule is forwarding the result of the configured target, its own effective configuration is not that of the configured target. The effective configuration is defined to be that part of the incoming configuration that can potentially influence the result of that target; in particular, this includes variables read in defining the configuration transition.
2022-11-16Make "config" accept a computed targetKlaus Aehlig
... and thus allowing the "business logic" in the configuration target (e.g., setting defaults and derived options) to be shared by many targets.
2022-11-11Support dumping variables of the analysed targetKlaus Aehlig
Add an option --dump-vars showing the variables of the configuration used (including the use of them being unset). This information can be used, e.g., to export a given target in a maximally flexible way.