<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/solver3.cc, branch 2.9.33</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=2.9.33</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=2.9.33'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2025-03-12T17:54:25Z</updated>
<entry>
<title>solver3: Fix test-resolve-by-keep-new-recommend</title>
<updated>2025-03-12T17:54:25Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-12T17:47:55Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=460753f991ca42c3c4a5ed494038db76c55e2a08'/>
<id>urn:sha1:460753f991ca42c3c4a5ed494038db76c55e2a08</id>
<content type='text'>
Reorder the if branches a bit to simplify the understanding
of the promotions, and allow us to keep track of which
dependency existed in the installed version.

Change the rule for promoting new recommends to only promote
new recommends to depends in *upgrade* and not *dist-upgrade*
per the test-resolve-by-keep-new-recommends test case.

This makes some sense: In a dist-upgrade, the solver could
otherwise decide to remove an installed package if both the
following hold:

(1) something needs the upgraded version | something else
(2) the upgraded version is not installable due to unsat recommends
</content>
</entry>
<entry>
<title>solver3: Fix Recommends/Suggests vs Enhances confusion</title>
<updated>2025-03-12T17:52:16Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-12T17:34:48Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=a4ce187b40f3bbd110a7cc35f9a5af5a8b7b0c9e'/>
<id>urn:sha1:a4ce187b40f3bbd110a7cc35f9a5af5a8b7b0c9e</id>
<content type='text'>
We accidentally considered an Enhances a reason to keep
a package installed, which of course it is not, fix the
determination of "existing soft dependency" to only include
soft dependencies that should keep a package installed in
the autoremover to solve the issue.

This also fixes edsp/mantic-upgrade-rel-to-2024-05-29.edsp
to not install llvm-13-dev for clang-13 which is an installed
package with no upgrade.

Also ensure we stop after the first match; the DependsList()
is ordered by decreasing priority and we don't want to override
Recommends by Suggests in case a package declares both...

LP: #2101800
</content>
</entry>
<entry>
<title>solver3: Correctly determine 'same' or groups</title>
<updated>2025-03-10T21:47:39Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-10T21:05:52Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=8a6b694108f41afd1e6cdba4c91481697f9b3004'/>
<id>urn:sha1:8a6b694108f41afd1e6cdba4c91481697f9b3004</id>
<content type='text'>
We incorrectly used the DependencyData of the first or group
member, however that only checked that the first or group member
was the same and that both either had a next member or not.
</content>
</entry>
<entry>
<title>solver3: Print correct reason when registering dependency</title>
<updated>2025-03-10T21:33:51Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-10T20:24:09Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=de095b76b0562c4648b03406349e9914829e5590'/>
<id>urn:sha1:de095b76b0562c4648b03406349e9914829e5590</id>
<content type='text'>
This is relevant when debugging common dependencies.
</content>
</entry>
<entry>
<title>solver3: Fix detection of satisfied recommends for pkg variables</title>
<updated>2025-03-10T21:33:51Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-10T18:19:21Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=ae7e10d189a3749d4220480dbbb1da907eb65f4c'/>
<id>urn:sha1:ae7e10d189a3749d4220480dbbb1da907eb65f4c</id>
<content type='text'>
This only worked for version literals lol
</content>
</entry>
<entry>
<title>solver3: Do not prefer new installs over manually installed obsoletes</title>
<updated>2025-03-09T13:53:53Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-09T13:52:53Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=5daf6dbfd272be2f8e3c59d4bab4be8c119b7aa1'/>
<id>urn:sha1:5daf6dbfd272be2f8e3c59d4bab4be8c119b7aa1</id>
<content type='text'>
Only move obsolete packages last that are automatically installed,
as we don't want to remove manually installed obsolete packages.

Add some missing const annotations to the operator[] arguments as
well that were needed.

LP: #2100247
</content>
</entry>
<entry>
<title>solver3: Verbose error messages</title>
<updated>2025-03-08T22:18:05Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-06T19:07:30Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3967b75ae4a10d0d79560dfecb8eb210aad4f4f2'/>
<id>urn:sha1:3967b75ae4a10d0d79560dfecb8eb210aad4f4f2</id>
<content type='text'>
Introduce a new function, LongWhyStr() that returns a longer
reason for why something is being installed (or not).

This does the same path walk as the other function does, but
it renders the clauses at each level, and one per line, so
the whole output is a lot more informative.

It is a separate function to keep the existing debug messages
use the simple single line implication graph

We remove the other special case in AddWork() for empty solutions
to mke use of the general case in Solve() instead, and then adapt
the case in Solve() to the same case as in Enqueue(). This also
happens to fix the bug that when we encountered an empty clause
we just printed the clause had no solution, but not how we got
to install the package with the clause.

Adapt the test suite for the changes which is an annoying amount
of paperwork.
</content>
</entry>
<entry>
<title>solver3: bestReason: Only find actual assignments</title>
<updated>2025-03-07T10:24:39Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-07T10:20:18Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=8d8d8441f0a4974cb48bbc08a0a175886d569b1d'/>
<id>urn:sha1:8d8d8441f0a4974cb48bbc08a0a175886d569b1d</id>
<content type='text'>
I marked exim4-daemon-light for install, which marked
exim4-daemon-heavy for not install, but now in

postfix Conflicts: mail-transport-agent

we saw "not exim4-daemon-heavy" as the reason for not installing
postfix. Oh noes.
</content>
</entry>
<entry>
<title>solver3: Support pretty printing clauses</title>
<updated>2025-03-06T19:07:00Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-06T19:07:00Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=142d6499b51451d57fc050c71ffcfb8338e02b7e'/>
<id>urn:sha1:142d6499b51451d57fc050c71ffcfb8338e02b7e</id>
<content type='text'>
This will print the underlying dependency which is nicer to
read.
</content>
</entry>
<entry>
<title>solver3: refactor: Return inserted Clause in AddWork()</title>
<updated>2025-03-06T19:06:40Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-02-20T11:21:42Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=7194a6b39c2aa6f1006630975a1bf4ffc3c9daf2'/>
<id>urn:sha1:7194a6b39c2aa6f1006630975a1bf4ffc3c9daf2</id>
<content type='text'>
This avoids relying on the inserted clause being at the back
of the clauses vector.
</content>
</entry>
</feed>
