<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt, 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-13T19:06:59Z</updated>
<entry>
<title>Release 2.9.5</title>
<updated>2024-06-13T19:06:59Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-06-13T19:06:59Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=053c889838bdc2c6efd3a542ec3dfd547a5df53e'/>
<id>urn:sha1:053c889838bdc2c6efd3a542ec3dfd547a5df53e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'snapshot-typo' into 'main'</title>
<updated>2024-06-13T15:57:29Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2024-06-13T15:57:29Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6e34c130c5a47d7b193f39654a5a535cb8f8d289'/>
<id>urn:sha1:6e34c130c5a47d7b193f39654a5a535cb8f8d289</id>
<content type='text'>
Fix spelling of @SNAPSHOTID@ in apt.conf.5.xml

See merge request apt-team/apt!353</content>
</entry>
<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>Merge branch 'solver3-group' into 'main'</title>
<updated>2024-06-13T13:48:52Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2024-06-13T13:48:52Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=b8dfc6c3f3e5e71c1268c69d26278805eb3c5424'/>
<id>urn:sha1:b8dfc6c3f3e5e71c1268c69d26278805eb3c5424</id>
<content type='text'>
solver3: Group work items; and helpers

See merge request apt-team/apt!356</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>Make the failure mode for non-executable tests stronger</title>
<updated>2024-06-13T12:32:32Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-06-06T09:40:14Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=bfb9f2124b8f9da48b53d279278de3f8f0a00b82'/>
<id>urn:sha1:bfb9f2124b8f9da48b53d279278de3f8f0a00b82</id>
<content type='text'>
When a test-* file is created but not executable, we'd ignore
the argument and then our subprocess would run the entire
test suite itself, sequentially. Silly.

Let's just see if the file exists instead, then the test will
fail.
</content>
</entry>
<entry>
<title>Merge branch 'gpgv-options' into 'main'</title>
<updated>2024-06-13T12:31:33Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2024-06-13T12:31:33Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=e3ae8e27027dea024ecd2f167e7a3663fdc35174'/>
<id>urn:sha1:e3ae8e27027dea024ecd2f167e7a3663fdc35174</id>
<content type='text'>
Check gpgv --dump-options for --assert-pubkey-algo support

See merge request apt-team/apt!355</content>
</entry>
</feed>
