Blame SOURCES/0014-Revert-Adjust-modular-solver-to-new-context-type.patch

2e24b4
From 6c9540be5ac3e3bc3f9a60133b402945705b934f Mon Sep 17 00:00:00 2001
2e24b4
From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= <amatej@redhat.com>
2e24b4
Date: Sun, 25 Apr 2021 19:47:53 +0200
2e24b4
Subject: [PATCH 14/19] Revert "Adjust modular solver to new context type"
2e24b4
2e24b4
This reverts commit 921d4db62cda41f7999aff67882ad0c01c766916.
2e24b4
---
2e24b4
 libdnf/module/ModulePackageContainer.cpp | 46 +++++-------------------
2e24b4
 1 file changed, 8 insertions(+), 38 deletions(-)
2e24b4
2e24b4
diff --git a/libdnf/module/ModulePackageContainer.cpp b/libdnf/module/ModulePackageContainer.cpp
2e24b4
index 6e6134d2..c0ad1260 100644
2e24b4
--- a/libdnf/module/ModulePackageContainer.cpp
2e24b4
+++ b/libdnf/module/ModulePackageContainer.cpp
2e24b4
@@ -49,28 +49,6 @@ extern "C" {
2e24b4
 #include "modulemd/ModuleMetadata.hpp"
2e24b4
 #include "modulemd/ModuleProfile.hpp"
2e24b4
 
2e24b4
-
2e24b4
-namespace {
2e24b4
-
2e24b4
-/// Requires resolved goal
2e24b4
-/// Takes listInstalls() from goal and keep solvables with the solvable-name (<name>:<stream>:<context>) in query 
2e24b4
-void goal2name_query(libdnf::Goal & goal, libdnf::Query & query)
2e24b4
-{
2e24b4
-    auto pool = dnf_sack_get_pool(goal.getSack());
2e24b4
-    auto installList = goal.listInstalls();
2e24b4
-    std::vector<const char *> module_names;
2e24b4
-    Id id = -1;
2e24b4
-    while ((id = installList.next(id)) != -1) {
2e24b4
-        Solvable * s = pool_id2solvable(pool, id);
2e24b4
-        const char * name = pool_id2str(pool, s->name);
2e24b4
-        module_names.push_back(name);
2e24b4
-    }
2e24b4
-    module_names.push_back(nullptr);
2e24b4
-    query.addFilter(HY_PKG_NAME, HY_EQ, module_names.data());
2e24b4
-}
2e24b4
-
2e24b4
-}
2e24b4
-
2e24b4
 namespace std {
2e24b4
 
2e24b4
 template<>
2e24b4
@@ -651,14 +629,14 @@ ModulePackageContainer::Impl::moduleSolve(const std::vector<ModulePackage *> & m
2e24b4
     for (const auto &module : modules) {
2e24b4
         std::ostringstream ss;
2e24b4
         auto name = module->getName();
2e24b4
-        ss << "module(" << name << ":" << module->getStream() << ")";
2e24b4
+        ss << "module(" << name << ":" << module->getStream() << ":" << module->getVersion() << ")";
2e24b4
         Selector selector(moduleSack);
2e24b4
         bool optional = persistor->getState(name) == ModuleState::DEFAULT;
2e24b4
         selector.set(HY_PKG_PROVIDES, HY_EQ, ss.str().c_str());
2e24b4
         goal.install(&selector, optional);
2e24b4
         goalWeak.install(&selector, true);
2e24b4
     }
2e24b4
-    auto ret = goal.run(static_cast<DnfGoalActions>(DNF_IGNORE_WEAK | DNF_FORCE_BEST));
2e24b4
+    auto ret = goal.run(DNF_IGNORE_WEAK);
2e24b4
     if (debugSolver) {
2e24b4
         goal.writeDebugdata("debugdata/modules");
2e24b4
     }
2e24b4
@@ -666,7 +644,7 @@ ModulePackageContainer::Impl::moduleSolve(const std::vector<ModulePackage *> & m
2e24b4
     auto problemType = ModulePackageContainer::ModuleErrorType::NO_ERROR;
2e24b4
     if (ret) {
2e24b4
         problems = goal.describeAllProblemRules(false);
2e24b4
-        ret = goal.run(DNF_FORCE_BEST);
2e24b4
+        ret = goal.run(DNF_NONE);
2e24b4
         if (ret) {
2e24b4
             // Conflicting modules has to be removed otherwice it could result than one of them will
2e24b4
             // be active
2e24b4
@@ -680,20 +658,14 @@ ModulePackageContainer::Impl::moduleSolve(const std::vector<ModulePackage *> & m
2e24b4
                 activatedModules.reset();
2e24b4
             } else {
2e24b4
                 problemType = ModulePackageContainer::ModuleErrorType::ERROR;
2e24b4
-                Query query(moduleSack, Query::ExcludeFlags::IGNORE_EXCLUDES);
2e24b4
-                goal2name_query(goalWeak, query);
2e24b4
-                activatedModules.reset(new PackageSet(*query.runSet()));
2e24b4
+                activatedModules.reset(new PackageSet(std::move(goalWeak.listInstalls())));
2e24b4
             }
2e24b4
         } else {
2e24b4
             problemType = ModulePackageContainer::ModuleErrorType::ERROR_IN_DEFAULTS;
2e24b4
-            Query query(moduleSack, Query::ExcludeFlags::IGNORE_EXCLUDES);
2e24b4
-            goal2name_query(goal, query);
2e24b4
-            activatedModules.reset(new PackageSet(*query.runSet()));
2e24b4
+            activatedModules.reset(new PackageSet(std::move(goal.listInstalls())));
2e24b4
         }
2e24b4
     } else {
2e24b4
-        Query query(moduleSack, Query::ExcludeFlags::IGNORE_EXCLUDES);
2e24b4
-        goal2name_query(goal, query);
2e24b4
-        activatedModules.reset(new PackageSet(*query.runSet()));
2e24b4
+        activatedModules.reset(new PackageSet(std::move(goal.listInstalls())));
2e24b4
     }
2e24b4
     return make_pair(problems, problemType);
2e24b4
 }
2e24b4
@@ -735,14 +707,12 @@ ModulePackageContainer::query(std::string name, std::string stream, std::string
2e24b4
     query.available();
2e24b4
     std::ostringstream ss;
2e24b4
     ss << stringFormater(name) << ":" << stringFormater(stream);
2e24b4
-    ss << ":" << stringFormater(context);
2e24b4
+    ss << ":" << stringFormater(version) << ":";
2e24b4
+    ss << stringFormater(context);
2e24b4
     query.addFilter(HY_PKG_NAME, HY_GLOB, ss.str().c_str());
2e24b4
     if (!arch.empty()) {
2e24b4
         query.addFilter(HY_PKG_ARCH, HY_GLOB, arch.c_str());
2e24b4
     }
2e24b4
-    if (!version.empty()) {
2e24b4
-        query.addFilter(HY_PKG_VERSION, HY_GLOB, version.c_str());
2e24b4
-    }
2e24b4
     auto pset = query.runSet();
2e24b4
     Id moduleId = -1;
2e24b4
     while ((moduleId = pset->next(moduleId)) != -1) {
2e24b4
-- 
2e24b4
2.31.1
2e24b4