<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/test, branch 3.1.8</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=3.1.8</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=3.1.8'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2025-10-02T10:49:58Z</updated>
<entry>
<title>Add history undo, redo, and rollback features</title>
<updated>2025-10-02T10:49:58Z</updated>
<author>
<name>Simon Johnsson</name>
<email>simon.johnsson@canonical.com</email>
</author>
<published>2025-10-02T10:49:58Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=a65dca5d5e9b4bc71722bc91a5641126a1b0ec61'/>
<id>urn:sha1:a65dca5d5e9b4bc71722bc91a5641126a1b0ec61</id>
<content type='text'>
</content>
</entry>
<entry>
<title>test-history: Adjust for as-installed testing</title>
<updated>2025-09-30T11:01:28Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-09-30T11:01:28Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=b1e10340d5b9cd6fd12f968b5ddd9b7a70b827cb'/>
<id>urn:sha1:b1e10340d5b9cd6fd12f968b5ddd9b7a70b827cb</id>
<content type='text'>
When testing as installed, we inadvertently do not replace
the command-line with dummy in the "apt history-list"
command.
</content>
</entry>
<entry>
<title>history: Handle transactions without any changes</title>
<updated>2025-09-26T16:49:53Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-09-26T16:49:53Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=0c1fa8bae3a09f9efd1b30ebc3a5dacbbe58f193'/>
<id>urn:sha1:0c1fa8bae3a09f9efd1b30ebc3a5dacbbe58f193</id>
<content type='text'>
For some reason I have them in my log file.
</content>
</entry>
<entry>
<title>test-history: Do not fully remove the command line</title>
<updated>2025-09-26T16:48:40Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-09-26T16:48:40Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=d7aac1d0ebfb847d3dc4d990a4d9c3d491f34aaa'/>
<id>urn:sha1:d7aac1d0ebfb847d3dc4d990a4d9c3d491f34aaa</id>
<content type='text'>
This will particularly be useful in the next commit; just
strip the path form the commandline.
</content>
</entry>
<entry>
<title>History Command and Parsing</title>
<updated>2025-09-26T16:18:42Z</updated>
<author>
<name>Simon Johnsson</name>
<email>simon.johnsson@canonical.com</email>
</author>
<published>2025-09-26T16:18:42Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=66962bee233b617e4a9ce436f9b26875511b35e6'/>
<id>urn:sha1:66962bee233b617e4a9ce436f9b26875511b35e6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Support kernel images with + in uname in kernel autoremove test</title>
<updated>2025-09-02T18:50:04Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2025-09-02T17:04:14Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3c9399e643a07074d47c9bceca88e8d43ff55d36'/>
<id>urn:sha1:3c9399e643a07074d47c9bceca88e8d43ff55d36</id>
<content type='text'>
autopkgtest run on stable can have an uname like "6.12.41+deb13-amd64".
The +deb13 being relatively new in the package name. The code doing the
autoremoval has no problem with it and its a legal package name, but
the test that wants to check if the right regexes are generated does not
escape the + correctly (aka at all) so it isn't finding the regex it is
looking for failing the test.
</content>
</entry>
<entry>
<title>Show command in test failure messages if default is overridden</title>
<updated>2025-09-02T18:50:04Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2025-09-02T16:48:49Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=4f162c2f63796411467b816ccd80a20b2c248e72'/>
<id>urn:sha1:4f162c2f63796411467b816ccd80a20b2c248e72</id>
<content type='text'>
Tests usually print the command they run, but it can be overridden with
a chosen message to make clearer what is actually tested. To debug
failures it can be useful to know the command run through especially if
its a partly generated command depending on the test environment
(like in the kernel autoremove test).
</content>
</entry>
<entry>
<title>solver3: Allow any downloadable version to mark a package as not obsolete</title>
<updated>2025-08-26T11:41:35Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-07-22T18:34:34Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=539a3dfcfdf30e552a6374ee478a98e16ab7fa7d'/>
<id>urn:sha1:539a3dfcfdf30e552a6374ee478a98e16ab7fa7d</id>
<content type='text'>
Lots of people have pinned an older version that is no longer
installable, or more common yesterday, we saw a lot of people
who seemingly manually installed a newer version of a deb than
in the repositories, causing the package to be considered obsolete,
which does not make much sense.

Oops: 4c39d922-410f-11f0-bbf9-fa163ec44ecd
Oops: a64054f6-4140-11f0-bbfd-fa163ec44ecd
Oops: a32196c1-661d-11f0-a97c-fa163ec8ca8c
</content>
</entry>
<entry>
<title>solver3: Sort dependency targets against current alternative</title>
<updated>2025-08-26T11:41:35Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-07-22T17:58:14Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=db78e2f8eafb1009bd47e488fc39d8b420f4c749'/>
<id>urn:sha1:db78e2f8eafb1009bd47e488fc39d8b420f4c749</id>
<content type='text'>
Instead of inadvertently sorting dependency targets against
the first alternative in an or group, sort them against the
current alternative as we should.

Otherwise we ended up sorting

    gnome-shell | notification-daemon

With

    Package: notification-daemon

    Package: awesome
    Provides: notification-daemon

into

    gnome-shell | awesome | notification-daemon
                &lt;-we sorted this part wrongly-&gt;

This fixes a minor difference in test-release-candidate-switching
in one case, but not the other where the difference was actually
caused by the loss of install argument ordering information in
the new solver, so just flip the arguments so both solvers produce
the same outcome.
</content>
</entry>
<entry>
<title>Fix stuck acquire queues on partial server errors</title>
<updated>2025-06-24T16:47:18Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-06-24T14:52:06Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=5378c38db0a5dedef34fdf35e357f76c104d717a'/>
<id>urn:sha1:5378c38db0a5dedef34fdf35e357f76c104d717a</id>
<content type='text'>
When a server responds with two InRelease files, but one
is good, and the other indicates a temporary error, we
queued the other indices from the good repository for
downloading and then queued the retry.

The resulting queue ended up with items having fetchAfter=0
before the item with fetchAfter=&lt;something&gt;, causing the
Run() loop to not detect a stuck queue.

Change the order of the queue such that the highest retry-after
items comes first; this ensures that we always see stuck queues.

This of course changes the behavior of retries in that if one
file fails temporarily we block the entire server. This does
seem more beneficial in the common case - if one file fails,
probably all of them fail, and there's no point bombarding
the server with requests for indices from good repositories
until all have failed.

The actual root cause is more that the remaining items are
Enqueued like this:

1. Enqueue jammy/InRelease (delayed)
2. Enqueue jammy-updates/main all Packages

The resulting queue ended up being:

    jammy-updates/main all Packages
    jammy/InRelease (delayed)

But Enqueue() only calls Cycle() when there are no items in
the queue already - after all, any item that is already running
will call Cycle() eventually. Or so was the case until we added
the retry-after handling.

It's unclear why we don't Cycle() all the time when enqueuing
a new item, given that our pipeline might not be filled yet,
and we could send the request to the server while waiting for
data on a running item.

Trying to always Cycle() however led to regressions that still
need investigating. Given that, this solution certainly is the
more easy to reason about one.

LP: #2003851
</content>
</entry>
</feed>
