<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/test/integration/test-explore-or-groups-in-markinstall, branch 2.1.0</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=2.1.0</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=2.1.0'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2020-04-27T11:51:46Z</updated>
<entry>
<title>Protect a package while resolving in MarkInstall</title>
<updated>2020-04-27T11:51:46Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2020-04-27T11:51:46Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=ae23e53f99ea0b7920744a7303fdee64796b7cce'/>
<id>urn:sha1:ae23e53f99ea0b7920744a7303fdee64796b7cce</id>
<content type='text'>
Strange things happen if while resolving the dependencies of a package
said dependencies want to remove the package. The allow-scores test e.g.
removed the preferred alternative in favor of the last one now that they
were exclusive. In our or-group for Recommends we would "just" not
statisfy the Recommends and for Depends we engage the ProblemResolver…
</content>
</entry>
<entry>
<title>Prefer upgrading installed orgroup members</title>
<updated>2020-04-27T11:49:43Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2020-04-26T19:09:14Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=ca14e1e2c3f3c9782f374757ca4605ce7e5670ad'/>
<id>urn:sha1:ca14e1e2c3f3c9782f374757ca4605ce7e5670ad</id>
<content type='text'>
In normal upgrade scenarios this is no problem as the orgroup member
will be marked for upgrade already, but on a not fully upgraded system
(or while you operate on a different target release) we would go with our
usual "first come first serve" approach which might lead us to install
another provider who comes earlier – bad if the providers conflict.
</content>
</entry>
<entry>
<title>Propagate Protected flag to single-option dependencies</title>
<updated>2020-04-27T11:49:19Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2020-04-27T11:49:19Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=f76a8d331a81bc7b102bdd4e0f8363e8a59f64f6'/>
<id>urn:sha1:f76a8d331a81bc7b102bdd4e0f8363e8a59f64f6</id>
<content type='text'>
If a package is protected and has a dependency satisfied only by a single
package (or conflicts with a package) this package must be part of the
solution and so we can help later actions not exploring dead ends by
propagating the protected flag to these "pseudo-protected" packages.

An (obscure) bug this can help prevent (to some extend) is shown in
test-apt-never-markauto-sections by not causing irreversible autobit
transfers.

As a sideeffect it seems also to help our crude ShowBroken to display
slightly more helpful messages involving the packages which are actually
in conflict.
</content>
</entry>
<entry>
<title>Explore or-groups for Recommends further than first</title>
<updated>2020-04-27T11:44:24Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2020-04-25T09:28:47Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=ff4555c72df967e40590d9e8c6ce83e9df4c46ea'/>
<id>urn:sha1:ff4555c72df967e40590d9e8c6ce83e9df4c46ea</id>
<content type='text'>
MarkInstall only looks at the first alternative in an or-group which has
a fighting chance of being satisfiable (= the package itself satisfies
the dependency, if it is installable itself is not considered).

This is "hidden" for Depends by the problem resolver who will try
another member of the or-group later, but Recommends are not a problem
for it, so for them the alternatives are never further explored.

Exploring the or-group in MarkInstall seems like the better choice for
both types as that frees the problem resolver to deal with the hard
things like package conflicts.
</content>
</entry>
</feed>
