summaryrefslogtreecommitdiff
path: root/src/apk_solver.h
AgeCommit message (Collapse)AuthorFilesLines
2019-12-12upgrade: implement --ignore to exclude some packages from upgradenrybowski1-0/+1
2018-06-14fetch: ignore conflicts when solving --recursive fetchesTimo Teräs1-0/+1
2013-06-19upgrade: new option: --latest (-l)Timo Teräs1-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.
2013-06-13solver: rewrite as deductive solver -- core featuresTimo Teräs1-17/+12
Implementing basic dependency handling, install_if and awareness of pinning.
2012-02-29solver: merge apk_name_state to apk_nameTimo Teräs1-0/+3
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.
2012-02-16solver: record repository tag, and flags in solutionTimo Teräs1-3/+11
name state could get overwritten later, so we can't use that when generating the changeset.
2012-02-15solver, db: repository pinning improvementsTimo Teräs1-1/+1
* solver internally calculates now using tags; not repository masks * installeddb now contains the tag name where the package came from -> we can now handle upgrades properly * the pinning is still a preference, and not strictly enforced; versioned dependencies may overrule preference
2012-01-13add: make repository tag pinning strongerTimo Teräs1-0/+1
Previously we would not upgrade just by doing "apk add foo@tag" if foo was already installed. It required explicit '-u'. This allows 'apk add' to explicitly prefer the newly specified pinning.
2011-09-16solver: inheritable solver flagsTimo Teräs1-1/+2
allow per-name solver flags to be inheritable, and use them in self-upgrade, add -u and the fix applet. this gives more familiar behaviour for the upgrades.
2011-09-14solver: make state pointers completely internalTimo Teräs1-2/+0
the only bit of information needed in solver commit is the "hard" topology sorting information for trigger ordering. fixes a bug in "apk del" which uses the state pointers to do intermediate calculations between solution solving and commit.
2011-09-14solver, db: run triggers in dependency orderTimo Teräs1-0/+2
fixes #738
2011-09-13all: update copyright year statementTimo Teräs1-1/+1
2011-09-13solver: add per-name specific flags, and fix the fix appletTimo Teräs1-0/+2
2011-09-09del: fix recursive deletion and messages (after solver merge)Timo Teräs1-1/+7
Deduce the world dependencies to remove locally, and same for the additional messages about packages not deleted.
2011-09-09applets: start using solver codeTimo Teräs1-6/+13
still todo: - 'fix' is missing - 'del -R' does not work - 'upgrade' does not do self-upgrade first ... and a lot of testing.
2011-08-01solver: generate proper error messagesTimo Teräs1-1/+1
* the solver no longer does look-ahead locking of names (could be possibly optimized later); instead names are now always ordered strictly to properly detect the package names which are unsolveable * basic error tests added, so we can see the most likely problem in dependencies easily
2011-07-26solver: new package selection logic (which is not yet used)Timo Teräs1-0/+33
* basic code for a backtracking, forward checking dependency satisfier * works better when there are tricky dependencies to solve (when can't just upgrade everything to most preferred versions) * the new code always evaluates all of 'world' constraints (old code just does incremental updates based on heuristics) * is probably somewhat slower than old code (probably unnoticeable difference in most cases) * makes easier to write support for provides and repository pinning * test applet and a bunch of test cases added which uses the new code * from the old feature set install_if is not yet implemented