<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/solver3.cc, branch 3.0.1</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=3.0.1</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=3.0.1'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2025-03-20T21:22:17Z</updated>
<entry>
<title>solver3: Do not install new packages for Suggests</title>
<updated>2025-03-20T21:22:17Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-20T20:15:14Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=81804cefd8c24c98e7a0216a9d4277516e19b6e2'/>
<id>urn:sha1:81804cefd8c24c98e7a0216a9d4277516e19b6e2</id>
<content type='text'>
As a followup to the previous commit, restore the exact behavior
of the old solver to break the Suggests on upgrade here by erasing
any choices not previously installed.

This ensures that the Suggests never installs any new package, but
it will still retain previously installed packages when solver3 is
doing autoremove.
</content>
</entry>
<entry>
<title>solver3: Handle previously satisfied Suggests last</title>
<updated>2025-03-20T21:22:17Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-20T19:47:28Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=83bad834c63604035c251f24ee9ea99dac1a1369'/>
<id>urn:sha1:83bad834c63604035c251f24ee9ea99dac1a1369</id>
<content type='text'>
In #2103556 we can see that avahi-daemon Suggests avahi-autoipd,
which is previously satisfied by dhcpcd-base due to a Provides;
that Provides has now been dropped; and solver3 keeps the update
back.

As in LP: #2102720 this is a Suggests and it seems wrong for the
Suggests to actually influence dependency choices and be able to
hold back updates.

Instead, satisfy previously satisfied Suggests at the end. For the
particular case in this bug report, this results in avahi-autoipd,
the real package, to be installed to keep the Suggests working
which needs further consideration whether that is the right choice
(we can argue either way), but in any case this is a better solution.

This in turn breaks the conkeror test which is a somewhat awkward
unrealistic test these days as it has no automatically installed
packages; because previously something must have had a Suggests
on say libdatrie1 or something that was processed first.

This would be fine before 5daf6dbfd272be2f8e3c59d4bab4be8c119b7aa1
but as of that commit we no longer rewrite

    conkeror Depends xulrunner-1.9 | xulrunner-1.9.1

into

    conkeror Depends xulrunner-1.9.1 | xulrunner-1.9

Because xulrunner-1.9 is manually installed. Mark xulrunner-1.9
as automatically installed to fix the test case.

The resulting behavior seems correct: If you manually want
xulrunner-1.9 specifically we should not replace it with
xulrunner-1.9.1; but if it's automatically installed we should.

LP: #2103556
</content>
</entry>
<entry>
<title>solver3: Record manual flag before discovering packages</title>
<updated>2025-03-20T13:32:42Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-20T13:30:54Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=109fdcac9a16ffa06b06366134dcaaef7e2b3379'/>
<id>urn:sha1:109fdcac9a16ffa06b06366134dcaaef7e2b3379</id>
<content type='text'>
When discovering packages we look at the manual flag to avoid
reordering obsolete manually installed packages last.

We inadvertently initialized that flag interlaced with discovering
packages so if we discovered packages depending on obsolete, but
manually installed, packages first, we were not aware they were
manually installed and demoted them.

I am struggling to come up with a test case for this as I can't
get the package objects in the cache to be in the right order for
the bug to trigger.

LP: #2102720
</content>
</entry>
<entry>
<title>solver3: Only hide ver-&gt;pkg clauses, not pkg-&gt;ver version selection ones</title>
<updated>2025-03-13T20:59:09Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-12T19:21:42Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=8ae73d1e037a6b9cb258b1ca505abce5681d9931'/>
<id>urn:sha1:8ae73d1e037a6b9cb258b1ca505abce5681d9931</id>
<content type='text'>
Particularly as Helmut pointed out we need to show which version we
selected for install if there is only one but there is a versioned
conflicts.

Reported-By: Helmut Grohne &lt;helmut@subdivi.de&gt; on IRC
</content>
</entry>
<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>
</feed>
