summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Release 3.1.153.1.15Julian Andres Klode2026-01-315-6/+17
|
* Merge branch 'solver3' into 'main'Julian Andres Klode2026-01-3112-117/+147
|\ | | | | | | | | solver3: Use classical watchers and minor refactorings See merge request apt-team/apt!548
| * solver3: Use classical watchers for propagationJulian Andres Klode2026-01-3112-99/+139
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * Erased items do not exist anymoreJulian Andres Klode2026-01-312-11/+1
| |
| * solver3: Use LiftedBool for Obsolete stateJulian Andres Klode2026-01-312-7/+7
|/ | | | Quite a convenient way since we need exactly lifted bool semantics
* Release 3.1.143.1.14Julian Andres Klode2026-01-235-6/+13
|
* Merge branch 'variants-notice' into 'main'Julian Andres Klode2026-01-232-6/+11
|\ | | | | | | | | variants: Do not report unsupported variants in repositories See merge request apt-team/apt!546
| * variants: Do not report unsupported variants in repositoriesJulian Andres Klode2026-01-232-6/+11
|/ | | | | We configure all variants the CPU supports as active, but repositories usually do not provide all of them, so let's not be noisy.
* Merge branch 'solver3-why' into 'main'Julian Andres Klode2026-01-202-13/+35
|\ | | | | | | | | why: Render info about all providers on virtual packages See merge request apt-team/apt!545
| * why: Render info about all providers on virtual packagesJulian Andres Klode2026-01-202-13/+35
|/ | | | | | | | | | 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
* Release 3.1.133.1.13Julian Andres Klode2026-01-0561-269/+720
|
* Merge branch 'main' into 'main'Julian Andres Klode2026-01-051-147/+124
|\ | | | | | | | | Updated Irish translation based on Release 3.1.12 See merge request apt-team/apt!540
| * Updated Irish translation based on Release 3.1.12Aindriú Mac Giolla Eoin2026-01-051-147/+124
|/
* Merge branch 'infinite-tmpfs' into 'main'Julian Andres Klode2026-01-051-14/+14
|\ | | | | | | | | apt-private/private-download.cc: support unlimited space tmpfs See merge request apt-team/apt!515
| * apt-private/private-download.cc: support unlimited space tmpfsJohannes Schauer Marin Rodrigues2026-01-051-14/+14
|/ | | | | | | | | | | | | | | | | | 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
* Merge branch 'completion/history' into 'main'Julian Andres Klode2026-01-051-2/+10
|\ | | | | | | | | completion: history-list/info See merge request apt-team/apt!519
| * completion: historyChristopher Bock2026-01-051-2/+10
|/ | | | | | * 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.
* Merge branch 'feat/complete-list-search-patterns' into 'main'Julian Andres Klode2026-01-051-1/+20
|\ | | | | | | | | bash-complete basic list search patterns See merge request apt-team/apt!536
| * bash-complete basic list search patternsVille Skyttä2026-01-051-1/+20
|/
* Merge branch 'solver3' into 'main'Julian Andres Klode2026-01-0537-852/+925
|\ | | | | | | | | solver3: Refactorings See merge request apt-team/apt!542
| * solver3: Ensure rule-of-3 memory safety for ContiguousCacheMapJulian Andres Klode2026-01-051-0/+4
| |
| * solver3: Modernize std::find() to std::ranges::containsJulian Andres Klode2026-01-052-13/+10
| | | | | | | | Where applicable
| * solver3: Add a strange assertionJulian Andres Klode2026-01-051-0/+2
| | | | | | | | I do not know why I don't hit this
| * solver3: Remove Push() and refactor Solve()Julian Andres Klode2026-01-052-52/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * macros: Introduce must_succeed() macroJulian Andres Klode2026-01-051-0/+8
| | | | | | | | | | This is like assert() but never compiled out so can be used with function calls that have side effects.
| * solver3: Re-use existing error message code in Solve()Julian Andres Klode2026-01-051-7/+4
| | | | | | | | | | We can just re-use Enqueue() here to produce our conflict message why am I being silly and duplicate this.
| * solver3: Rename depth to levelJulian Andres Klode2026-01-052-23/+23
| | | | | | | | | | Matches the rename of depth() to decisionLevel() at a shorter name.
| * solver3: Rename decision to assignmentJulian Andres Klode2026-01-0533-113/+112
| | | | | | | | | | | | | | 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.
| * solver3: Reorder the source codeJulian Andres Klode2026-01-052-442/+438
| | | | | | | | | | Move the DependencySolver methods and their helpers to the end of the file.
| * solver3: Extract DependencySolverJulian Andres Klode2026-01-054-89/+117
| | | | | | | | Extract almost all dependency logic into a subclass
| * solver3: Refactor to use a namespaceJulian Andres Klode2026-01-055-243/+241
| | | | | | | | | | | | | | 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
| * solver3: Rename key concepts to MiniSAT namesJulian Andres Klode2026-01-052-55/+56
| | | | | | | | | | This should make it easier for people with MiniSAT knowledge to onboard themselves to the solver.
| * solver3: Rename Decision to LiftedBoolJulian Andres Klode2026-01-052-47/+47
| | | | | | | | | | MUST becomes True, MUSTNOT becomes False, and NONE becomes Undefined.
| * solver3: Implement value(Lit) and use itJulian Andres Klode2026-01-052-19/+41
| |
| * solver3: Refactor Assume(), Enqueue() from Var to LitJulian Andres Klode2026-01-052-25/+26
| | | | | | | | This simplifies the code _slightly_
| * solver3: Introduce a Lit type to hold literalsJulian Andres Klode2026-01-051-0/+48
|/
* Merge branch 'configure-index/forceipv' into 'main'Julian Andres Klode2026-01-051-0/+3
|\ | | | | | | | | configure-index Acquire::ForceIPv4/6 See merge request apt-team/apt!531
| * configure-index Acquire::ForceIPv4/6Christopher Bock2026-01-051-0/+3
|/
* Merge branch 'doc-typo-apt-transport-https' into 'main'Julian Andres Klode2026-01-051-2/+2
|\ | | | | | | | | Fix host-specific Acquire::https CAInfo/CRLFile example (Closes: #1112123) See merge request apt-team/apt!541
| * Fix host-specific Acquire::https CAInfo/CRLFile example (Closes: #1112123)Simon Josefsson2026-01-041-2/+2
|/ | | | | | 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";
* Merge branch 'main' into 'main'Julian Andres Klode2025-12-161-3/+3
|\ | | | | | | | | Priority 1000 allows downgrades. Closes #1016967 See merge request apt-team/apt!537
| * Priority 1000 allows downgrades. Closes #1016967Daniel Lewart2025-12-161-3/+3
|/
* Merge branch 'docs/grammar' into 'main'Julian Andres Klode2025-12-1517-44/+44
|\ | | | | | | | | Grammar fixes See merge request apt-team/apt!535
| * Grammar fixesVille Skyttä2025-12-0317-44/+44
|/
* Release 3.1.123.1.12Julian Andres Klode2025-11-1015-76/+89
|
* Improve documentation for apt --cli-versionJulian Andres Klode2025-11-102-12/+10
| | | | Document options inside apt(8)
* weakptr: Simplify destructor to use range-based forJulian Andres Klode2025-11-101-3/+2
| | | | Explicit iterators considered harmful :)
* A special cow for a special weekJulian Andres Klode2025-11-101-2/+8
|
* Merge branch 'bug1120463' into 'main'Julian Andres Klode2025-11-102-1/+25
|\ | | | | | | | | Correctly copy provided version in m-a lazy-init See merge request apt-team/apt!530
| * Correctly copy provided version in m-a lazy-initJulian Andres Klode2025-11-102-1/+25
|/ | | | | | | | When a provides was copied, we inadvertently copied the package version instead of the provided version. Copy the provided version instead. Closes: #1120463