diff options
| author | Julian Andres Klode <julian.klode@canonical.com> | 2024-07-02 18:53:33 +0200 |
|---|---|---|
| committer | Julian Andres Klode <julian.klode@canonical.com> | 2024-07-02 20:10:33 +0200 |
| commit | ae141932d8b434098e3f77c75c428ca8caff9a6e (patch) | |
| tree | 0d2953dd633c8df6581fff317444f2d8684f55d6 | |
| parent | 8c13d9cb1c38ebb52cf6e1c8c7561c5c5d87c970 (diff) | |
solver3: Only demote obsolete packages in choices for upgrades
If we are not upgraded, we should continue to keep the installed
package installed if possible.
| -rw-r--r-- | apt-pkg/solver3.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/apt-pkg/solver3.cc b/apt-pkg/solver3.cc index 29bd3a115..54f66ccd2 100644 --- a/apt-pkg/solver3.cc +++ b/apt-pkg/solver3.cc @@ -64,8 +64,9 @@ struct APT::Solver::CompareProviders3 /*{{{*/ // Try obsolete choices only after exhausting non-obsolete choices such that we install // packages replacing them and don't keep back upgrades depending on the replacement to // keep the obsolete package installed. - if (auto obsoleteA = Solver.Obsolete(A), obsoleteB = Solver.Obsolete(B); obsoleteA != obsoleteB) - return obsoleteB; + if (upgrade) + if (auto obsoleteA = Solver.Obsolete(A), obsoleteB = Solver.Obsolete(B); obsoleteA != obsoleteB) + return obsoleteB; // Prefer MA:same packages if other architectures for it are installed if ((AV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same || (BV->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same) |
