<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg, branch 3.1.0</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=3.1.0</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=3.1.0'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2025-05-19T15:58:13Z</updated>
<entry>
<title>Fix error handling with getline</title>
<updated>2025-05-19T15:58:13Z</updated>
<author>
<name>Walter Lozano</name>
<email>walter.lozano@collabora.com</email>
</author>
<published>2022-10-14T12:13:00Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=91e8c456964d5ff4b3b7afe2f1cb074de9dfe592'/>
<id>urn:sha1:91e8c456964d5ff4b3b7afe2f1cb074de9dfe592</id>
<content type='text'>
The function getline is used to read data from different streams, however,
the error handling is not accurate.

From the man page, getline returns -1 on failure and sets errno accordingly,
but the current implementation only checks errno to see if there was a
failure. With this approach, in case getline returns success but also sets
errno it is consider and error.

Fix the issue but also checking the return value of getline.

Signed-off-by: Walter Lozano &lt;walter.lozano@collabora.com&gt;
</content>
</entry>
<entry>
<title>Introduce apt why, apt why-not</title>
<updated>2025-05-19T15:20:09Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-05-19T12:17:23Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=7724d170751b3dc1717ba7a08881437cf7151996'/>
<id>urn:sha1:7724d170751b3dc1717ba7a08881437cf7151996</id>
<content type='text'>
These are implemented somewhat differently from aptitudes
why and why-not commands: They produce the actual solver
trace for why a particular decision has been taken.

For the why-not case, we need to explicitly discover our
specified package, as if nothing else depends on it in
our graph, it would otherwise always be undiscovered and
conflicts not detected (see e.g. level-3 in the test).
</content>
</entry>
<entry>
<title>apt-pkg: fixed type comparison in 64bit systems using memsize cast</title>
<updated>2025-05-19T15:19:49Z</updated>
<author>
<name>Herman Semenov</name>
<email>GermanAizek@yandex.ru</email>
</author>
<published>2025-05-11T12:59:02Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=ed78f77ec9b3bb98f05aa43d16545846850774e2'/>
<id>urn:sha1:ed78f77ec9b3bb98f05aa43d16545846850774e2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add 'Include'/'Exclude' options to limit packages used from a repository</title>
<updated>2025-05-19T15:19:23Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-01-29T18:01:06Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=93416f3227685c390c7ab579981efde526134181'/>
<id>urn:sha1:93416f3227685c390c7ab579981efde526134181</id>
<content type='text'>
'Include' allows limiting a repository to a allowlist of packages,
'Exclude' allows removing packages from a repository.

Implementation wise this is not the nicest as it goes via the
IndexTarget options, so we first parse our option value into a
vector, then we turn the vector into a string, and then vectorize
it again. That said, we support both "," and " " as separators due
to the construction (we split by "," then we join using " ").

Gbp-Dch: full
</content>
</entry>
<entry>
<title>solver3: Do not install new packages for Suggests</title>
<updated>2025-03-20T21:22:17Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-20T20:15:14Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=81804cefd8c24c98e7a0216a9d4277516e19b6e2'/>
<id>urn:sha1:81804cefd8c24c98e7a0216a9d4277516e19b6e2</id>
<content type='text'>
As a followup to the previous commit, restore the exact behavior
of the old solver to break the Suggests on upgrade here by erasing
any choices not previously installed.

This ensures that the Suggests never installs any new package, but
it will still retain previously installed packages when solver3 is
doing autoremove.
</content>
</entry>
<entry>
<title>solver3: Handle previously satisfied Suggests last</title>
<updated>2025-03-20T21:22:17Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-20T19:47:28Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=83bad834c63604035c251f24ee9ea99dac1a1369'/>
<id>urn:sha1:83bad834c63604035c251f24ee9ea99dac1a1369</id>
<content type='text'>
In #2103556 we can see that avahi-daemon Suggests avahi-autoipd,
which is previously satisfied by dhcpcd-base due to a Provides;
that Provides has now been dropped; and solver3 keeps the update
back.

As in LP: #2102720 this is a Suggests and it seems wrong for the
Suggests to actually influence dependency choices and be able to
hold back updates.

Instead, satisfy previously satisfied Suggests at the end. For the
particular case in this bug report, this results in avahi-autoipd,
the real package, to be installed to keep the Suggests working
which needs further consideration whether that is the right choice
(we can argue either way), but in any case this is a better solution.

This in turn breaks the conkeror test which is a somewhat awkward
unrealistic test these days as it has no automatically installed
packages; because previously something must have had a Suggests
on say libdatrie1 or something that was processed first.

This would be fine before 5daf6dbfd272be2f8e3c59d4bab4be8c119b7aa1
but as of that commit we no longer rewrite

    conkeror Depends xulrunner-1.9 | xulrunner-1.9.1

into

    conkeror Depends xulrunner-1.9.1 | xulrunner-1.9

Because xulrunner-1.9 is manually installed. Mark xulrunner-1.9
as automatically installed to fix the test case.

The resulting behavior seems correct: If you manually want
xulrunner-1.9 specifically we should not replace it with
xulrunner-1.9.1; but if it's automatically installed we should.

LP: #2103556
</content>
</entry>
<entry>
<title>solver3: Record manual flag before discovering packages</title>
<updated>2025-03-20T13:32:42Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-20T13:30:54Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=109fdcac9a16ffa06b06366134dcaaef7e2b3379'/>
<id>urn:sha1:109fdcac9a16ffa06b06366134dcaaef7e2b3379</id>
<content type='text'>
When discovering packages we look at the manual flag to avoid
reordering obsolete manually installed packages last.

We inadvertently initialized that flag interlaced with discovering
packages so if we discovered packages depending on obsolete, but
manually installed, packages first, we were not aware they were
manually installed and demoted them.

I am struggling to come up with a test case for this as I can't
get the package objects in the cache to be in the right order for
the bug to trigger.

LP: #2102720
</content>
</entry>
<entry>
<title>edsp: Dump minimized Dir::Log::Solver logs</title>
<updated>2025-03-20T09:26:51Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-13T14:55:50Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=8ed6bea2083e055b50dfbd8bebf1355cce502f3f'/>
<id>urn:sha1:8ed6bea2083e055b50dfbd8bebf1355cce502f3f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>edsp: Add functionality to only write relevant packages</title>
<updated>2025-03-20T09:26:51Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-13T14:15:58Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=11917fa559c6c9bc5b0993b435f295de06bd161c'/>
<id>urn:sha1:11917fa559c6c9bc5b0993b435f295de06bd161c</id>
<content type='text'>
Add a variant of WriteLimitedScenario that does not take a pkgset,
but creates one on the fly based on the transitive closure of installed
packages, to be installed packages, and their dependencies and provides.

This includes more packages than strictly necessary, i.e. we do not
really need to include foo just because a package we want to install
Conflicts with it, but oh well, this is easy to read.

Trying to extend the filtering is hard as the dependencies being written
are also filtered...
</content>
</entry>
<entry>
<title>zstd: The compressor level should be -6, not -19</title>
<updated>2025-03-20T09:26:51Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-13T14:15:19Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=c8b8f563ec2ff0f006a6d77469eaa656050f1fcc'/>
<id>urn:sha1:c8b8f563ec2ff0f006a6d77469eaa656050f1fcc</id>
<content type='text'>
We created a very slow zstd, we don't default to high levels
for other compressors...
</content>
</entry>
</feed>
