<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/test, branch 3.0.0</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=3.0.0</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=3.0.0'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2025-04-04T13:28:40Z</updated>
<entry>
<title>solver3: Consider more upgrades more costly when not upgrading</title>
<updated>2025-04-04T13:28:40Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-04-04T13:25:01Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=295ab44a3063fb7790d8a558a161fc1bd801f998'/>
<id>urn:sha1:295ab44a3063fb7790d8a558a161fc1bd801f998</id>
<content type='text'>
We inadvertently considered more upgrades as a better solution in
all cases, but if we are *installing* rather than upgrading, we
should count upgrades as a negative.

Change the code to accomodate that. This requires a few more
tricks:

- We remove the keep count check. This does not appear to work
  correctly and would have prevented the fix. We are already
  counting all possible changes, so why bother.

- We need to subtract the upgrade count from the install count
  (upgrades are a class of installs) since we now allow comparing
  solutions with different upgrade counts for install counts.

- After comparing the "new install count", we now compare upgrade
  count too, in the opposite direction of upgrading.

To test, we abuse that solver 3.0 does not upgrade all packages
in a source package when using the install command.

LP: #2105395
</content>
</entry>
<entry>
<title>pager: Also set SMK in LESS, fix LV=C to be LV=-c</title>
<updated>2025-03-26T16:42:30Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-26T16:01:12Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=805ddd0acc71e653d0f5f841e0ceaff665fce063'/>
<id>urn:sha1:805ddd0acc71e653d0f5f841e0ceaff665fce063</id>
<content type='text'>
Sync the LESS environment with systemd to make it more user-friendly
than just a blinking colon:

- S disables the terminal bell
- M makes the output verbose, so the prompt is not ":" but "lines 1-n"
- K means that Ctrl+c exits the command

Also fix the LV= environment variable to use -c and not C.
</content>
</entry>
<entry>
<title>solver3: Correctly deb822-escape error message in evaluation report</title>
<updated>2025-03-26T15:47:37Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-26T15:44:06Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6e5d8929c06cb645e639022477a14ca65d483e32'/>
<id>urn:sha1:6e5d8929c06cb645e639022477a14ca65d483e32</id>
<content type='text'>
The error messages are multi-line now, so need correct escaping.

LP: #2104276
</content>
</entry>
<entry>
<title>Respect custom LESS/MORE/LV variables</title>
<updated>2025-03-26T14:45:15Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-26T14:42:57Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=a452d3a9f526f6545981664712b45f709545e6fa'/>
<id>urn:sha1:a452d3a9f526f6545981664712b45f709545e6fa</id>
<content type='text'>
Use setenv() to avoid overriding user defined variables.

LP: #2103921
</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: Avoid empty error message in evaluation crash report</title>
<updated>2025-03-20T14:18:05Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-20T14:16:58Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=61b3b1840568b223baad08da1eb9a1fb5d6e7f91'/>
<id>urn:sha1:61b3b1840568b223baad08da1eb9a1fb5d6e7f91</id>
<content type='text'>
whoopsie does not accept empty values
</content>
</entry>
<entry>
<title>solver3: Use zstd-compressed, base64-encoded dumps</title>
<updated>2025-03-20T14:09:56Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-20T14:03:23Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=a2cb87afcbc89d1f8e770c26121a75d9c1654458'/>
<id>urn:sha1:a2cb87afcbc89d1f8e770c26121a75d9c1654458</id>
<content type='text'>
Store the solver dumps with zstd compression and base64-encode
them in the crash report; such that they take up significantly
less space and can fit in cassandra's schema.

Base64 is wrapped at 76 characters as the base64 tool does. Do
some magic std::string_view conversion to avoid string copies
for the substr() used to get 76 characters at a time.

Note we can rely on substr(i, 76) to handle less than 76 characters
just fine; it uses std::min(76, size() - i) characters.
</content>
</entry>
<entry>
<title>solver evaluation: write minimized solver dumps</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:20:49Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=c741e4f3bc7143031f70b5a353aafc004d26c220'/>
<id>urn:sha1:c741e4f3bc7143031f70b5a353aafc004d26c220</id>
<content type='text'>
These are faster to generate and significantly smaller.
</content>
</entry>
<entry>
<title>cmdline/apt-get.cc: emit Signed-By field and support $(SIGNED_BY) in apt-get indextargets --format</title>
<updated>2025-03-14T08:29:23Z</updated>
<author>
<name>Johannes Schauer Marin Rodrigues</name>
<email>josch@mister-muffin.de</email>
</author>
<published>2025-03-12T18:45:18Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=f866dac363c6a22fe1b35baddf126b39a405410e'/>
<id>urn:sha1:f866dac363c6a22fe1b35baddf126b39a405410e</id>
<content type='text'>
</content>
</entry>
</feed>
