aboutsummaryrefslogtreecommitdiffstats
path: root/src/solver.c
Commit message (Collapse)AuthorAgeFilesLines
...
* add: make repository tag pinning strongerTimo Teräs2012-01-131-8/+19
| | | | | | 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.
* solver: print repository tag when committing package changesTimo Teräs2012-01-121-9/+22
|
* db, solver: refuse committing changes if there is missing tagsTimo Teräs2012-01-121-0/+10
|
* solver: report number of (mega)bytes usedTimo Teräs2011-12-271-4/+11
|
* solver: fix error detection for certain unsatisfiability casesTimo Teräs2011-11-231-2/+46
| | | | | did not properly detect as error if name could not be satisfied due to being available in tagged repository which is not enabled.
* solver: fix zero score comparisonTimo Teräs2011-11-011-1/+1
|
* solver: return changeset even for partial solutionsTimo Teräs2011-11-011-12/+8
| | | | otherwise --force does might not work during boot.
* solver: consider world dependencies to determining exit scoreTimo Teräs2011-11-011-2/+4
|
* solver: misc fixesTimo Teräs2011-10-311-9/+22
| | | | | caused upgrading package X with "apk add path/to/x...apk" where the package file was not in any repository to not work properly.
* solver: fix indentation of package lists (in interactive mode)Timo Teräs2011-10-291-1/+1
| | | | broken in commit bfd53b59d2e62e17 (print: minor cleanup to indented writer).
* solver, db: implement repository pinningTimo Teräs2011-10-291-5/+34
| | | | | | | | | | | | | | | | | | Improves /etc/apk/repositories format so you can say: http://nl.alpinelinux.org/alpine/v2.3/main @edge http://nl.alpinelinux.org/alpine/edge/main @testing http://nl.alpinelinux.org/alpine/edge/testing After which you can pin dependencies to these tags using: apk add stableapp newapp@edge bleedingapp@testing Apk will now by default only use the untagged repositories, but adding a tag to specific dependency: 1. will prefer that tag for the name 2. allowing pulling in dependencies from that tag (though, it prefers untagged packages to satisfy deps if possible) fixes #575
* solver, pkg: implement versioned conflictsTimo Teräs2011-10-241-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.
* solver: preference scoringTimo Teräs2011-10-141-75/+112
| | | | | Should now choose packages better if the best available version is uninstallable for some reason.
* solver: return error code if things fail during package installTimo Teräs2011-09-281-2/+1
|
* solver: evaluate penalty of unsatisfiable name earlyTimo Teräs2011-09-281-4/+16
| | | | | this prunes the search tree considerably and fixes a speed regression introduced in an earlier commit.
* solver: fix backtrackingTimo Teräs2011-09-221-32/+33
| | | | | | We need to refresh all name states after backtracking as options that were excluding due to topology ordering might have become available.
* solver: inheritable solver flagsTimo Teräs2011-09-161-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.
* solver: fix sorting when solver is used multiple times within runTimo Teräs2011-09-151-1/+2
| | | | | namely this fixes apk upgrade without --no-self-upgrade when the solver is called twice.
* solver: make state pointers completely internalTimo Teräs2011-09-141-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.
* solver, db: run triggers in dependency orderTimo Teräs2011-09-141-4/+45
| | | | fixes #738
* upgrade: reimplement self-upgrade (after solver merge)Timo Teräs2011-09-141-1/+13
|
* all: update copyright year statementTimo Teräs2011-09-131-1/+1
|
* solver: add per-name specific flags, and fix the fix appletTimo Teräs2011-09-131-14/+29
|
* print: minor cleanup to indented writerTimo Teräs2011-09-091-1/+1
|
* del: fix recursive deletion and messages (after solver merge)Timo Teräs2011-09-091-12/+13
| | | | | Deduce the world dependencies to remove locally, and same for the additional messages about packages not deleted.
* applets: start using solver codeTimo Teräs2011-09-091-83/+447
| | | | | | | | | still todo: - 'fix' is missing - 'del -R' does not work - 'upgrade' does not do self-upgrade first ... and a lot of testing.
* solver: report 'complete' solutions with errorsTimo Teräs2011-09-051-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.
* solver: reintroduce install_if supportTimo Teräs2011-08-181-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
* solver: move topology sorting to solver codeTimo Teräs2011-08-051-38/+92
| | | | | this allows quite some optimizations to running time and memory requirements.
* solver: generate proper error messagesTimo Teräs2011-08-011-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
* solver: don't consider package that we can't haveTimo Teräs2011-07-271-2/+26
| | | | | Packages that need (re-)installation but which are not available, are excluded now properly.
* solver: permutate each preferred solution firstTimo Teräs2011-07-271-57/+55
| | | | The first found solution is the most preferred one then.
* solver: new package selection logic (which is not yet used)Timo Teräs2011-07-261-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