| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |\
| |
| |
| |
| | |
solver3: Use classical watchers and minor refactorings
See merge request apt-team/apt!548
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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 -> mailutils:amd64=1:3.18-1 -> mailutils:amd64 -> postfix:amd64=3.9.1-10ubuntu1
The new decision tree is:
lsb:amd64 -> lsb-core:amd64 -> 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
|
| | | |
|
| |/
|
|
| |
Quite a convenient way since we need exactly lifted bool semantics
|
| | |
|
| |\
| |
| |
| |
| | |
variants: Do not report unsupported variants in repositories
See merge request apt-team/apt!546
|
| |/
|
|
|
| |
We configure all variants the CPU supports as active, but repositories
usually do not provide all of them, so let's not be noisy.
|
| |\
| |
| |
| |
| | |
why: Render info about all providers on virtual packages
See merge request apt-team/apt!545
|
| |/
|
|
|
|
|
|
|
|
| |
Refactor code into a doOne helper lambda, and then add loop
over the providers to use it.
This fixes a crash seen by Benjamin in a nice way than just
failing :)
Reported-by: Benjamin Drung
|
| | |
|
| |\
| |
| |
| |
| | |
Updated Irish translation based on Release 3.1.12
See merge request apt-team/apt!540
|
| |/ |
|
| |\
| |
| |
| |
| | |
apt-private/private-download.cc: support unlimited space tmpfs
See merge request apt-team/apt!515
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Test like this:
sudo mount -t tmpfs -o size=0 tmpfs rootfs
cat << 'END' > run.sh
set -exu
export LD_LIBRARY_PATH=/home/josch/git/apt/build/apt-pkg
mkdir -p "$1/etc/apt" "$1/var/cache" "$1/var/lib/dpkg/"
echo "Dir \"$(cd "$1" && pwd)\";" > "$1/apt.conf"
echo "deb [signed-by=/usr/share/keyrings/debian-archive-keyring.pgp] http://deb.debian.org/debian/ unstable main" > "$1/etc/apt/sources.list"
APT_CONFIG="$1/apt.conf" build/cmdline/apt-get update
APT_CONFIG="$1/apt.conf" build/cmdline/apt-get --yes --download-only install '?essential'
END
./run.sh rootfs
|
| |\
| |
| |
| |
| | |
completion: history-list/info
See merge request apt-team/apt!519
|
| |/
|
|
|
|
| |
* complete command history-(list|info|undo|redo|rollback).
complete the history-id for all but commands but history-list.
set complet -o nosort to get the history-ids in a reverse order.
|
| |\
| |
| |
| |
| | |
bash-complete basic list search patterns
See merge request apt-team/apt!536
|
| |/ |
|
| |\
| |
| |
| |
| | |
solver3: Refactorings
See merge request apt-team/apt!542
|
| | | |
|
| | |
| |
| |
| | |
Where applicable
|
| | |
| |
| |
| | |
I do not know why I don't hit this
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This method is no longer needed technically speaking, we should
use Assume() instead. It turns out that there is a slight bug in
the propagation and some clauses that are unit end up on the heap
rather than having been propagated away, so we temporarily need
to keep an if for that around.
To accomodate the switch from Push() to Assume() we need to make
sure that the work item is pushed to our trail *after* we
have assumed it, such that reverting pushes it back to the work
heap.
Refactor the code to consistently use Assume() rather than supporting
Enqueue(), this vastly simplifies things. This is not fully accurate
in the current model and leads to unnecessary decision levels, since
sometimes we seem to be reaching unit clauses here.
This preserves traversal order by first removing the item from the
heap and then adding it back if we need to solve it again.
|
| | |
| |
| |
| |
| | |
This is like assert() but never compiled out so can be used with
function calls that have side effects.
|
| | |
| |
| |
| |
| | |
We can just re-use Enqueue() here to produce our conflict
message why am I being silly and duplicate this.
|
| | |
| |
| |
| |
| | |
Matches the rename of depth() to decisionLevel() at a shorter
name.
|
| | |
| |
| |
| |
| |
| |
| | |
The previous use of decision here conflicted with the use
of decision level and the general notion of having made a
decision, because the assignment might have been propagated
as a matter of fact.
|
| | |
| |
| |
| |
| | |
Move the DependencySolver methods and their helpers to the end of
the file.
|
| | |
| |
| |
| | |
Extract almost all dependency logic into a subclass
|
| | |
| |
| |
| |
| |
| |
| | |
This removes the need for the forward references, thus fixing part
of the libc++ issues pointed out in [merge-511].
[merge-511] https://salsa.debian.org/apt-team/apt/-/merge_requests/511/diffs
|
| | |
| |
| |
| |
| | |
This should make it easier for people with MiniSAT knowledge
to onboard themselves to the solver.
|
| | |
| |
| |
| |
| | |
MUST becomes True, MUSTNOT becomes False, and NONE becomes
Undefined.
|
| | | |
|
| | |
| |
| |
| | |
This simplifies the code _slightly_
|
| |/ |
|
| |\
| |
| |
| |
| | |
configure-index Acquire::ForceIPv4/6
See merge request apt-team/apt!531
|
| |/ |
|
| |\
| |
| |
| |
| | |
Fix host-specific Acquire::https CAInfo/CRLFile example (Closes: #1112123)
See merge request apt-team/apt!541
|
| |/
|
|
|
|
| |
The proper syntax for a host-specific parameters are:
Acquire::https::deb.debian.org::CAInfo "/path/to/cert.pem";
Acquire::https::deb.debian.org::CRLFile "/path/to/cert.pem";
|
| |\
| |
| |
| |
| | |
Priority 1000 allows downgrades. Closes #1016967
See merge request apt-team/apt!537
|
| |/ |
|
| |\
| |
| |
| |
| | |
Grammar fixes
See merge request apt-team/apt!535
|
| |/ |
|
| | |
|
| |
|
|
| |
Document options inside apt(8)
|
| |
|
|
| |
Explicit iterators considered harmful :)
|
| | |
|
| |\
| |
| |
| |
| | |
Correctly copy provided version in m-a lazy-init
See merge request apt-team/apt!530
|
| |/
|
|
|
|
|
|
| |
When a provides was copied, we inadvertently copied the package
version instead of the provided version. Copy the provided version
instead.
Closes: #1120463
|