<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/solver3.cc, branch 2.9.13</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=2.9.13</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=2.9.13'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2024-11-02T12:17:11Z</updated>
<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>
<entry>
<title>solver3: Move needsRescore from Reject to Enqueue()</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:08:13Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=835fd787c24c496516965eb59fef81cbd1e304cc'/>
<id>urn:sha1:835fd787c24c496516965eb59fef81cbd1e304cc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>solver3: Remove obsolete checks</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:03:15Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=b4f43e48994bec07a9b5aa38d21e3fd350912d16'/>
<id>urn:sha1:b4f43e48994bec07a9b5aa38d21e3fd350912d16</id>
<content type='text'>
These checks are no longer needed since Enqueue() ensures the
correctness for us.
</content>
</entry>
<entry>
<title>solver3: Introduce new Assume() and Enqueue() helpers and use them</title>
<updated>2024-11-02T09:23:15Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-08-01T06:51:37Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=c1f69a64fd5070723ef425cc1255cde2a28966ad'/>
<id>urn:sha1:c1f69a64fd5070723ef425cc1255cde2a28966ad</id>
<content type='text'>
These are taken roughly from the MiniSAT paper. We still have a bit
to go in actually encoding all clauses so the reasons are still
variables, and Assume() isn't fully working yet.

Adjust the existing Install()/Reject() code to use these functions,
we already see additional lines in the log that we failed to log
before, and this ensures more consistency.

This is sort of still the wrong direction: Install()/Reject() do the
propagation too; but that is tbd.
</content>
</entry>
<entry>
<title>solver3: Rename Reason to Var</title>
<updated>2024-11-02T09:23:15Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-08-01T05:25:25Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=a5a7b6905dc021d9773229e47ec60367e3e606d8'/>
<id>urn:sha1:a5a7b6905dc021d9773229e47ec60367e3e606d8</id>
<content type='text'>
</content>
</entry>
</feed>
