<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/test, branch 2.9.18</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=2.9.18</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=2.9.18'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2024-12-19T17:24:37Z</updated>
<entry>
<title>apt show: Add pinning information for --full</title>
<updated>2024-12-19T17:24:37Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-10-29T13:06:51Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=71727c2a761889855b3c1aaf4243649e98032f67'/>
<id>urn:sha1:71727c2a761889855b3c1aaf4243649e98032f67</id>
<content type='text'>
Add new fields `APT-Pin`, `APT-Candidate`, and `APT-Release` to the
output, same as in EDSP (limited to one release for now).
</content>
</entry>
<entry>
<title>Be more strict about which PAGER to execvp() directly</title>
<updated>2024-12-19T16:56:49Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-12-19T16:49:59Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=f6198e45b4cd924f390f977077d96b4545da0c91'/>
<id>urn:sha1:f6198e45b4cd924f390f977077d96b4545da0c91</id>
<content type='text'>
There could be | or ; or other stuff in PAGER that needs
special handling, let's encode a list of known-good characters
instead. This covers all known pagers.

You could also try to execvp() PAGER in its entirety and if
it fails with ENOENT fall back to the shell but then you
don't get correct error handling if the pager really doesn't
exist (in which case we should abort trying to page).
</content>
</entry>
<entry>
<title>Introduce automatic pager for read commands</title>
<updated>2024-12-18T09:25:24Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2024-12-16T16:05:40Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6e260e26e4cd671f781151e24d89a17b29a55530'/>
<id>urn:sha1:6e260e26e4cd671f781151e24d89a17b29a55530</id>
<content type='text'>
Automatically show the output of `show`, `policy`, `list`,
`search`, `showsrc` in a pager.

The pager setup is inspired by git's pager setup. Notably,
the pager is found using APT_PAGER and PAGER variables.

We wait for the pager to be setup somewhat correctly by
using a notify pipe to figure out whether execvp() was
succesful - then the pipe will read EOF as the other end
got closed by CLOEXEC during exec - or not, then the pipe
will contain an errno.

We set up the correct handlers for signals and exit to close
the fds and wait for the pager. Notably inside the signal
handler we cannot flush our streams, only close them, so
there is some duplication.

We call the InitOutputPager() function from inside the
various Do...() functions rather than setting it up
generally in InitOutput(). Doing so allows us to first
render the progress without a pager, and then setup
the pager for the content only which improves user
experience.

When we setup a pager we also take care to disable
standard input, as we should not be prompting users
while a pager is running (the pager will be reading
from the tty directly). We do this by dup2-ing() a
/dev/null over it; if we just close()d the fd, another
open() might reuse the fd number and problems could
occur.
</content>
</entry>
<entry>
<title>Fix out-of-bounds read in `apt show :`</title>
<updated>2024-12-16T12:15:28Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2024-12-16T12:15:28Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=19000fab15ab0b30c95a1bf6e034aa3c6bdc36cb'/>
<id>urn:sha1:19000fab15ab0b30c95a1bf6e034aa3c6bdc36cb</id>
<content type='text'>
We tried to access str.size() - 1 on a 0-sized string, which
does not work, and now that we build with assertions triggers
it.

Closes: #1090068
</content>
</entry>
<entry>
<title>methods/gpgv: Remove apt-key mentions</title>
<updated>2024-12-07T14:14:34Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2024-12-07T14:07:35Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=2bb8a2c71c12063e52220c3a3839e063f11a319d'/>
<id>urn:sha1:2bb8a2c71c12063e52220c3a3839e063f11a319d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Stop installing apt-key, make it a test suite helper</title>
<updated>2024-12-07T14:14:34Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2024-11-23T19:36:28Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=4b1665fc9df8b42832681adf88985ac762aedf9f'/>
<id>urn:sha1:4b1665fc9df8b42832681adf88985ac762aedf9f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>gpgv: Merge all keyrings into a single one again</title>
<updated>2024-12-04T09:14:44Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-12-04T08:56:58Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=48e5af8b5df391e62657b604b2b54885f7ce1c02'/>
<id>urn:sha1:48e5af8b5df391e62657b604b2b54885f7ce1c02</id>
<content type='text'>
gpgv is quite picky, it takes at most 40 keyrings but it also doesn't
even take keyrings with : in the name, generating an ERROR message
instead.

So instead let's always merge the configured keyrings for the source
into a single one.

While we are at it, since we are merging now, let's also add some
rudimentary error checking to what we write into the merged keyring:
If copying into it fails, we should abort.

Reported-by: SuShY on IRC
</content>
</entry>
<entry>
<title>solver3: Reject all non-candidates outright for strict pinning</title>
<updated>2024-12-03T08:44:18Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-11-02T11:45:07Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=8f317d97c9fb821e839342ae445c824207678eb7'/>
<id>urn:sha1:8f317d97c9fb821e839342ae445c824207678eb7</id>
<content type='text'>
Reimplement strict pinning by rejecting the non-candidates when
translating the problem from the depcache to the solver. This is
substantially better than restricting the list of alternatives for
an or group to only include allowed ones for debugging purposes,
albeit a bit slower.
</content>
</entry>
<entry>
<title>solver3: Fix intransitivity of version comparison on upgrade</title>
<updated>2024-12-02T10:37:16Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-12-02T09:25:44Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=63721d8271430c1a0996c08cc96a3a7e6f69dc52'/>
<id>urn:sha1:63721d8271430c1a0996c08cc96a3a7e6f69dc52</id>
<content type='text'>
We only compared candidate to installed version, but candidate
should dominate all versions, otherwise we end up in the fancy
problem of elpa-notmuch in
  upgrade-noble-t64-remove-desktop-2024-03-29.edsp

Where we had three versions:

    not-installable 0.38.3-1ubuntu1
    candidate 0.38.2-1.1ubuntu2
    installed 0.38.2-1ubuntu2

And received an ordering:

    installed &gt; non-installable &gt; candidate

despite

    candidate &gt; installed

This is only visible with no-strict-pinning right now, as we are
otherwise filtering out invalid choices (and hence we only have
candidate and installed otherwise).
</content>
</entry>
<entry>
<title>fileutl: Use execvp() in Popen() instead of execv()</title>
<updated>2024-11-28T18:01:36Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2024-11-28T08:49:58Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=7038347919d59b2f96a8f51f994889a5b4d66cba'/>
<id>urn:sha1:7038347919d59b2f96a8f51f994889a5b4d66cba</id>
<content type='text'>
</content>
</entry>
</feed>
