From 365fa9afb8a49c2360bf7cfd2a2c2557522f85e5 Mon Sep 17 00:00:00 2001 From: Ken Brown Date: Mon, 12 Mar 2018 09:13:41 -0400 Subject: [PATCH 2/2] Don't put inaccessible packageversions in the package database In a local install, libsolv might choose an inaccessible version for install. Change SolverSolution::trans2db() so that such a version is never used. --- libsolv.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libsolv.cc b/libsolv.cc index 604ff7e..1342f3b 100644 --- a/libsolv.cc +++ b/libsolv.cc @@ -637,6 +637,8 @@ void SolverSolution::trans2db() const { packagedb db; + std::vector inaccessible; + // First reset all packages to the "no change" state for (packagedb::packagecollection::iterator i = db.packages.begin(); i != db.packages.end(); i++) @@ -667,6 +669,8 @@ SolverSolution::trans2db() const { pkg->desired = pkg->default_version = pv; pkg->pick(true); + if (!pv.accessible()) + inaccessible.push_back (pkg); } else // source package pkg->srcpick(true); @@ -680,6 +684,14 @@ SolverSolution::trans2db() const break; } } + for (std::vector::iterator i = inaccessible.begin(); + i != inaccessible.end(); i++) + { + packagemeta *pkg = *i; + // Reset pkg to its "no change" state. + pkg->desired = pkg->default_version = pkg->installed; + pkg->pick(false); + } } void -- 2.16.2