summaryrefslogtreecommitdiff
path: root/src/solver.c
AgeCommit message (Collapse)AuthorFilesLines
2011-10-24solver, pkg: implement versioned conflictsTimo Teräs1-6/+4
One can now say in dependency "!foo<2" which means, that if foo is installed, it needs to be >=2, but it's not a required dependency.
2011-10-14solver: preference scoringTimo Teräs1-75/+112
Should now choose packages better if the best available version is uninstallable for some reason.
2011-09-28solver: return error code if things fail during package installTimo Teräs1-2/+1
2011-09-28solver: evaluate penalty of unsatisfiable name earlyTimo Teräs1-4/+16
this prunes the search tree considerably and fixes a speed regression introduced in an earlier commit.
2011-09-22solver: fix backtrackingTimo Teräs1-32/+33
We need to refresh all name states after backtracking as options that were excluding due to topology ordering might have become available.
2011-09-16solver: inheritable solver flagsTimo Teräs1-26/+108
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-15solver: fix sorting when solver is used multiple times within runTimo Teräs1-1/+2
namely this fixes apk upgrade without --no-self-upgrade when the solver is called twice.
2011-09-14solver: make state pointers completely internalTimo Teräs1-32/+29
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-4/+45
fixes #738
2011-09-14upgrade: reimplement self-upgrade (after solver merge)Timo Teräs1-1/+13
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-14/+29
2011-09-09print: minor cleanup to indented writerTimo Teräs1-1/+1
2011-09-09del: fix recursive deletion and messages (after solver merge)Timo Teräs1-12/+13
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-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