Commit Graph

27 Commits

Author SHA1 Message Date
Ettore Di Giacinto
b8c62c3e85 Move selection logic to package BuildFormula() 2019-12-13 23:37:44 +01:00
Ettore Di Giacinto
926f636dff Revert "Do not allow multiple versions in the results"
This reverts commit 15534ce253.
2019-12-13 23:05:09 +01:00
Ettore Di Giacinto
15534ce253 Do not allow multiple versions in the results
This happens because we select the best instead of selecting the best match in Package BuildFormula()

- Extend the selection test
- Select from databases when ordering
- Relax assertions search
- Split compile step in test
- Adapt tests

Note: This is temporarly until we treat this case in BuildFormula() inside Package
we need to build the constraints between all the requires when expanding
and then create a new constraint that selects the best match
2019-12-13 22:10:12 +01:00
Ettore Di Giacinto
556668fcc4 Make Expand and Revdeps consume a database 2019-12-06 16:28:42 +01:00
Ettore Di Giacinto
30a7312911 Compute upgrades
Make solver compute simply upgrades and the installer execute them.

Add simple upgrade test
2019-11-29 19:01:56 +01:00
Ettore Di Giacinto
ff3b322ea2 Expand also when selecting candidates to install/uninstall 2019-11-29 19:01:55 +01:00
Ettore Di Giacinto
d0c84d24a0 Expand also when ordering assertions 2019-11-29 19:01:52 +01:00
Ettore Di Giacinto
91b3daf180 Drop Best from solver and add cases for solver with expansion 2019-11-29 19:01:51 +01:00
Ettore Di Giacinto
b5381e0248 Make solver consume databases instead of world lists
first step - it is slower in the implementation for now, but all cases
seems to be sorted out.
Drop Flagged() and IsSet() from solver. the solver wont care, and only
the assertion value does matter (exception for uninstall)
2019-11-29 19:01:41 +01:00
Ettore Di Giacinto
3a7cfae9ae Adapt solver test to structure change 2019-11-23 19:01:26 +01:00
Ettore Di Giacinto
32dea6f7fd Add Best() to solver for package selection based on version 2019-11-16 14:40:58 +01:00
Ettore Di Giacinto
3e850e9607 Adapt tests and fixup races in spinner
Signed-off-by: Ettore Di Giacinto <mudler@gentoo.org>
2019-11-16 13:26:33 +01:00
Ettore Di Giacinto
2dd56e9e49 Create a type for lists of PackageAssertion, and move Order() inside it 2019-11-11 11:02:47 +01:00
Ettore Di Giacinto
1131a52f97 Extend the test also for the packages that doesn't have a special ordering 2019-11-09 11:18:20 +01:00
Ettore Di Giacinto
a3b4d953d7 Add disequality test for assertion ordering 2019-11-09 11:16:22 +01:00
Ettore Di Giacinto
f7efbe23f2 Add topological order for assertions 2019-11-09 10:47:18 +01:00
Ettore Di Giacinto
ff582ce77c Enhance Uninstall and resolve conflict sets
Compute a minimum conflict set over the uninstall.

Adds also tests for specific cases covered by Uninstall now
2019-06-11 18:03:50 +02:00
Ettore Di Giacinto
0bb72e67fd Refactor package imports 2019-06-05 19:13:09 +02:00
Ettore Di Giacinto
86472e7bf5 Normalize input data beforeahead 2019-06-05 18:49:35 +02:00
Ettore Di Giacinto
632619fe91 Add uninstall
Uninstall can be done in different ways - the most accurate would be to try find a minimum subset of packages that gives conflicts and try to reduce them gradually.
E.g. this could be done with other SAT algorithms. For now we keep things simple and we compute the uninstalls as an indirect of an installation from an empty profile.

Also take care of corner cases where world has no clauses, and fixes a typo in building the world formula
2019-06-05 18:49:35 +02:00
Ettore Di Giacinto
fef6467cc9 Rename Solve to Install 2019-06-05 18:49:35 +02:00
Ettore Di Giacinto
2b095601eb Handle case when no packages are installed in the system, and add test for it 2019-06-05 18:49:35 +02:00
Ettore Di Giacinto
39a3e433a7 Cleanup 2019-06-05 18:49:34 +02:00
Ettore Di Giacinto
a342bc515f Implement basic install algorithm 2019-06-05 18:49:34 +02:00
Ettore Di Giacinto
5184a26e69 Build formulas recursively 2019-06-05 18:49:34 +02:00
Ettore Di Giacinto
e6239f416b Make formula built less complex 2019-06-05 18:49:34 +02:00
Ettore Di Giacinto
1084941240 Draft 2019-06-05 18:49:34 +02:00