summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Release 2.9.332.9.33Julian Andres Klode2025-03-125-6/+22
|
* Merge branch 'solver3' into 'main'Julian Andres Klode2025-03-126-22/+62
|\ | | | | | | | | solver3: Fix Recommends/Suggests vs Enhances confusion See merge request apt-team/apt!461
| * solver3: Fix test-resolve-by-keep-new-recommendJulian Andres Klode2025-03-123-21/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reorder the if branches a bit to simplify the understanding of the promotions, and allow us to keep track of which dependency existed in the installed version. Change the rule for promoting new recommends to only promote new recommends to depends in *upgrade* and not *dist-upgrade* per the test-resolve-by-keep-new-recommends test case. This makes some sense: In a dist-upgrade, the solver could otherwise decide to remove an installed package if both the following hold: (1) something needs the upgraded version | something else (2) the upgraded version is not installable due to unsat recommends
| * solver3: Fix Recommends/Suggests vs Enhances confusionJulian Andres Klode2025-03-123-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We accidentally considered an Enhances a reason to keep a package installed, which of course it is not, fix the determination of "existing soft dependency" to only include soft dependencies that should keep a package installed in the autoremover to solve the issue. This also fixes edsp/mantic-upgrade-rel-to-2024-05-29.edsp to not install llvm-13-dev for clang-13 which is an installed package with no upgrade. Also ensure we stop after the first match; the DependsList() is ordered by decreasing priority and we don't want to override Recommends by Suggests in case a package declares both... LP: #2101800
| * test: Fix some weird editing artefactJulian Andres Klode2025-03-121-1/+1
|/
* Merge branch 'solver3' into 'main'Julian Andres Klode2025-03-104-12/+90
|\ | | | | | | | | solver3: Various bug fixes See merge request apt-team/apt!459
| * solver3: Correctly determine 'same' or groupsJulian Andres Klode2025-03-102-9/+47
| | | | | | | | | | | | We incorrectly used the DependencyData of the first or group member, however that only checked that the first or group member was the same and that both either had a next member or not.
| * solver3: Print correct reason when registering dependencyJulian Andres Klode2025-03-101-2/+1
| | | | | | | | This is relevant when debugging common dependencies.
| * solver3: Fix detection of satisfied recommends for pkg variablesJulian Andres Klode2025-03-101-1/+1
| | | | | | | | This only worked for version literals lol
| * edsp: Set Forbid-New-Install/Forbid-Remove: no if other is setJulian Andres Klode2025-03-102-0/+41
|/ | | | | | | | The upgrade code may also set Upgrade: yes, and this sets both to yes, so `apt upgrade` dumps behave like `apt-get upgrade` ones, which of course is not intentional. moo
* Release 2.9.32Julian Andres Klode2025-03-0948-201/+889
|
* Merge branch 'solver3' into 'main'Julian Andres Klode2025-03-093-7/+17
|\ | | | | | | | | solver3: Do not prefer new installs over manually installed obsoletes See merge request apt-team/apt!458
| * solver3: Do not prefer new installs over manually installed obsoletesJulian Andres Klode2025-03-093-7/+17
|/ | | | | | | | | | Only move obsolete packages last that are automatically installed, as we don't want to remove manually installed obsolete packages. Add some missing const annotations to the operator[] arguments as well that were needed. LP: #2100247
* Merge branch 'transaction' into 'main'Julian Andres Klode2025-03-098-86/+597
|\ | | | | | | | | Run 3.0 solver if internal is unsuccessful or we have apport for automatic solver evaluation See merge request apt-team/apt!446
| * Print --solver 3.0 explanation if both internal and it failedJulian Andres Klode2025-03-094-1/+26
| | | | | | | | | | | | | | | | | | | | This can provide useful additional context. To avoid updating the whole test suite for it, introduce a new option `quiet::NoSolver3Explanation` and set it by default. All the other tests that assert output will already have matching tests for --solver 3.0 with the correct messages asserted, it makes no sense to duplicate them.
| * Evaluate and fall back to the 3.0 solverJulian Andres Klode2025-03-095-86/+446
| | | | | | | | | | | | | | | | | | | | | | | | Always run the 3.0 solver after the internal solver. If the internal solver failed, and the 3.0 solver did not, use the 3.0 result. If 3.0 solver failed or produced a worse result than the internal solver, write an apport crash dump. We exclude situations which we now the solver can't handle, i.e. removals are forbidden and you requested removals, and stuff like that.
| * depcache: Add a new UpgradeCount() memberJulian Andres Klode2025-03-092-0/+17
| |
| * Introduce pkgDepCache::Transaction for transactional depcache updatesJulian Andres Klode2025-03-092-0/+109
|/
* Merge branch 'solver3' into 'main'Julian Andres Klode2025-03-0830-113/+654
|\ | | | | | | | | solver3: Verbose error messages and some bugfixes See merge request apt-team/apt!457
| * solver3: Verbose error messagesJulian Andres Klode2025-03-0830-80/+609
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce a new function, LongWhyStr() that returns a longer reason for why something is being installed (or not). This does the same path walk as the other function does, but it renders the clauses at each level, and one per line, so the whole output is a lot more informative. It is a separate function to keep the existing debug messages use the simple single line implication graph We remove the other special case in AddWork() for empty solutions to mke use of the general case in Solve() instead, and then adapt the case in Solve() to the same case as in Enqueue(). This also happens to fix the bug that when we encountered an empty clause we just printed the clause had no solution, but not how we got to install the package with the clause. Adapt the test suite for the changes which is an annoying amount of paperwork.
| * solver3: bestReason: Only find actual assignmentsJulian Andres Klode2025-03-071-1/+5
| | | | | | | | | | | | | | | | | | | | I marked exim4-daemon-light for install, which marked exim4-daemon-heavy for not install, but now in postfix Conflicts: mail-transport-agent we saw "not exim4-daemon-heavy" as the reason for not installing postfix. Oh noes.
| * solver3: Support pretty printing clausesJulian Andres Klode2025-03-062-6/+17
| | | | | | | | | | This will print the underlying dependency which is nicer to read.
| * solver3: cleanup operators for VarJulian Andres Klode2025-03-061-8/+3
| | | | | | | | Particularly, use single line and implement operator!=
| * solver3: refactor: Return inserted Clause in AddWork()Julian Andres Klode2025-03-062-8/+9
| | | | | | | | | | This avoids relying on the inserted clause being at the back of the clauses vector.
| * solver3: Simplify Var pointer taggingJulian Andres Klode2025-03-061-15/+16
|/ | | | | | | | Use an integer and tag the lowest bit manually. This makes it much easier to next convert this into a literal. Add some constexpr and remove an unnecessary assertion on CastPkg().
* Merge branch 'test-suite-grep-error-details' into 'main'Julian Andres Klode2025-03-042-2/+27
|\ | | | | | | | | test: Grep continuation lines in error messages See merge request apt-team/apt!456
| * test: Grep continuation lines in error messagesJulian Andres Klode2025-03-042-2/+27
|/ | | | | This is important for upcoming multi-line solver error message work.
* Merge branch 'no-gpg-error' into 'main'Julian Andres Klode2025-03-047-15/+15
|\ | | | | | | | | Replace "GPG error" with "OpenPGP signature verification failed" See merge request apt-team/apt!455
| * Replace "GPG error" with "OpenPGP signature verification failed"Julian Andres Klode2025-03-047-15/+15
|/ | | | Reported-by: cacin on irc
* Merge branch 'edsp-downloadable' into 'main'Julian Andres Klode2025-03-036-11/+20
|\ | | | | | | | | Consider 0-size debs not downloadable, set a size in EDSP See merge request apt-team/apt!454
| * edsp: Write 'Size' to the EDSP filesJulian Andres Klode2025-03-033-2/+9
| | | | | | | | | | | | This allows solvers to optimize by download size; and gives us a better means of interpreting "downloadable" debs (they must have a size > 0 after all).
| * Consider 0-size debs not downloadable, set a size in EDSPJulian Andres Klode2025-03-032-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | EDSP dumps all appear as a single file, so we cannot determine correctly if a package is obsolete. We can fix this by ensuring that only debs with a size are downloadable, and then by faking a size in EDSP: The size is 1 if APT-Release is set (there is a source to download it from) or 0 otherwise. This ensures that the obsolete logic in solver3 works correctly, as well as the obsolete patterns, if anyone could actually use it on the EDSP files.
| * refactor obsolete checks to use VerFileIterator::Downloadable()Julian Andres Klode2025-03-032-11/+7
|/
* Merge branch 'design-docs' into 'main'Julian Andres Klode2025-02-281-0/+199
|\ | | | | | | | | Add doc/design/install.md: Installation design See merge request apt-team/apt!449
| * Add doc/design/install.md: Installation designJulian Andres Klode2025-02-281-0/+199
|/ | | | | | This documents the user interface for apt install, currently only the solution screen as implemented in the 3.0 output format.
* Release 2.9.312.9.31Julian Andres Klode2025-02-285-6/+33
|
* Fix FTBFS in German documentation translationJulian Andres Klode2025-02-281-1/+1
| | | | Gbp-Dch: ignore
* de: Actually fix the typo "LIsten"Julian Andres Klode2025-02-281-1/+1
| | | | Gbp-Dch: ignore
* German manpage translation updateHelge Kreutzmann2025-02-281-327/+290
| | | | Closes: #1099118
* test-apt-ftparchive-cachedb: Avoid race condition in test caseJulian Andres Klode2025-02-271-0/+5
| | | | | | | | | | | | | | apt-ftparchive skips regenerating Contents if they are newer than the Packages files. Most of the time, the test ended up generating Contents and Packages files with the same-second timestamp; so we ended up regenerating them and passing the test. However, sometimes, the timestamp of the Contents file was 1s higher and we ended up not regenerating the Contents file and hence failed the test case. Ensure the timestamps actually are the same to avoid the race condition and make this stable.
* Russian translation updateАлексей Шилин2025-02-261-41/+37
| | | | Closes: #1098937
* Merge branch 'fix-version-extra' into 'main'Julian Andres Klode2025-02-243-3/+15
|\ | | | | | | | | Fix crash in VersionExtra using --with-source etc See merge request apt-team/apt!453
| * Fix crash in VersionExtra using --with-source etcJulian Andres Klode2025-02-243-3/+15
|/ | | | | | | | | | | | | | | | | | | | VersionExtra holds, at runtime, the SHA256 of the packages being added to try to avoid deduplicating obviously different packages; the SHA256 itself is too large to store in the cache. When volatile sources are used, the VersionExtra array is not initialized, or rather it used to be initialized to 32*1024 zero elements as a performance optimization. This meant that specifying --with-source with a package that looks like a duplicate of a version with an ID >= 32*1024 triggered the assertion; so we could not reproduce it easily in the test suite. Remove the optimized initialization to make the behavior more uniform; and treat too large version IDs as having no SHA256. Closes: #1098702
* apt-ftparchive: Do not output locale dependent dsc file sizeDavid Kalnischkies2025-02-211-1/+1
| | | | | | | | | | | | | | Removal of std::to_string avoids the temporary std::string, but it leads to locale-dependent output that parsers (including ours) are not prepared to encounter especially as number formatting can be highly ambiguous due to different rules surrounding '.' and ','. In the distant future (c++20) this could be replaced with a variant of std::format, which incidentally is also what std::to_string becomes an alias for in an even more distant future (c++26). Regression-of: 729a5c8f4fb8c841497d26170e1a47c41617ecd9 Reported-By: Stefan Lippers-Hollmann and Kel Modderman on IRC
* German program translation updateHelge Kreutzmann2025-02-211-5/+3
| | | | Closes: #1098456
* Czech program translation updateMiroslav Kure2025-02-211-28/+21
| | | | Closes: #1095976
* Merge branch 'solver3'Julian Andres Klode2025-02-187-95/+77
|\
| * test: Improve output cleaning for solver progressJulian Andres Klode2025-02-181-12/+5
| | | | | | | | | | | | | | | | | | | | | | We don't really care about solver progress messages in testing; hide them when comparing output, and hide them better than before. Previously testsuccessequal ... --solver 3.0 behaved differently than tests run with globally forced on 3.0 solver. Stop cleaning up autoremovals, but do clean up "Calculating upgrade" as well.
| * solver3: Fix error stack handlingJulian Andres Klode2025-02-181-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | Pushing the stack in push and popping it in pop did not really work correctly and is more complex than needed. Instead, push the error stack at the start of the Solve() method and revert at the end, such that we leave exactly at the same error stack level we entered. To handle error clearing on backtracking, just discard any pending errors.
| * solver3: Fix test-apt-move-and-forget-manual-sectionsJulian Andres Klode2025-02-182-3/+24
| | | | | | | | | | Implement the moving of the auto bit. The whole auto-bit management is not entirely optimal yet, but this works.