diff options
Diffstat (limited to 'apt-pkg/solver3.cc')
| -rw-r--r-- | apt-pkg/solver3.cc | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/apt-pkg/solver3.cc b/apt-pkg/solver3.cc index 5469a1881..d9ed1a7bb 100644 --- a/apt-pkg/solver3.cc +++ b/apt-pkg/solver3.cc @@ -231,13 +231,24 @@ bool APT::Solver::Work::operator<(APT::Solver::Work const &b) const return false; } -std::string APT::Solver::Clause::toString(pkgCache &cache) const +std::string APT::Solver::Clause::toString(pkgCache &cache, bool pretty) const { std::string out; - if (auto Pkg = reason.Pkg(cache); not Pkg.end()) - out.append(Pkg.FullName()); - if (auto Ver = reason.Ver(cache); not Ver.end()) - out.append(Ver.ParentPkg().FullName()).append("=").append(Ver.VerStr()); + out.append(reason.toString(cache)); + if (dep && pretty) + { + out.append(" ").append(pkgCache::DepIterator(cache, dep).DepType()).append(" "); + for (auto dep = pkgCache::DepIterator(cache, this->dep); not dep.end(); ++dep) + { + out.append(dep.TargetPkg().FullName(true)); + if (dep.TargetVer()) + out.append(" (").append(dep.CompType()).append(" ").append(dep.TargetVer()).append(")"); + if (!(dep->CompareOp & pkgCache::Dep::Or)) + break; + out.append(" | "); + } + return out; + } out.append(" -> "); for (auto var : solutions) out.append(" | ").append(var.toString(cache)); |
