summaryrefslogtreecommitdiff
path: root/src/other_tools/repo_map
diff options
context:
space:
mode:
authorMaksim Denisov <denisov.maksim@huawei.com>2024-12-19 11:35:25 +0100
committerMaksim Denisov <denisov.maksim@huawei.com>2024-12-20 11:36:17 +0100
commit5e2fe74d3e5798ef73b3eef98d84577d881aad9a (patch)
tree76e0531c07d63cc0a1a55c70d524f6ae8e8bf522 /src/other_tools/repo_map
parent1e9080be33a18dd672d2cb035a18ba1d1aba0fb6 (diff)
downloadjustbuild-5e2fe74d3e5798ef73b3eef98d84577d881aad9a.tar.gz
TreeStructure: Unify parsing of precomputed roots in just-mr
Diffstat (limited to 'src/other_tools/repo_map')
-rw-r--r--src/other_tools/repo_map/TARGETS2
-rw-r--r--src/other_tools/repo_map/repos_to_setup_map.cpp60
2 files changed, 28 insertions, 34 deletions
diff --git a/src/other_tools/repo_map/TARGETS b/src/other_tools/repo_map/TARGETS
index af80fa2f..f6362327 100644
--- a/src/other_tools/repo_map/TARGETS
+++ b/src/other_tools/repo_map/TARGETS
@@ -30,8 +30,8 @@
, ["src/other_tools/ops_maps", "content_cas_map"]
, ["src/other_tools/ops_maps", "git_tree_fetch_map"]
, ["src/other_tools/utils", "parse_archive"]
- , ["src/other_tools/utils", "parse_computed_root"]
, ["src/other_tools/utils", "parse_git_tree"]
+ , ["src/other_tools/utils", "parse_precomputed_root"]
, ["src/utils/cpp", "expected"]
, ["src/utils/cpp", "path"]
]
diff --git a/src/other_tools/repo_map/repos_to_setup_map.cpp b/src/other_tools/repo_map/repos_to_setup_map.cpp
index 779406b4..4a8498c5 100644
--- a/src/other_tools/repo_map/repos_to_setup_map.cpp
+++ b/src/other_tools/repo_map/repos_to_setup_map.cpp
@@ -33,8 +33,8 @@
#include "src/other_tools/ops_maps/content_cas_map.hpp"
#include "src/other_tools/ops_maps/git_tree_fetch_map.hpp"
#include "src/other_tools/utils/parse_archive.hpp"
-#include "src/other_tools/utils/parse_computed_root.hpp"
#include "src/other_tools/utils/parse_git_tree.hpp"
+#include "src/other_tools/utils/parse_precomputed_root.hpp"
#include "src/utils/cpp/expected.hpp"
#include "src/utils/cpp/path.hpp"
@@ -637,45 +637,39 @@ void GitTreeCheckout(ExpressionPtr const& repo_desc,
});
}
-void ComputedRootCheckout(ExpressionPtr const& repo_desc,
- ExpressionPtr&& repos,
- std::string const& repo_name,
- ReposToSetupMap::SetterPtr const& setter,
- ReposToSetupMap::SubCallerPtr const& subcaller,
- ReposToSetupMap::LoggerPtr const& logger) {
- auto const parser = ComputedRootParser::Create(&repo_desc);
- if (not parser) {
- (*logger)(
- fmt::format("ComputedRootCheckout: Not a computed repository: {}",
- nlohmann::json(repo_name).dump()),
- /*fatal=*/true);
- return;
- }
- auto result_root = parser->GetResult();
- if (not result_root) {
- (*logger)(fmt::format("ComputedRootCheckout: parsing repository {} "
- "failed with:\n{}",
+void PrecomputedRootCheckout(ExpressionPtr const& repo_desc,
+ ExpressionPtr&& repos,
+ std::string const& repo_name,
+ ReposToSetupMap::SetterPtr const& setter,
+ ReposToSetupMap::SubCallerPtr const& subcaller,
+ ReposToSetupMap::LoggerPtr const& logger) {
+ auto precomputed = ParsePrecomputedRoot(repo_desc);
+ if (not precomputed) {
+ (*logger)(fmt::format("Checkout of precomputed root {} failed:\n{}",
nlohmann::json(repo_name).dump(),
- std::move(result_root).error()),
+ std::move(precomputed).error()),
/*fatal=*/true);
return;
}
- std::string target_repo = result_root->repository;
+
+ std::string target_repo = precomputed->GetReferencedRepository();
(*subcaller)(
{std::move(target_repo)},
[setter,
repos = std::move(repos),
repo_name,
- result = *std::move(result_root)](auto const& /*unused*/) {
+ result = *std::move(precomputed)](auto const& /*unused*/) {
nlohmann::json cfg{};
auto& ws_root = cfg["workspace_root"];
SetReposTakeOver(&cfg, repos, repo_name);
- ws_root.push_back("computed");
- ws_root.push_back(result.repository);
- ws_root.push_back(result.target_module);
- ws_root.push_back(result.target_name);
- ws_root.push_back(result.config);
+ if (auto computed = result.AsComputed()) {
+ ws_root.push_back(ComputedRoot::kMarker);
+ ws_root.push_back(computed->repository);
+ ws_root.push_back(computed->target_module);
+ ws_root.push_back(computed->target_name);
+ ws_root.push_back(computed->config);
+ }
std::invoke(*setter, std::move(cfg));
},
logger);
@@ -867,12 +861,12 @@ auto CreateReposToSetupMap(
break;
}
case CheckoutType::Computed: {
- ComputedRootCheckout(*resolved_repo_desc,
- std::move(repos),
- key,
- setter,
- subcaller,
- wrapped_logger);
+ PrecomputedRootCheckout(*resolved_repo_desc,
+ std::move(repos),
+ key,
+ setter,
+ subcaller,
+ wrapped_logger);
break;
}
}