summaryrefslogtreecommitdiff
path: root/src/other_tools/just_mr/setup_utils.cpp
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2024-01-17 10:58:21 +0100
committerPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2024-01-26 14:51:43 +0100
commitdc501821c783740bd0298c188e7c41a9d5b7f60e (patch)
treef2584c54fce8358d45068cde0024a37e5be78da5 /src/other_tools/just_mr/setup_utils.cpp
parent3336390955466991aa3d8518dbe217114da9b3a3 (diff)
downloadjustbuild-dc501821c783740bd0298c188e7c41a9d5b7f60e.tar.gz
just-mr: Fix missing ExpressionPtr type checks in parsing the config file
Diffstat (limited to 'src/other_tools/just_mr/setup_utils.cpp')
-rw-r--r--src/other_tools/just_mr/setup_utils.cpp101
1 files changed, 48 insertions, 53 deletions
diff --git a/src/other_tools/just_mr/setup_utils.cpp b/src/other_tools/just_mr/setup_utils.cpp
index 9eaa2e86..c3799b1f 100644
--- a/src/other_tools/just_mr/setup_utils.cpp
+++ b/src/other_tools/just_mr/setup_utils.cpp
@@ -79,72 +79,67 @@ void ReachableRepositories(
std::shared_ptr<JustMR::SetupRepos> const& setup_repos) {
// use temporary sets to avoid duplicates
std::unordered_set<std::string> include_repos_set{};
- if (repos->IsMap()) {
- // traversal of bindings
- std::function<void(std::string const&)> traverse =
- [&](std::string const& repo_name) {
- if (not include_repos_set.contains(repo_name)) {
- // if not found, add it and repeat for its bindings
- include_repos_set.insert(repo_name);
- // check bindings
- auto repos_repo_name =
- repos->Get(repo_name, Expression::none_t{});
- if (not repos_repo_name.IsNotNull()) {
- return;
- }
- auto bindings =
- repos_repo_name->Get("bindings", Expression::none_t{});
- if (bindings.IsNotNull() and bindings->IsMap()) {
- for (auto const& bound : bindings->Map().Values()) {
- if (bound.IsNotNull() and bound->IsString()) {
- traverse(bound->String());
- }
+ // traversal of bindings
+ std::function<void(std::string const&)> traverse =
+ [&](std::string const& repo_name) {
+ if (not include_repos_set.contains(repo_name)) {
+ // if not found, add it and repeat for its bindings
+ include_repos_set.insert(repo_name);
+ // check bindings
+ auto repos_repo_name =
+ repos->Get(repo_name, Expression::none_t{});
+ if (not repos_repo_name.IsNotNull()) {
+ return;
+ }
+ auto bindings =
+ repos_repo_name->Get("bindings", Expression::none_t{});
+ if (bindings.IsNotNull() and bindings->IsMap()) {
+ for (auto const& bound : bindings->Map().Values()) {
+ if (bound.IsNotNull() and bound->IsString()) {
+ traverse(bound->String());
}
}
}
- };
- traverse(main); // traverse all bindings of main repository
+ }
+ };
+ traverse(main); // traverse all bindings of main repository
- // Add overlay repositories
- std::unordered_set<std::string> setup_repos_set{include_repos_set};
- for (auto const& repo : include_repos_set) {
- auto repos_repo = repos->Get(repo, Expression::none_t{});
- if (repos_repo.IsNotNull()) {
- // copy over any present alternative root dirs
- for (auto const& layer : kAltDirs) {
- auto layer_val =
- repos_repo->Get(layer, Expression::none_t{});
- if (layer_val.IsNotNull() and layer_val->IsString()) {
- auto repo_name = layer_val->String();
- setup_repos_set.insert(repo_name);
- }
+ // Add overlay repositories
+ std::unordered_set<std::string> setup_repos_set{include_repos_set};
+ for (auto const& repo : include_repos_set) {
+ auto repos_repo = repos->Get(repo, Expression::none_t{});
+ if (repos_repo.IsNotNull()) {
+ // copy over any present alternative root dirs
+ for (auto const& layer : kAltDirs) {
+ auto layer_val = repos_repo->Get(layer, Expression::none_t{});
+ if (layer_val.IsNotNull() and layer_val->IsString()) {
+ auto repo_name = layer_val->String();
+ setup_repos_set.insert(repo_name);
}
}
}
-
- // copy to vectors
- setup_repos->to_setup.clear();
- setup_repos->to_setup.reserve(setup_repos_set.size());
- std::copy(
- setup_repos_set.begin(),
- setup_repos_set.end(),
- std::inserter(setup_repos->to_setup, setup_repos->to_setup.end()));
- setup_repos->to_include.clear();
- setup_repos->to_include.reserve(include_repos_set.size());
- std::copy(include_repos_set.begin(),
- include_repos_set.end(),
- std::inserter(setup_repos->to_include,
- setup_repos->to_include.end()));
}
+
+ // copy to vectors
+ setup_repos->to_setup.clear();
+ setup_repos->to_setup.reserve(setup_repos_set.size());
+ std::copy(
+ setup_repos_set.begin(),
+ setup_repos_set.end(),
+ std::inserter(setup_repos->to_setup, setup_repos->to_setup.end()));
+ setup_repos->to_include.clear();
+ setup_repos->to_include.reserve(include_repos_set.size());
+ std::copy(
+ include_repos_set.begin(),
+ include_repos_set.end(),
+ std::inserter(setup_repos->to_include, setup_repos->to_include.end()));
}
void DefaultReachableRepositories(
ExpressionPtr const& repos,
std::shared_ptr<JustMR::SetupRepos> const& setup_repos) {
- if (repos.IsNotNull() and repos->IsMap()) {
- setup_repos->to_setup = repos->Map().Keys();
- setup_repos->to_include = setup_repos->to_setup;
- }
+ setup_repos->to_setup = repos->Map().Keys();
+ setup_repos->to_include = setup_repos->to_setup;
}
auto ReadConfiguration(