summaryrefslogtreecommitdiff
path: root/src/solver.c
AgeCommit message (Collapse)AuthorFilesLines
2013-06-17db: refactor repository file constructionTimo Teräs1-1/+1
Fixes also 'fetch' applet to prefer copying/linking to files from cache if possible.
2013-06-14solver: use array_foreach_item and clean upsTimo Teräs1-156/+130
2013-06-13errors: rewrite the logic how errors are reportedTimo Teräs1-0/+3
Instead of the dependency oriented logic, switch to print them for each package or name needed. Might give a bit more readable errors now. There's still few corner cases that proper error is not output, which are cought by the test cases.
2013-06-13solver: prune broken world dependencies with --forceTimo Teräs1-22/+54
mostly useful for reboot, when all packages are not available.
2013-06-13solver: corner case fixesTimo Teräs1-3/+19
- 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
2013-06-13solver: rewrite as deductive solver -- pinning supportTimo Teräs1-26/+135
Fix also pinning test cases to be more sane.
2013-06-13solver: rewrite as deductive solver -- per name flagsTimo Teräs1-8/+24
Handle properly per-name preference flags, and add test cases for testing those via fix applet.
2013-06-13solver: rewrite as deductive solver -- core featuresTimo Teräs1-1830/+418
Implementing basic dependency handling, install_if and awareness of pinning.
2013-06-12Revert "Revert "solver: increase score fields to 32-bits (from 16-bits)""William Pitcock1-21/+27
This reverts commit a2d873a77c6dd2e7f6219e6941af796e1f904e69.
2013-06-11Revert "solver: increase score fields to 32-bits (from 16-bits)"root1-27/+21
This reverts commit 84bfef1a6b587a7da7d12fb701ab0d1d5d6ce2a9.
2013-05-30db: unify handling of special packagesTimo Teräs1-8/+2
make cache a special kind of repository, and automatically cache special packages (virtual packages, or ones installed from command line). add test cases for handling virtual packages. fixes #1617.
2013-04-29solver: increase score fields to 32-bits (from 16-bits)Timo Teräs1-21/+27
We are having so many packages that they might overflow otherwise. "ERROR: Preference overflow" was already reported.
2013-01-28solver: remove backjumping by nameTimo Teräs1-28/+3
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.
2013-01-28solver: reintroduce minimum penalty logicTimo Teräs1-49/+55
Basic per-name per-package specific scoring added.
2013-01-22solver: do not backtrack over "exclude none"Timo Teräs1-1/+8
Otherwise we can return no solution at all instead of partially satisfied solution (and give proper error message).
2013-01-21solver: simplify strength evaluation in constraint handlingTimo Teräs1-20/+8
2013-01-21solver: check if solution is not found at allTimo Teräs1-0/+6
This is an internal error.
2013-01-18solver: fix reset of last_touched to zeroTimo Teräs1-2/+2
2013-01-18solver: some code clean upsTimo Teräs1-5/+5
2013-01-18solver: build fix for debug print on x86_64Natanael Copa1-1/+1
use %zu for size_t
2013-01-18solver: fix name assignment logic to not mess up internal stateTimo Teräs1-11/+10
Should get rid of error messages like: ERROR: Saved_score {4/0/0,74} != score {6/0/0,74}
2012-11-04solver: fix package prefence calculation a bitTimo Teräs1-1/+3
2012-10-08solver: additional backjumping schemeTimo Teräs1-11/+48
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.
2012-10-08solver: optimize backjumpingTimo Teräs1-7/+7
to be functional when backtracking
2012-10-08solver: properly calculate decision "strength" with providesTimo Teräs1-17/+13
2012-10-05solver: fix back jumping once moreTimo Teräs1-17/+33
2012-10-05solver: record dependency apk_name in apk_decisionTimo Teräs1-51/+19
We can't just use the primary name, as that would mess up backtracking. We need to record the name which caused the name to get considered - that way the right last_touched_decision is used on backtracking.
2012-10-03solver: various fixesTimo Teräs1-14/+58
* push_decision expects to always get the package primary 'name' as apk_name. ASSERT that and fix problem cases. (though - this might need to be reverted, and store the non primary name in apk_decision instead to accomodate for better backtracking optimizations) * fix error reporting of virtual package names * make 'assign_name' errors soft. the incorrect packages just are no longer consider instead of aborting whole calculation. * fix backtracking of virtual packages that are not depended directly
2012-10-03solver: improve assert error messagesNatanael Copa1-2/+3
Print name of package and void double "ERROR"
2012-10-03solver: fix compile with -Werror on 64bitNatanael Copa1-1/+1
2012-09-20apk: implement --progress-fd to write progress to a specified fdTimo Teräs1-17/+27
2012-04-27solver: fix install_if triggers on cyclic and early depsTimo Teräs1-11/+15
2012-04-27solver: fix backtracking with install_if dependenciesTimo Teräs1-17/+20
2012-03-31solver: fix a type from previous commitTimo Teräs1-1/+1
2012-03-31solver: fix installation of non-repository packagesTimo Teräs1-1/+2
2012-03-01solver: properly set allowed flag for installed packagesTimo Teräs1-3/+6
2012-02-29solver: rename some fieldsTimo Teräs1-24/+25
2012-02-29solver: merge apk_name_state to apk_nameTimo Teräs1-223/+136
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-29solver, test: make conflicts unconditionalTimo Teräs1-13/+36
Solver will now never report partial solution where a conflict constraint is not satisfied. The is because with --force we might install the partial solution; and if conflicted packages were to be installed we might have extra trouble.
2012-02-28solver: ask confirmation in interactive mode only if there's changesTimo Teräs1-1/+2
2012-02-28solver: do not consider non-allowed packages in main loopTimo Teräs1-43/+32
Instead cache the allowed pinning decision, and use it. Update install decision heuristic to also use this cached information.
2012-02-28solver: consider provided names also for preferenceTimo Teräs1-2/+13
ref #574
2012-02-28solver: fix conflicting provides detectionTimo Teräs1-2/+15
ref #574
2012-02-28solver: allow multiple packages with same virtual providesTimo Teräs1-8/+14
ref #574
2012-02-27solver, test: implements more provides things, add testsTimo Teräs1-30/+92
ref #574
2012-02-27solver: have most inherited things per-package and clean upsTimo Teräs1-156/+168
Required for provides support as package might be pulled in via non-primary package name. This allows relatively easily to pass through inherited flags via the provided names. ref #574.
2012-02-27solver: remove minimum penalty logicTimo Teräs1-49/+7
Reasoning: - it is less useful now that we do not do common dependency merging - provides support would make the required logic overly complicated - callgrind reports that depending on the case it can improve or decrease performance (the overhead pays off only in some cases); the difference is not large either way
2012-02-24solver, dot: elementary provides fixesTimo Teräs1-21/+57
implementation is still not near finished, but now at least it can handle it to a minimum degree. many cases are not done right yet, though. ref #574.
2012-02-24all: introduce apk_provides and use it in apk_nameTimo Teräs1-73/+79
in preparation for provides support. implements also some dependency satisfaction helper routines. ref #574.
2012-02-24solver: unallowed pinning is worse than changing installed packageTimo Teräs1-10/+7