Commit Graph

1104 Commits

Author SHA1 Message Date
Ettore Di Giacinto
4fbe84b30b
Support concurrency in InMemoryDB and reach feature parity with boltdb 2019-11-02 17:56:43 +01:00
Ettore Di Giacinto
c04e6496fb
Enhance output with consistent usage of logger 2019-11-02 10:26:28 +01:00
Ettore Di Giacinto
2b9e512272
Respect builder concurrency when resolving deps 2019-11-01 16:30:46 +01:00
Ettore Di Giacinto
e1fab91802
update vendor/ 2019-11-01 16:29:08 +01:00
Ettore Di Giacinto
e835562543
Add logging package
it will abstract other frameworks eventually, but for now keep it simple
2019-11-01 16:27:44 +01:00
Ettore Di Giacinto
ef1d0e5573
Make also deps recalculation concurrent 2019-11-01 16:26:11 +01:00
Ettore Di Giacinto
eef03f8909
Add spinner 2019-11-01 13:08:53 +01:00
Ettore Di Giacinto
a4535c5777
Avoid panics from inner 'sh' library 2019-11-01 12:41:55 +01:00
Ettore Di Giacinto
624e991688
Parametrize concurrency 2019-11-01 12:41:31 +01:00
Ettore Di Giacinto
f61b79692c
Parallelize ebuild scanning 2019-11-01 12:03:48 +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
71100688f2
Enhance cmd output 2019-10-31 12:41:12 +01:00
Ettore Di Giacinto
190d4f0064
Provide more accurate information in gentoo/simpleparser
Extract categories and such
2019-10-31 12:38:59 +01:00
Ettore Di Giacinto
66631f9af9
Add solver tests from fixtures
Try to load with the recipe builder and solve simple installation queries.
Also adapt tests to the more accuracy from simple parser
2019-10-31 12:38:59 +01:00
Ettore Di Giacinto
47128e932d
Check if package exists in db before adding it 2019-10-31 12:38:59 +01:00
Ettore Di Giacinto
e5db47a679
Add Explain() to Assertions and Packages 2019-10-31 12:38:59 +01:00
Ettore Di Giacinto
7f848ee5ef
Update vendor/ 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
9d0dc601b7
Update vendor/ 2019-10-31 12:38:58 +01:00
Ettore Di Giacinto
8ca6051a04
Add cmd/ and main.go 2019-10-31 12:38:58 +01:00
Ettore Di Giacinto
c3197d70fc
Add boltdb implementation for packageset and db 2019-10-31 12:38:32 +01:00
Ettore Di Giacinto
da8734ed6a
Add a PoC of simple ebuild parser (WIP) 2019-08-24 13:15:40 +02:00
Ettore Di Giacinto
e8d151e935
Adapt the existing test to the fixture change 2019-08-24 13:15:10 +02:00
Ettore Di Giacinto
98ab6202fc
Drop unneeded fixture 2019-08-24 13:14:47 +02:00
Ettore Di Giacinto
283fae1248
Add tests fixtures 2019-07-27 11:31:01 +02:00
Ettore Di Giacinto
bff2c1b798
Add treebuilder interface and Gentoo prototype 2019-07-27 11:30:44 +02: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
9f3f715324
Add BuildFormula and ReuiresContains tests 2019-06-11 23:38:16 +02:00
Ettore Di Giacinto
3f762070fe
Add tests 2019-06-11 23:18:16 +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
a42d8e809f
update vendor/ 2019-06-11 18:07:13 +02:00
Ettore Di Giacinto
cb89d946e5
Create cover target 2019-06-11 18:04:57 +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
5f98a665a5
Add code coverage 2019-06-06 17:16:32 +02:00
Ettore Di Giacinto
b32508eded
Fix make deps 2019-06-05 19:39:39 +02:00
Ettore Di Giacinto
da465b9228
Add travis file 2019-06-05 19:37:36 +02:00
Ettore Di Giacinto
e2442f8ed8
update vendor/ 2019-06-05 19:14:29 +02:00
Ettore Di Giacinto
0bb72e67fd
Refactor package imports 2019-06-05 19:13:09 +02:00
Ettore Di Giacinto
d842198537
Update README 2019-06-05 18:55:01 +02:00
Ettore Di Giacinto
86472e7bf5
Normalize input data beforeahead 2019-06-05 18:49:35 +02:00
Ettore Di Giacinto
6e7cef4710
Add simple makefile 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