<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/test/integration/test-apt-never-markauto-sections, branch 2.9.27</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=2.9.27</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=2.9.27'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2025-01-30T13:50:15Z</updated>
<entry>
<title>solver3: Use a propagation queue</title>
<updated>2025-01-30T13:50:15Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-11-02T12:55:39Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3523efb15d48ce3c6f9212f50dfc892497ba9dcb'/>
<id>urn:sha1:3523efb15d48ce3c6f9212f50dfc892497ba9dcb</id>
<content type='text'>
Instead of directly propagating in a recursive fashion,
queue propagations in a queue and work on them in a loop
per the miniSAT paper.

We call Propagate() only at the end of the FromDepCache()
function and then in the Solve loop. Delaying the initial
propagation means that we get a stronger reasoning:

Assume you have x-&gt;a-&gt;b-&gt;c, y-&gt;c and you install x,y:
- Previously we traversed: x, y, x-&gt;a, a-&gt;b, b-&gt;c, (y-&gt;c)
- but now we traverse:     x, y, x-&gt;a, y-&gt;c, a-&gt;b, (b-&gt;c)
Notably c now has the implication y-&gt;c instead of x-&gt;a-&gt;b-&gt;c.

Inside the solver we need to call Propagate in a loop:
Propagating facts can fail and we then backtrack. If backtracking
is succesful, we have gained a new fact to propagate.
</content>
</entry>
<entry>
<title>Resolve autopkgtest failures caused by dpkg &gt;= 1.22.12</title>
<updated>2025-01-05T21:46:03Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2025-01-05T21:46:03Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=eb1adc417b0f3c626c545d195e900d1369c751f0'/>
<id>urn:sha1:eb1adc417b0f3c626c545d195e900d1369c751f0</id>
<content type='text'>
Streamlining the rules around the Section field and especially what
happens if its isn't present are a good idea in general, but for testing
proposes we want a package without a section ~ something dpkg and co do
not want us to have for good reasons (outside of tests).

While a real nosection package would interact with more of our code, for
this test we don't really need a real one and so we can adopt to the new
reality of encountering such packages only if they are already
installed instead of trying to build a sectionless package by hand.

The other failure is a simple and trivial string change around the
formatting of the version number in dpkg error message about file
overrides, which we can resolve by just not looking at the version to
sidestep dealing with the formatting difference.

References: https://lists.debian.org/debian-dpkg/2024/12/msg00010.html
Closes: #1092090
</content>
</entry>
<entry>
<title>test: Support the 3.0 solver in most existing test cases</title>
<updated>2024-05-24T15:01:35Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>julian.klode@canonical.com</email>
</author>
<published>2024-05-19T18:04:47Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=b5997949909ee9d5e9981c8311aea97c7b2620fd'/>
<id>urn:sha1:b5997949909ee9d5e9981c8311aea97c7b2620fd</id>
<content type='text'>
Highlights:

- test-bug-618848-always-respect-user-requests: (Do not) Support 3.0 solver

  A manually installed package is never removed just because we request
  the removal of its dependency in solver3.

- test-bug-657695-resolver-breaks-on-virtuals: Support 3.0 solver

  For manually installed packages, solver 3.0 would require some
  new xserver-xorg-video-driver to Conflict+Replace+Provides the
  old one (once the logic is implemented), but that does seem
  reasonable.

- test-bug-720597-build-dep-purge: Support 3.0 solver

  This needs a simple aptmark auto because pkga is removed by the
  build-dep. But further adjustments are necessary because it weirdly
  tested for no autoremovable packages before installing pkgc.

- test-bug-960705-*: Support 3.0 solver

  Bit awkward to deal with; notably the protect to conflict doesn't
  actually work anymore and that is a feature these days.
</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>Avoid dealing with a fake dpkg stanza in the tests</title>
<updated>2022-09-02T14:55:45Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2022-08-31T19:49:33Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3498fbedafbf30e5c91deeaefa6a60d1e387593a'/>
<id>urn:sha1:3498fbedafbf30e5c91deeaefa6a60d1e387593a</id>
<content type='text'>
We needed a fake dpkg in our status file for dpkg --assert-multi-arch to
work in the past, but recent dpkg versions do not require this anymore,
so we can remove this somewhat surprising hackery in favour of better
hidden hackery we only use if we work with an older dpkg (e.g. on
current Debian stable).
</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>tests: support spaces in path and TMPDIR</title>
<updated>2015-12-19T22:04:34Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-12-15T16:20:26Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3abb6a6a1e485b3bc899b64b0a1b7dc2db25a9c2'/>
<id>urn:sha1:3abb6a6a1e485b3bc899b64b0a1b7dc2db25a9c2</id>
<content type='text'>
This doesn't allow all tests to run cleanly, but it at least allows to
write tests which could run successfully in such environments.

Git-Dch: Ignore
</content>
</entry>
<entry>
<title>Replace --force-yes by various options starting with --allow</title>
<updated>2015-08-14T10:38:18Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2015-08-14T09:49:45Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=b381a482eab0fc7b65b63cf0512ef1f97d775e34'/>
<id>urn:sha1:b381a482eab0fc7b65b63cf0512ef1f97d775e34</id>
<content type='text'>
This enables more fine grained control over such exceptions.
</content>
</entry>
<entry>
<title>move APT::Never-MarkAuto-Sections handling to MarkDelete</title>
<updated>2015-08-10T15:27:59Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-08-10T12:44:14Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=7c2cc4a7bc999c8e07fba607354bfaa3b09118f9'/>
<id>urn:sha1:7c2cc4a7bc999c8e07fba607354bfaa3b09118f9</id>
<content type='text'>
Having the handling in MarkInstall means that it just effects
installation of the metapackage, but if the dependencies change the new
dependencies aren't protected (and the old dependencies are still
protected for no 'reason'). Having it in MarkDelete means that if a
metapackage is sheduled for removal all its currently installed
dependencies are marked as manual, which helps against both as in this
case there is no new/old and additionally if a user decides the
installation of a metapackage was wrong he can just remove it
explicitely avoid the manual marking entirely.
</content>
</entry>
<entry>
<title>mark again deps of pkgs in APT::Never-MarkAuto-Sections as manual</title>
<updated>2015-08-10T15:27:59Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2015-08-03T05:00:33Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=3cbeed985254de7e8d186ebebb69a659727eaeb0'/>
<id>urn:sha1:3cbeed985254de7e8d186ebebb69a659727eaeb0</id>
<content type='text'>
In 50ef3344c3afaaf9943142906b2f976a0337d264 (and similar for other
branches), while 'fixing' the edgecase of a package being in multiple
sections (e.g. moved from libs to oldlibs in newer releases) I
accidently broke the feature itself completely by operating on the
package itself and no longer on its dependencies…

The behaviour isn't ideal in multiple ways, which we are hopefully able
to fix with new ideas as mentioned in the buglog, but until then the
functionality of this "hack" should be restored.

Reported-By: Raphaël Hertzog &lt;hertzog@debian.org&gt;
Tested-By: Adam Conrad &lt;adconrad@ubuntu.com&gt;
Closes: 793360
LP: 1479207
Thanks: Raphaël Hertzog and Adam Conrad for detailed reports and initial patches
</content>
</entry>
</feed>
