<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg, branch 2.9.5</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=2.9.5</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=2.9.5'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2024-06-13T15:44:05Z</updated>
<entry>
<title>Merge branch 'edsp-source-version' into 'main'</title>
<updated>2024-06-13T15:44:05Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2024-06-13T15:44:05Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3bfb483c8013eeb9bd3ce36aab1ef937ac9ffa6d'/>
<id>urn:sha1:3bfb483c8013eeb9bd3ce36aab1ef937ac9ffa6d</id>
<content type='text'>
edsp: Parse source version from the Source-Version field

See merge request apt-team/apt!354</content>
</entry>
<entry>
<title>solver3: Order obsolete choices last</title>
<updated>2024-06-13T13:10:06Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-06-06T09:19:04Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6708203296911800caf94bb94ce204d3a39af0bd'/>
<id>urn:sha1:6708203296911800caf94bb94ce204d3a39af0bd</id>
<content type='text'>
This has two aspects:

1. For a dependency A | B | C we order the obsolete packages last,
   that is, if A is obsolete, this gets reordered to B | C | A,
   such that we try to pick non-obsolete packages first to ease
   upgrade calculation.

2. When comparing two dependencies, we order dependencies into three
   groups: First we satisfy dependencies mentioning only non-installed
   (NEW) packages, then we satisfy "normal" dependencies, and finally
   we satisfy any dependencies mentioning obsolete packages.

   This means for example if you have obsolete libfoo1 and a new
   libfoo1t64, that we will see Depends: libfoo1t64 before any
   Depends: libfoo1 (which may expand to libfoo1 | libfoo1t64),
   so we effectively will have selected "replacement" packages
   this way already before getting to older packages where we
   would have to choose between the obsolete package and its
   replacement.
</content>
</entry>
<entry>
<title>solver3: Remove no longer necessary comparisons</title>
<updated>2024-06-13T13:10:06Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-06-06T09:17:09Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3b5379e547dfb655d764f7eb1ac7eaa5b2d34d6d'/>
<id>urn:sha1:3b5379e547dfb655d764f7eb1ac7eaa5b2d34d6d</id>
<content type='text'>
Comparing the size of work items is not strictly needed; we check
if items have a single or no solution and propagate them early on,
but it doesn't matter much if we solve A|B or C|D|E first. This
will allow us to get rid of all the resizing business later on,
and switch to using literal watching where we only watch one of
the literals on the right hand side.

Likewise, the upgrade case mattered initially in testing, but seems
to have resolved itself.
</content>
</entry>
<entry>
<title>solver3: Group work items</title>
<updated>2024-06-13T13:10:06Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-05-25T07:45:39Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=102017ecaa01a733a0860a62edae60cb0ab0220e'/>
<id>urn:sha1:102017ecaa01a733a0860a62edae60cb0ab0220e</id>
<content type='text'>
Our backtracking is chronological, so we will first
try alternative choices or skip optional items in
later groups.

So installing manually installed packages before automatically
installed ones allows manually installed packages to remove
automatically installed packages easily. If we did automatic
packages first, we'd keep back upgrades for manual packages
or change choices for their dependencies, or would have to
backtrack harder to get back to the right decision level.
That's silly.

Ordering automatically installed packages last also allows
us to calculate autoremovable packages. Since we will have
installed all dependencies from manually installed packages
by the point where we get to automatically installed packages,
everything that will be installed in those Auto groups is
inherently garbage.
</content>
</entry>
<entry>
<title>solver3: Do not dump sizes that are clearly pointers</title>
<updated>2024-06-13T12:32:32Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-05-25T11:46:52Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=5502c0bc5754499e82a1e03ca5a24779adb6f485'/>
<id>urn:sha1:5502c0bc5754499e82a1e03ca5a24779adb6f485</id>
<content type='text'>
We use a union here, but we don't know if we last stored a pointer,
so let's just reject clearly non-sizes. Generally this will work fine
-- you will not have enough choices in a dependency that you can
construct a valid pointer to a Version*, especially given that
any Version * &gt; sizeof(pkgCache::Header) already, given it is
in the cache.
</content>
</entry>
<entry>
<title>edsp: Parse source version from the Source-Version field</title>
<updated>2024-05-30T07:53:08Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-05-30T07:51:13Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=c79bf305f6c3ba92972cd9c39f8d28c396c63bc4'/>
<id>urn:sha1:c79bf305f6c3ba92972cd9c39f8d28c396c63bc4</id>
<content type='text'>
EDSP uses the Source-Version field instead of storing the source
version in the Source field with the package name, adjust our
parser accordingly.

Use the override in the edspLikeListParser to do so rather than
dumb this into the correct place in the debListParser.
</content>
</entry>
<entry>
<title>solver3: Fix translations of removals for marked install</title>
<updated>2024-05-24T15:01:55Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-05-23T11:24:25Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=4a2b89be6fa73b9c193d5b70e11a9305272efc3e'/>
<id>urn:sha1:4a2b89be6fa73b9c193d5b70e11a9305272efc3e</id>
<content type='text'>
We also need to issue a MarkDelete() if the package is marked for
installation currently but should not be, not only if it did not
have a previous version.

This fixes the final test in test-multiarch-barbarian, the others
only needed adjustments to mark all packages as automatic.
</content>
</entry>
<entry>
<title>solver3: Actually restore unsolved items rather than solved ones</title>
<updated>2024-05-24T15:01:55Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-05-21T14:57:56Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=aaa9e415ce48964726401462767d6038da6d82e7'/>
<id>urn:sha1:aaa9e415ce48964726401462767d6038da6d82e7</id>
<content type='text'>
When restoring previously solved items, we try to restore items
that have become unsolved again by skipping items that have a
solved solution.

Well at least we thought we did, but we accidentally had a "not"
in there that inverted the meaning, hence we lost work items on
backtracking.

This mostly did not seem to have caused any issues, I stumbled
over it while trying to add `autoremove` listings to `upgrade`,
but fixing it also fixes:

    test-ubuntu-bug-1130419-prefer-installed-ma-same-siblings

This used to say "E: Broken packages", meaning the solver lost
a non-optional install request and the 2nd stage solver caught
an incomplete solution.

Also test-bug-735967-lib32-to-i386-unavailable restores the legacy
solver behavior, so win win?
</content>
</entry>
<entry>
<title>solver3: Use stable sort</title>
<updated>2024-05-24T15:01:55Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-05-21T11:19:41Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=808f51e800a9d6a834723fe1d1fdff98ee14d7b5'/>
<id>urn:sha1:808f51e800a9d6a834723fe1d1fdff98ee14d7b5</id>
<content type='text'>
While it seems that libstdc++ is using stable_sort for sort,
we should make this explicit: We don't want items in our queues
to move ahead of earlier items of the same priority.

i.e. consider dependencies, they are grouped by package, we don't
want the sort algorithm to move B=2 ahead if A|B (which expands to
A=2|A=1|B=2|B=1).
</content>
</entry>
<entry>
<title>solver3: Solve optional dependencies before optional packages</title>
<updated>2024-05-24T15:01:55Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-05-20T12:59:58Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=cd245a57f273d3c069543c19d6ac31c84879ce7b'/>
<id>urn:sha1:cd245a57f273d3c069543c19d6ac31c84879ce7b</id>
<content type='text'>
This somewhat improves reliability of not breaking Recommends, e.g.
if the Recommends gets tightened. One test case enabled by this now
is the test-resolver-provider-exchange, which with a simple change
to allow removal of automatically installed packages works now.
</content>
</entry>
</feed>
