<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/test/integration/test-prefer-higher-priority-providers, branch 3.1.2</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=3.1.2</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=3.1.2'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2025-03-08T22:18:05Z</updated>
<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: Only enqueue shared dependencies at the package level</title>
<updated>2025-02-14T18:08:45Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-02-05T19:37:12Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=943562a4ed2ddc80b84466d85e821037937f8b5c'/>
<id>urn:sha1:943562a4ed2ddc80b84466d85e821037937f8b5c</id>
<content type='text'>
Dependencies shared by all versions are enqueued at the package
level, so avoid enqueuing duplicates at the version level. This
presumably has no meaningful impact on performance, potentially
a negative performance impact on some workloads as we now need
to find the duplicates again; it can become useful when there
is a lot of backtracking.

More importantly though this improves error messages, because
now we can say that "all versions of foo depend on X", rather
than saying "foo=1 depends on X" and you are left wondering
why we did not select "foo=2".

In this commit though, improved error messages are not implemented,
they depend on redesigning the reason tracking to use clauses.

Also the rationale tracking includes a lot more dependencies of
the form "pkg:arch=version -&gt; pkg:arch" which are annoying. Improved
error messages should fold them into one node.
</content>
</entry>
<entry>
<title>solver3: Reject reverse dependencies natively</title>
<updated>2025-02-14T18:04:56Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-02-05T20:31:53Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=b8918cb89ada945d92c720446177f1ef5185b5a5'/>
<id>urn:sha1:b8918cb89ada945d92c720446177f1ef5185b5a5</id>
<content type='text'>
Instead of utilizing the reverse depends functionality of the cache
and marking all possible reverse dependencies for removal, mark them
ourselves by keeping track of reverse-implication-clauses.

Notably, this improves the reverse dependency rejection substantially:
The previous RejectReverseDependencies() function did not handle
Provides.

For this to work correctly right now, we need to discover optional
clauses too when queuing them. This is somewhat suboptimal as we
technically we don't care if they become unsat, we just waste time
tracking them.

The tests get a bit awkward, but oh well, we use what we can
use.
</content>
</entry>
<entry>
<title>Fix test cases for non-amd64 architectures</title>
<updated>2024-05-28T10:12:00Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-05-28T10:12:00Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=32a503b97583ab227e9a34d7c3d3d30171c6bcf5'/>
<id>urn:sha1:32a503b97583ab227e9a34d7c3d3d30171c6bcf5</id>
<content type='text'>
These got broken by the recent solver3 changes by accident,
and we did not notice as I also broke the test suite detection
with the new statistics feature, hooray.
</content>
</entry>
<entry>
<title>test: Support the 3.0 solver in most existing test cases</title>
<updated>2024-05-24T15:01:35Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-05-19T18:04:47Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=b5997949909ee9d5e9981c8311aea97c7b2620fd'/>
<id>urn:sha1:b5997949909ee9d5e9981c8311aea97c7b2620fd</id>
<content type='text'>
Highlights:

- test-bug-618848-always-respect-user-requests: (Do not) Support 3.0 solver

  A manually installed package is never removed just because we request
  the removal of its dependency in solver3.

- test-bug-657695-resolver-breaks-on-virtuals: Support 3.0 solver

  For manually installed packages, solver 3.0 would require some
  new xserver-xorg-video-driver to Conflict+Replace+Provides the
  old one (once the logic is implemented), but that does seem
  reasonable.

- test-bug-720597-build-dep-purge: Support 3.0 solver

  This needs a simple aptmark auto because pkga is removed by the
  build-dep. But further adjustments are necessary because it weirdly
  tested for no autoremovable packages before installing pkgc.

- test-bug-960705-*: Support 3.0 solver

  Bit awkward to deal with; notably the protect to conflict doesn't
  actually work anymore and that is a feature these days.
</content>
</entry>
<entry>
<title>tests: support spaces in path and TMPDIR</title>
<updated>2015-12-19T22:04:34Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-12-15T16:20:26Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3abb6a6a1e485b3bc899b64b0a1b7dc2db25a9c2'/>
<id>urn:sha1:3abb6a6a1e485b3bc899b64b0a1b7dc2db25a9c2</id>
<content type='text'>
This doesn't allow all tests to run cleanly, but it at least allows to
write tests which could run successfully in such environments.

Git-Dch: Ignore
</content>
</entry>
<entry>
<title>Fix the test suite again</title>
<updated>2015-08-17T16:37:18Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2015-08-17T16:37:09Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=e7ebb41440cbe298b07c7fb7c6b20a64a17200f0'/>
<id>urn:sha1:e7ebb41440cbe298b07c7fb7c6b20a64a17200f0</id>
<content type='text'>
Gbp-Dch: ignore
</content>
</entry>
<entry>
<title>test exitcode as well as string equality</title>
<updated>2015-03-16T17:01:54Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-03-09T23:59:44Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=25b86db159fbc3c043628e285c0c1ef24dec2c6e'/>
<id>urn:sha1:25b86db159fbc3c043628e285c0c1ef24dec2c6e</id>
<content type='text'>
We use test{success,failure} now all over the place in the framework, so
its only consequencial to do this in the situations in which we test for
a specific output as well.

Git-Dch: Ignore
</content>
</entry>
<entry>
<title>try all providers in order if uninstallable in MarkInstall</title>
<updated>2013-06-09T13:11:33Z</updated>
<author>
<name>David Kalnischkies</name>
<email>kalnischkies@gmail.com</email>
</author>
<published>2013-05-21T19:50:30Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=66706285737a895d0baf64c2387c58d5211be4f9'/>
<id>urn:sha1:66706285737a895d0baf64c2387c58d5211be4f9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix priority sorting by prefering higher in MarkInstall</title>
<updated>2013-06-09T13:11:01Z</updated>
<author>
<name>David Kalnischkies</name>
<email>kalnischkies@gmail.com</email>
</author>
<published>2013-05-21T16:06:17Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=69335858269845904635c592268cf9519e75c1a9'/>
<id>urn:sha1:69335858269845904635c592268cf9519e75c1a9</id>
<content type='text'>
Used to work until a certain (here unnamed) person came along and used
the wrong operator causing low-priority packages to be sorted above
high-priority packages while choosing a provider in commit
 2b5c35c7bb915dbd46fefd7c79f05364ba22f93b from Nov 2011
</content>
</entry>
</feed>
