<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/apt-pkg/depcache.cc, branch 2.9.0</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=2.9.0</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=2.9.0'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2024-02-20T12:49:04Z</updated>
<entry>
<title>Modernize standard library includes</title>
<updated>2024-02-20T12:49:04Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-02-20T12:43:08Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=40a75722c43ae24cb9a99d6730a3b25b65819c49'/>
<id>urn:sha1:40a75722c43ae24cb9a99d6730a3b25b65819c49</id>
<content type='text'>
This was automated with sed and git-clang-format, and then I had to
fix up the top of policy.cc by hand as git-clang-format accidentally
indented it by two spaces.
</content>
</entry>
<entry>
<title>Add public phased update API</title>
<updated>2024-02-13T13:27:27Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-02-12T13:48:48Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=a8352c2859a6f84b36fa5cd0af89231cb656b1ce'/>
<id>urn:sha1:a8352c2859a6f84b36fa5cd0af89231cb656b1ce</id>
<content type='text'>
This moves the functions of the PhasedUpgrader class into
various other classes so they can be publicly exposed.

This introduces three new functions:

pkgDepCache::PhasingApplied() tells you whether phasing should
be applied to the package.

pkgProblemResolver::KeepPhasedUpdates() keeps back updates that
have phasing applied.

pkgCache::VerIterator::IsSecurityUpdate() determines whether this
version contains security fixes.
</content>
</entry>
<entry>
<title>Use a more gitignore style matching</title>
<updated>2023-02-27T13:44:12Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2023-02-27T13:41:52Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=557aed9806b59bebac33f4589bafc25fcb8a2728'/>
<id>urn:sha1:557aed9806b59bebac33f4589bafc25fcb8a2728</id>
<content type='text'>
Use a rightmost match for / so that if we end up with a Section: a/b/c,
a 'c' matcher still matches.

If the section does not contain any /, it can be matched using /pattern,
e.g. /c only matches Section: c, but not Section: a/b/c.
</content>
</entry>
<entry>
<title>Have values in Section config trees refer to them in all components</title>
<updated>2023-01-29T23:55:05Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2023-01-29T15:54:39Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=8aeb07448c09375c730c76a6baf31303b129bb96'/>
<id>urn:sha1:8aeb07448c09375c730c76a6baf31303b129bb96</id>
<content type='text'>
Hard coding each and every component is not only boring but given that
everyone is free to add or use more we end up in situations in which apt
behaves differently for the same binary package just because metadata
said it is in different components (e.g. non-free vs. non-free-firmware).
It is also probably not what the casual user would expect.

So we instead treat a value without a component as if it applies for all
of them. The previous behaviour can be restored by prefixing the value
with "&lt;undefined&gt;/" as in the component is not defined.

In an ideal world we would probably use "*/foo" for the new default
instead of changing the behaviour for "foo", but it seems rather
unlikely that the old behaviour is actually desired. All existing values
were duplicated for all (previously) known components in Debian and
Ubuntu.
</content>
</entry>
<entry>
<title>Add flag to disable upgrade by source and test case</title>
<updated>2022-07-24T13:44:13Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2022-07-24T13:44:13Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=518746f7e03115eb7bdf894d23e74ae115c8717b'/>
<id>urn:sha1:518746f7e03115eb7bdf894d23e74ae115c8717b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Avoid recursion by looping of other binaries twice</title>
<updated>2022-07-24T13:27:18Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2022-07-08T12:07:45Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=c4bab3c93567fd5a17652e453d4a65d7c83eb4fb'/>
<id>urn:sha1:c4bab3c93567fd5a17652e453d4a65d7c83eb4fb</id>
<content type='text'>
First mark them for upgrade without autoInst, so we don't call
their "mark other binaries loop"; then call them again with it.

Without this change, each binary package would upgrade the next
one in the list, recursively.
</content>
</entry>
<entry>
<title>Upgrade all binaries in a source package</title>
<updated>2022-07-24T13:27:18Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2022-07-08T11:34:22Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=119a8d0ed19a4e946591b9aef7d662e14ca7ece5'/>
<id>urn:sha1:119a8d0ed19a4e946591b9aef7d662e14ca7ece5</id>
<content type='text'>
Schedule all other binaries in the source package for upgrade if
the candidate version belongs to the same source version as the
package we are upgrading.

This will significantly reduce the risk of partial upgrades and
should make life a lot easier.
</content>
</entry>
<entry>
<title>Mark broken reverse depends for upgrade</title>
<updated>2022-07-11T14:37:33Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2022-07-08T15:46:05Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=e077370ffcb3669a50a600e80356c2002e6b176d'/>
<id>urn:sha1:e077370ffcb3669a50a600e80356c2002e6b176d</id>
<content type='text'>
Currently the solver handles cases where a Breaks b (&lt;&lt; 1) and
if we install that a, upgrades b. However, where b Depends a (= 1),
b was removed again.

This addresses the problem by iterating over installed reverse
dependencies of upgrades and upgrading them so that both cases
work roughly similarly.

LP: #1974196
</content>
</entry>
<entry>
<title>Use pkgTagSection::Key in more places in src:apt</title>
<updated>2022-04-01T12:16:19Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2022-04-01T11:45:09Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=472376be6818b5ea43250abcbecfcab53b4a729a'/>
<id>urn:sha1:472376be6818b5ea43250abcbecfcab53b4a729a</id>
<content type='text'>
The speed critical paths were converted earlier, but the remaining
could benefit a tiny bit from this as well especially as we have the
facility now available and can therefore brush up the code in various
places in the process as well.

Also takes the time to add the hidden Exists method advertised in
the headers, but previously not implemented.
</content>
</entry>
<entry>
<title>Avoid using unqualified make_pair potentially triggering ftbfs</title>
<updated>2022-03-21T01:57:34Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2022-03-20T14:08:18Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=a0e16ddd7b274bf6b1383873315020f215e6f67a'/>
<id>urn:sha1:a0e16ddd7b274bf6b1383873315020f215e6f67a</id>
<content type='text'>
If the includes are slightly changed, we end with an error here:
apt/apt-pkg/depcache.cc:2059:31: error: ‘make_pair’ was not declared in this scope; did you mean ‘std::make_pair’?

Yes, we mean std::make_pair, but we can avoid the explicit call
altogether by using emplace_back instead of push_back.
</content>
</entry>
</feed>
