summaryrefslogtreecommitdiff
path: root/src/solver.c
AgeCommit message (Collapse)AuthorFilesLines
2011-09-09applets: start using solver codeTimo Teräs1-83/+447
still todo: - 'fix' is missing - 'del -R' does not work - 'upgrade' does not do self-upgrade first ... and a lot of testing.
2011-09-05solver: report 'complete' solutions with errorsTimo Teräs1-28/+27
Allow to select packages that conflict in case we are looking for errors. This allows 'add --force' to install (on boot) the set of packages with minimum conflicts.
2011-08-18solver: reintroduce install_if supportTimo Teräs1-46/+185
* each package name has two sorting positions, one which causes install_if triggers to be run, and other for bulk dependencies * fix also inverted ordering of package installations
2011-08-05solver: move topology sorting to solver codeTimo Teräs1-38/+92
this allows quite some optimizations to running time and memory requirements.
2011-08-01solver: generate proper error messagesTimo Teräs1-185/+181
* 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-27solver: don't consider package that we can't haveTimo Teräs1-2/+26
Packages that need (re-)installation but which are not available, are excluded now properly.
2011-07-27solver: permutate each preferred solution firstTimo Teräs1-57/+55
The first found solution is the most preferred one then.
2011-07-26solver: new package selection logic (which is not yet used)Timo Teräs1-0/+563
* 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