aboutsummaryrefslogtreecommitdiffstats
path: root/src/apk_solver_data.h
Commit message (Collapse)AuthorAgeFilesLines
* upgrade: implement --ignore to exclude some packages from upgradenrybowski2019-12-121-2/+2
|
* solver: instead of tracking selected packages, score by requirer count for ↵William Pitcock2017-11-021-1/+0
| | | | tiebreaking
* solver: implement support for choosing default virtualsWilliam Pitcock2017-11-021-0/+1
| | | | | | | | | | By introducing a new package metadata field, `provider_priority` (index letter `k`), we can specify default packages to satisfy a virtual. If a user wishes to select an alternative provider for the virtual, a changeset swapping the default provider for the selected provider will be generated by the dependency resolver.
* solver: consider virtual provides to exclude non-provides transitivelyTimo Teräs2017-10-271-0/+1
| | | | | | | | | | | this fixes package selection when a 'real' package exists, but would need to be provided by another package with 'virtual provides'. In current package database this can happen with postgresql which is also provided by postgresql-bdr. Normally postgresql would be satisfied by postgresql, but if any package depends on postgresql-bdr and there's no versioned dependency on postgresql this will help apk figure out that postgresql-bdr should be used.
* solver: additional improvements to install_if handlingTimo Teräs2014-03-121-0/+2
|
* solver: fix pinning+cache to workTimo Teräs2013-06-201-1/+2
| | | | | Mistakenly allowed masked out package to be installed if it was in cache.
* solver: fix package deletion to consier provides properlyTimo Teräs2013-06-191-3/+10
|
* solver: properly order deletion of unneeded packagesTimo Teräs2013-06-191-2/+1
|
* solver: add logic: transitive provides exclusionTimo Teräs2013-06-191-1/+2
| | | | | | | If name N is required, and all providers of A also provide B, it means that only instances of B can be selected that provide N. This is strong help with cases when so:libfoo.so.1 is updated to so:libfoo.so.2 and not everything is recompiled.
* upgrade: new option: --latest (-l)Timo Teräs2013-06-191-0/+1
| | | | | | | | | | | | | Select latest version of package (if it is not pinned), and print error if it cannot be installed due to other dependencies. Together with --available, it selects the latest package which is present at least in some repository. This also fixes few solver issues with ordering of package selection that got quite apparent with this flag. Namely, we cannot "lock" a package until it's reverse dependencies are locked or not all of the solver flags are propagated properly.
* solver: prune broken world dependencies with --forceTimo Teräs2013-06-131-0/+1
| | | | mostly useful for reboot, when all packages are not available.
* solver: corner case fixesTimo Teräs2013-06-131-0/+2
| | | | | | | - try harder to not change anything during self-upgrade - also honor locking to packages that where earlier used in merging common dependencies - clarify upgrade applet help messages
* solver: rewrite as deductive solver -- pinning supportTimo Teräs2013-06-131-2/+4
| | | | Fix also pinning test cases to be more sane.
* solver: rewrite as deductive solver -- per name flagsTimo Teräs2013-06-131-2/+4
| | | | | Handle properly per-name preference flags, and add test cases for testing those via fix applet.
* solver: rewrite as deductive solver -- core featuresTimo Teräs2013-06-131-27/+21
| | | | | Implementing basic dependency handling, install_if and awareness of pinning.
* Revert "Revert "solver: increase score fields to 32-bits (from 16-bits)""William Pitcock2013-06-121-18/+4
| | | | This reverts commit a2d873a77c6dd2e7f6219e6941af796e1f904e69.
* Revert "solver: increase score fields to 32-bits (from 16-bits)"root2013-06-111-4/+18
| | | | This reverts commit 84bfef1a6b587a7da7d12fb701ab0d1d5d6ce2a9.
* solver: increase score fields to 32-bits (from 16-bits)Timo Teräs2013-04-291-18/+4
| | | | | We are having so many packages that they might overflow otherwise. "ERROR: Preference overflow" was already reported.
* solver: remove backjumping by nameTimo Teräs2013-01-281-1/+0
| | | | | | It is incorrect optimization causing valid solutions to be skipped. Any performance it might've gained, should be fixed by reintroduction of the minimum penalty logic added in previous commit.
* solver: reintroduce minimum penalty logicTimo Teräs2013-01-281-0/+23
| | | | Basic per-name per-package specific scoring added.
* solver: additional backjumping schemeTimo Teräs2012-10-081-0/+1
| | | | | | Enabled when all attempts to satisfy a name failed, we know that we can ignore all decisions until we find a decision affecting the name we wanted to satisfy.
* solver: merge apk_name_state to apk_nameTimo Teräs2012-02-291-0/+45
apk_name_state is now quite small; and we avoid overhead of two pointers (+ malloc overhead) when we just make it part of apk_name. It also fixes some problems (that got introduced) where apk_name_state was not allocated.