From a20242cf3a7321e78cfd4afd892d67255d8282ba Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Thu, 30 Jan 2025 13:04:47 +0100 Subject: solver3: Soft unit propagation for optional items If both items are optional, unit items should be processed first. --- apt-pkg/solver3.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'apt-pkg') diff --git a/apt-pkg/solver3.cc b/apt-pkg/solver3.cc index da80222e8..b876636c6 100644 --- a/apt-pkg/solver3.cc +++ b/apt-pkg/solver3.cc @@ -187,8 +187,13 @@ bool APT::Solver::Work::operator<(APT::Solver::Work const &b) const return not b.optional && b.size < 2; if (group != b.group) return group > b.group; - if (optional && b.optional && reason.empty() != b.reason.empty()) - return reason.empty(); + if (optional && b.optional) + { + if ((size < 2) != (b.size < 2)) + return b.size < 2; + if (reason.empty() != b.reason.empty()) + return reason.empty(); + } // An optional item is less important than a required one. if (optional != b.optional) return optional; -- cgit v1.2.3-70-g09d2