<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/solver3.cc, branch 2.9.24</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=2.9.24</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=2.9.24'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2025-01-05T22:16:08Z</updated>
<entry>
<title>Drop usage of macro APT_OVERRIDE for simple override</title>
<updated>2025-01-05T22:16:08Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2024-12-26T19:41:53Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=f73593a4034d9eec0ec4466b8e173d4a4daece1f'/>
<id>urn:sha1:f73593a4034d9eec0ec4466b8e173d4a4daece1f</id>
<content type='text'>
We were rather inconsistent in using it and as our public headers
contain deduction guides (a c++17 feature) it seems silly to try to hide
a c++11 feature in a macro, so lets stop this charade and drop the
macro and while we are changing all these lines lets apply [[nodiscard]]
(another c++17 feature) and other suggestions from clang-tidy and
formatting for a little more consistency.
</content>
</entry>
<entry>
<title>solver3: Reject all non-candidates outright for strict pinning</title>
<updated>2024-12-03T08:44:18Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-11-02T11:45:07Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=8f317d97c9fb821e839342ae445c824207678eb7'/>
<id>urn:sha1:8f317d97c9fb821e839342ae445c824207678eb7</id>
<content type='text'>
Reimplement strict pinning by rejecting the non-candidates when
translating the problem from the depcache to the solver. This is
substantially better than restricting the list of alternatives for
an or group to only include allowed ones for debugging purposes,
albeit a bit slower.
</content>
</entry>
<entry>
<title>solver3: Add a missing debug level check</title>
<updated>2024-12-03T08:44:18Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-12-03T08:43:34Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3e5977ed7b4e6291fcd67df193a501754ec1de7f'/>
<id>urn:sha1:3e5977ed7b4e6291fcd67df193a501754ec1de7f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>solver3: Fix intransitivity of version comparison on upgrade</title>
<updated>2024-12-02T10:37:16Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-12-02T09:25:44Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=63721d8271430c1a0996c08cc96a3a7e6f69dc52'/>
<id>urn:sha1:63721d8271430c1a0996c08cc96a3a7e6f69dc52</id>
<content type='text'>
We only compared candidate to installed version, but candidate
should dominate all versions, otherwise we end up in the fancy
problem of elpa-notmuch in
  upgrade-noble-t64-remove-desktop-2024-03-29.edsp

Where we had three versions:

    not-installable 0.38.3-1ubuntu1
    candidate 0.38.2-1.1ubuntu2
    installed 0.38.2-1ubuntu2

And received an ordering:

    installed &gt; non-installable &gt; candidate

despite

    candidate &gt; installed

This is only visible with no-strict-pinning right now, as we are
otherwise filtering out invalid choices (and hence we only have
candidate and installed otherwise).
</content>
</entry>
<entry>
<title>solver3: Refactor Install(Ver) to PropagateInstall(Ver)</title>
<updated>2024-11-02T12:17:11Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-11-02T12:13:51Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=9f40a9a3251cc6b51bc50a5fe12c49a45a51aedd'/>
<id>urn:sha1:9f40a9a3251cc6b51bc50a5fe12c49a45a51aedd</id>
<content type='text'>
This is the first part of changing from Install() to Enqueue() for
installs, affecting only the versions. For packages, we still have
to resolve the group changing: When propagating cleanly, we don't
have the information as to which group the package was part of,
hence we are no longer able to queue the version selection of
upgrades before obsolete packages, for example, which needs
solving.
</content>
</entry>
<entry>
<title>solver3: Check whether installable versions are allowed</title>
<updated>2024-11-02T10:44:36Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-11-02T10:44:36Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=d7dc72dd8b23f3fbedb32f8cacd9ba920d78ccc3'/>
<id>urn:sha1:d7dc72dd8b23f3fbedb32f8cacd9ba920d78ccc3</id>
<content type='text'>
We only checked if they were still installable, but not if they
were allowed. We should removed the allowed version handling
altogether presumably - we should just mark non-allowed versions
as rejected early on.
</content>
</entry>
<entry>
<title>solver3: A version selected for install already is allowed.</title>
<updated>2024-11-02T10:22:45Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-11-02T10:22:45Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6c98593d3e8c99c2c0dfaf18e571e567fc6b5837'/>
<id>urn:sha1:6c98593d3e8c99c2c0dfaf18e571e567fc6b5837</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add a FIXME around the heap compaction</title>
<updated>2024-11-02T09:23:15Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-08-13T09:47:06Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=88cad6148797c399764333fbae3ade3036eb7dc3'/>
<id>urn:sha1:88cad6148797c399764333fbae3ade3036eb7dc3</id>
<content type='text'>
Our work heap is currently cleaned from deeper levels by
removing the entries from the heap and then remaking the
heap which is very inefficient.

We should mark the items as erased instead, and only do
the remove &amp; make_heap dance if we have a lot of erased
entries in there.

Possibly we maybe should use a structure that actually
allows removing entries, that is, an std::set, but
that warrants more investigation on performance aspects.
</content>
</entry>
<entry>
<title>solver3: Rename the 'dirty' bit to 'erased'</title>
<updated>2024-11-02T09:23:15Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-08-01T08:08:42Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=9d99322c14c44d73722bd580473abf67538b7c05'/>
<id>urn:sha1:9d99322c14c44d73722bd580473abf67538b7c05</id>
<content type='text'>
This captures the meaning better
</content>
</entry>
<entry>
<title>solver3: Remove the Reject() function, propagate in Enqueue() instead</title>
<updated>2024-11-02T09:23:15Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-08-01T07:57:28Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=cab40edc4040691fcadbddbdee77decf4bf20573'/>
<id>urn:sha1:cab40edc4040691fcadbddbdee77decf4bf20573</id>
<content type='text'>
Long term we should have a propagate queue, this is the minimal change
to keep the behavior identical, a first step on the road.
</content>
</entry>
</feed>
