Commit Graph

69 Commits

Author SHA1 Message Date
Ettore Di Giacinto
ef1d0e5573 Make also deps recalculation concurrent 2019-11-01 16:26:11 +01:00
Ettore Di Giacinto
ff98bdfc16 Enable two-pass scan
Split dependency resolving ( definition <-> db mapping ) into a method of the tree (ResolveDeps),
and do not care of looking up for packages while parsing.

Note: it is slower but it is much accurate and we can
choose what to do with the ones which aren't resolved (and show a helpful message too).
2019-11-01 11:32:17 +01:00
Ettore Di Giacinto
e5db47a679 Add Explain() to Assertions and Packages 2019-10-31 12:38:59 +01:00
Ettore Di Giacinto
a5ceafca26 Add Tree parser with bolt
Also add Tree builder (Recipe) which can recompose trees.
2019-10-31 12:38:59 +01:00
Ettore Di Giacinto
c3197d70fc Add boltdb implementation for packageset and db 2019-10-31 12:38:32 +01:00
Ettore Di Giacinto
0813f75546 Add packageset 2019-07-27 11:29:39 +02:00
Ettore Di Giacinto
db90a8f69c Add package category and make fingerprint more unique 2019-06-14 17:40:24 +02:00
Ettore Di Giacinto
b29ce651b9 Expose Uses to interface 2019-06-12 21:32:15 +02:00
Ettore Di Giacinto
caa7c788ec Drop State from package
Also tests for Clone()
2019-06-12 20:57:39 +02:00
Ettore Di Giacinto
cab133f229 Imeplement PackageDatabase
Consume InMemoryDatabase for now, which act as a singleton in-memory db.
2019-06-11 23:04:01 +02:00
Ettore Di Giacinto
f47e907dda Refactor 2019-06-11 18:48:09 +02: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
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
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