<feed xmlns='http://www.w3.org/2005/Atom'>
<title>apt/test/integration, branch main</title>
<subtitle>Debians commandline package manager</subtitle>
<id>https://git.kalnischkies.de/apt/atom?h=main</id>
<link rel='self' href='https://git.kalnischkies.de/apt/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/'/>
<updated>2026-06-10T13:07:30Z</updated>
<entry>
<title>aptwebserver: Refuse client immediately on TLS handshake</title>
<updated>2026-06-10T13:07:30Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2026-02-05T21:18:40Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=49e91b96d9faeca50ab0b212174744938d446132'/>
<id>urn:sha1:49e91b96d9faeca50ab0b212174744938d446132</id>
<content type='text'>
We implement a HTTP-only server here (that is wrapped by stunnel for
HTTPS support), so if a TLS handshake reaches us it is always wrong
and we can just close the connection immediately instead of accepting
it and letting the client run into a timeout as we will never receive
the message(s) we expect.

This happens e.g. with browsers like Firefox that opportunistically
try https first (even if you ask for http and specify a port).
</content>
</entry>
<entry>
<title>Document and test combined `build-dep --arch-only --indep-only`</title>
<updated>2026-05-20T17:46:35Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2026-05-20T17:42:18Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=cae6d486b4294a0ba0a4694171380737c3818aac'/>
<id>urn:sha1:cae6d486b4294a0ba0a4694171380737c3818aac</id>
<content type='text'>
This is a supported configuration to only use bare Build-Depends
and Build-Conflicts.
</content>
</entry>
<entry>
<title>Warn if auth.conf is unreadable (LP: #2150631)</title>
<updated>2026-05-17T18:53:31Z</updated>
<author>
<name>Varun Varma</name>
<email>varun.varma@canonical.com</email>
</author>
<published>2026-05-14T15:20:28Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=45f1fd73d0b62ce6422365a935abc317718ea142'/>
<id>urn:sha1:45f1fd73d0b62ce6422365a935abc317718ea142</id>
<content type='text'>
LP: #2150631 is a bug where trying to access an authentication-locked repo without root sends a 401 error, which is misleading since the authentication information could be in auth.conf.d, but just inaccessible without root. This adds a warning in that scenario, as well as an integration test.
</content>
</entry>
<entry>
<title>solver3: Follow installed Suggests earlier</title>
<updated>2026-05-17T18:10:59Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2026-05-17T18:09:37Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=10a05580e74e2ba5a5768d45c6f9feff216c8689'/>
<id>urn:sha1:10a05580e74e2ba5a5768d45c6f9feff216c8689</id>
<content type='text'>
We accidentally followed "keepauto" and friends earlier, breaking
`apt why` for suggested packages.

Reported-By: uau on IRC
</content>
</entry>
<entry>
<title>Drop warning about unstable CLI interface</title>
<updated>2026-04-07T09:40:15Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2026-02-24T18:25:21Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=f0c71b95ca00bae2b364c4b4858c51d84b002387'/>
<id>urn:sha1:f0c71b95ca00bae2b364c4b4858c51d84b002387</id>
<content type='text'>
A specific CLI version can now be requested using the --cli-version
flag, and old versions can be deprecated on a reasonable cadence.
Therefore, a warning is no longer necessary.

Gbp-Dch: full
</content>
</entry>
<entry>
<title>Scale history-list to screen width</title>
<updated>2026-04-07T09:39:14Z</updated>
<author>
<name>Simon Johnsson</name>
<email>simon.johnsson@canonical.com</email>
</author>
<published>2026-02-18T14:37:48Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=e2e4e3ced75bb5e9db28cc35b6ebf371e8e5be94'/>
<id>urn:sha1:e2e4e3ced75bb5e9db28cc35b6ebf371e8e5be94</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Do not use unexpected operator in test-apt-get-satisfy</title>
<updated>2026-03-19T09:35:50Z</updated>
<author>
<name>David Kalnischkies</name>
<email>david@kalnischkies.de</email>
</author>
<published>2026-03-19T09:25:19Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=94ff66799a94576ff8003b99d78be6765e6f4500'/>
<id>urn:sha1:94ff66799a94576ff8003b99d78be6765e6f4500</id>
<content type='text'>
Observing a testrun carefully included:
./test-apt-get-satisfy: 101: [: unexpected operator
Yes, == is not a valid operator here, should just be =.

The result is that we unconditionally skip a single check,
hardly so much the end of the world that we need to tell
everyone as no tests were failed, but no good anyhow.

Fixes: 5e8e69cdd6b512480f3208298725e1e44c80f06e
Gbp-Dch: Ignore
</content>
</entry>
<entry>
<title>solver3: Upgrade by source package</title>
<updated>2026-02-17T09:28:17Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2026-02-17T09:28:17Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=9f3ecca2b32e4fe56a05811392e01416092f85fa'/>
<id>urn:sha1:9f3ecca2b32e4fe56a05811392e01416092f85fa</id>
<content type='text'>
Implement the "APT::Get::Upgrade-By-Source-Package" option as
the classic solver does.

Here this is equally straight forward now: We enqueue optional, but
eager, clauses of the form

    foo=2 -&gt; foo-data=2

for each sibling in the source version, assuming they are currently
installed, and the selection is not the current version.

This softly enforces upgrades of already installed siblings, but
in non-strict-pinning mode it will not affect the selection of
new packages to be installed.

A more complete solution to version selection by source package
also seems feasible, where we change the "priority" of versions
in the solver dynamically - currently they are statically evaluated.
Such that, when you select foo=2, and something installs foo-data,
foo-data would be installed in version 2 even if version 3 were its
candidate.
</content>
</entry>
<entry>
<title>solver3: Use classical watchers for propagation</title>
<updated>2026-01-31T16:30:20Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2025-12-29T17:47:15Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=1fbb857b6b2cbddcea9e8b03aa0c766c72e91f34'/>
<id>urn:sha1:1fbb857b6b2cbddcea9e8b03aa0c766c72e91f34</id>
<content type='text'>
Instead of tracking dependencies and reverse dependencies,
install classical watchers. This vastly streamlines the
propagation code and allows us to easily switch to literals
in the next step.

This implementation watches _all_ solutions rather than using
the modern 2-watched literals scheme or the intermediate
head/tail watchers.

Ultimately a more effective watcher scheme would be interesting
but not a significant priority seeing as most of the solver runtime
is spent not in propagation but in problem translation.

decision trees
--------------
The new watchers produce slightly different decision trees, sometimes
subtly changing solutions. Notably in various observed examples in
Ubuntu 25.04, courier was installed as an MTA instead of postfix:

The old decision tree was:

    apcupsd:amd64 -&gt; mailutils:amd64=1:3.18-1 -&gt; mailutils:amd64 -&gt; postfix:amd64=3.9.1-10ubuntu1

The new decision tree is:

    lsb:amd64 -&gt; lsb-core:amd64 -&gt; courier-mta:amd64=1.3.13-1

The difference here being that lsb-core declares a mail-transport-agent
dependency whereas mailutils depends on `default-mta | mail-transport-agency`;
but both are effectively subject to selection at similar time.

Further work is needed to optimize selection. A notable choice may also
be to deal with broken packages like lsb-core that declare dependencies
solely on a virtual package by reconstructing the default provider for
that package utilizing default-* dependencies or similar notions.

Likewise in the test suite, explanations are different in some
uninstallable cases.

backtracking
~~~~~~~~~~~~
The following major changes were observed in the 25.04 test suite:

-tmp/regression-remove/07f0a068-36c2-11f0-b7c1-fa163e171f02:18
+tmp/regression-remove/07f0a068-36c2-11f0-b7c1-fa163e171f02:3

-tmp/regression-remove/32078f70-3734-11f0-a75a-fa163ec8ca8c:64
+tmp/regression-remove/32078f70-3734-11f0-a75a-fa163ec8ca8c:19

Other test cases showed little deviation, +/- 1, generally
the same amount of backtracking.

performance
~~~~~~~~~~~
Running Ubuntu's regression test suite resulted in no significant
performance difference being observable.

Before: 290s user time; 16.66% solver
After:  299s user time; 17.36% solver

Tests where run with make -j 8 and solver performance extracted

    perf report --symbol-filter=ResolveExternal --stdio
</content>
</entry>
<entry>
<title>variants: Do not report unsupported variants in repositories</title>
<updated>2026-01-23T11:04:31Z</updated>
<author>
<name>Julian Andres Klode</name>
<email>jak@debian.org</email>
</author>
<published>2026-01-23T11:03:04Z</published>
<link rel='alternate' type='text/html' href='https://git.kalnischkies.de/apt/commit/?id=49e80c2d9061372e0ec697be43bcba4c451b7752'/>
<id>urn:sha1:49e80c2d9061372e0ec697be43bcba4c451b7752</id>
<content type='text'>
We configure all variants the CPU supports as active, but repositories
usually do not provide all of them, so let's not be noisy.
</content>
</entry>
</feed>
