<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-private/private-install.cc, branch 2.9.35</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=2.9.35</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=2.9.35'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2025-03-26T15:47:37Z</updated>
<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>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>Print --solver 3.0 explanation if both internal and it failed</title>
<updated>2025-03-09T12:55:23Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-03-09T12:55:23Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=6c112f9860c1730237029f4e23d40bf658d73704'/>
<id>urn:sha1:6c112f9860c1730237029f4e23d40bf658d73704</id>
<content type='text'>
This can provide useful additional context.

To avoid updating the whole test suite for it, introduce a new
option `quiet::NoSolver3Explanation` and set it by default. All
the other tests that assert output will already have matching
tests for --solver 3.0 with the correct messages asserted, it
makes no sense to duplicate them.
</content>
</entry>
<entry>
<title>Evaluate and fall back to the 3.0 solver</title>
<updated>2025-03-09T12:33:53Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-02-18T12:06:32Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=935a9ab334e55a29363f45e7de6338c47337e806'/>
<id>urn:sha1:935a9ab334e55a29363f45e7de6338c47337e806</id>
<content type='text'>
Always run the 3.0 solver after the internal solver. If the internal
solver failed, and the 3.0 solver did not, use the 3.0 result.

If 3.0 solver failed or produced a worse result than the internal
solver, write an apport crash dump.

We exclude situations which we now the solver can't handle, i.e.
removals are forbidden and you requested removals, and stuff like
that.
</content>
</entry>
<entry>
<title>Measure BootSize as integer</title>
<updated>2025-02-03T12:40:37Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2025-02-03T12:19:12Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=452586e84ad54ca23dee399bf9809c49e7171f36'/>
<id>urn:sha1:452586e84ad54ca23dee399bf9809c49e7171f36</id>
<content type='text'>
I don't know why I used a double here this is awkward.
</content>
</entry>
<entry>
<title>Acknowledge non-erase usage of remove_if for volatile sources</title>
<updated>2024-11-22T12:11:13Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2024-09-11T16:57:04Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=fa19a9ddbdddeaed44480ce7dade11d526336435'/>
<id>urn:sha1:fa19a9ddbdddeaed44480ce7dade11d526336435</id>
<content type='text'>
gcc produces a length warning starting with:
| warning: ignoring return value of ‘_FIter std::remove_if(_FIter, _FIter, _Predicate) [with …]’, declared with attribute ‘nodiscard’ [-Wunused-result]
which is usually correct, but in the usage here we don't want to call an
erase as we operate on a c-style new[] array here which contains pointers
into argv and has an explicit sentinel (nullptr) – FileSize() is based
on this sentinel.

Casting to void silences the warning as is standard practice and
hopefully indicates better that this is intended than ignoring the
warning for the casual on-looker.
</content>
</entry>
<entry>
<title>Show installed version (not candidate version) while removing a package</title>
<updated>2024-07-05T04:27:32Z</updated>
<author>
<name>sid</name>
<email>sidtosh4@gmail.com</email>
</author>
<published>2024-07-03T09:20:32Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=c575648f41ff09e72988976f8150e9bb51781cd4'/>
<id>urn:sha1:c575648f41ff09e72988976f8150e9bb51781cd4</id>
<content type='text'>
Showing a package version which was never installed in removals is
confusing.
</content>
</entry>
<entry>
<title>Do not save new if we have already installed providers</title>
<updated>2024-05-16T20:12:51Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2024-05-16T14:51:28Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=f404c8e06e07c2a89efb0f1ba997a7f1c0c472db'/>
<id>urn:sha1:f404c8e06e07c2a89efb0f1ba997a7f1c0c472db</id>
<content type='text'>
Companion of the previous commit that uses the same reasoning, but from
the other side of the logic (as we start from reverse deps here) so that
we are dropping the useless NEW from the solution.

Ideally this code would not live in -private, but in -pkg, but there is
not really a pre-existent good central place for this currently as a
sort-of fixup for our default resolver given this is the result of
resolver decision to not do something which had ripple effects that
aren't reverted along with it.

It is a bit unlikely that this is fixing all instances that this bug
has given we have dealt with a few instances of it already as they are
relatively obscure situations to clean up after and the cost of being
wrong (= autoremover generating breaks) is much higher than being
correct (= no pointless install – that is likely installed later anyhow
after the temporary automatic hold is lifted). And by virtue of being
the result of mostly temporary situations its also unlikely to be
debugable in hindsight months later; so if there is another situation,
its better to deal with it in a new bugreport.

Closes: #839546
</content>
</entry>
</feed>
