diff options
| author | Julian Andres Klode <jak@debian.org> | 2025-10-25 21:25:23 +0200 |
|---|---|---|
| committer | Julian Andres Klode <jak@debian.org> | 2025-10-25 22:16:54 +0200 |
| commit | 8cd4bd5f708b69d536395675da4fce18d7f9c3f3 (patch) | |
| tree | 9373aabdda0f00bd457b48ef9548bdcb758b7205 /apt-pkg/solver3.cc | |
| parent | 74636b64a7ee56637a3ce4ddc1d060ca9f8b77e1 (diff) | |
solver3: Do not lose notion that we backtracked
Record a silly string if we backtracked such that we are aware
of it. We need to handle this in a broader fashion, but
this was at least breaking test-apt-never-markauto-sections
with remove-manual
LP: #2129819
Diffstat (limited to 'apt-pkg/solver3.cc')
| -rw-r--r-- | apt-pkg/solver3.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/apt-pkg/solver3.cc b/apt-pkg/solver3.cc index 65e3940b4..4d7e0ff0b 100644 --- a/apt-pkg/solver3.cc +++ b/apt-pkg/solver3.cc @@ -1007,6 +1007,7 @@ void APT::Solver::UndoOne() auto &state = (*this)[solvedItem.assigned]; state.decision = Decision::NONE; state.reason = nullptr; + state.reasonStr = nullptr; state.depth = 0; } @@ -1071,6 +1072,8 @@ bool APT::Solver::Pop() if (not choice.empty() && not Enqueue(choice, false, {})) return false; + (*this)[choice].reasonStr = "backtracked"; + if (unlikely(debug >= 2)) std::cerr << "Backtracked to choice " << choice.toString(cache) << "\n"; @@ -1366,7 +1369,8 @@ bool APT::Solver::ToDepCache(pkgDepCache &depcache) const } else if (P->CurrentVer || depcache[P].Install()) { - depcache.MarkDelete(P, false, 0, not(*this)[P].reason); + bool automatic = (not (*this)[P].reason) && (not (*this)[P].reasonStr); + depcache.MarkDelete(P, false, 0, automatic); depcache[P].Marked = 0; depcache[P].Garbage = 1; } |
