summaryrefslogtreecommitdiff
path: root/src/buildtool/common/repository_config.cpp
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-12-16 17:59:07 +0100
committerMaksim Denisov <denisov.maksim@huawei.com>2024-12-19 16:37:59 +0100
commitbd606d1355afe1276675ac1c0077d44bb484b363 (patch)
tree0d282e083b06e722f6dd14c414fbea4788bd0686 /src/buildtool/common/repository_config.cpp
parentd4955ca35cf160d32a68d262904cf2806e3a5910 (diff)
downloadjustbuild-bd606d1355afe1276675ac1c0077d44bb484b363.tar.gz
Support substitution of precomputed roots in RepositoryConfig
Diffstat (limited to 'src/buildtool/common/repository_config.cpp')
-rw-r--r--src/buildtool/common/repository_config.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/buildtool/common/repository_config.cpp b/src/buildtool/common/repository_config.cpp
index 933d48b2..9561f10b 100644
--- a/src/buildtool/common/repository_config.cpp
+++ b/src/buildtool/common/repository_config.cpp
@@ -14,6 +14,8 @@
#include "src/buildtool/common/repository_config.hpp"
+#include <initializer_list>
+
#include "src/utils/automata/dfa_minimizer.hpp"
auto RepositoryConfig::RepositoryInfo::BaseContentDescription() const
@@ -151,6 +153,26 @@ auto RepositoryConfig::AddToGraphAndGetId(
return std::nullopt;
}
+void RepositoryConfig::SetPrecomputedRoot(PrecomputedRoot const& root,
+ FileRoot const& value) {
+ for (auto const& [name, desc] : repos_) {
+ auto new_info = desc.info;
+ bool changed = false;
+ for (gsl::not_null<FileRoot*> candidate : {&new_info.workspace_root,
+ &new_info.target_root,
+ &new_info.rule_root,
+ &new_info.expression_root}) {
+ if (candidate->GetPrecomputedDescription() == root) {
+ *candidate = value;
+ changed = true;
+ }
+ }
+ if (changed) {
+ SetInfo(name, std::move(new_info));
+ }
+ }
+}
+
void RepositoryConfig::SetComputedRoot(FileRoot::ComputedRoot const& root,
FileRoot const& value) {
for (auto const& [name, desc] : repos_) {