diff options
| author | Julian Andres Klode <julian.klode@canonical.com> | 2025-03-06 20:07:00 +0100 |
|---|---|---|
| committer | Julian Andres Klode <julian.klode@canonical.com> | 2025-03-06 20:07:00 +0100 |
| commit | 142d6499b51451d57fc050c71ffcfb8338e02b7e (patch) | |
| tree | a7ad73940eed3126ce10e3e4e10f9c65edd770f2 /apt-pkg/solver3.cc | |
| parent | 7d5fe59c19edf06cbee3e0b34d71032322907ae6 (diff) | |
solver3: Support pretty printing clauses
This will print the underlying dependency which is nicer to
read.
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)); |
