1 |
On Mon, 2005-08-22 at 21:41 +0100, Stephen Bennett wrote: |
2 |
> On Mon, 22 Aug 2005 13:49:14 -0400 |
3 |
> Kristian Benoit <kbenoit@×××××××.com> wrote: |
4 |
> |
5 |
> > I do agree with that, portage probably need a rewrite/better |
6 |
> > modularization anyway. There is/was a project called portage-ng () you |
7 |
> > might want to have a look at. I did a little in that direction |
8 |
> > recently, and it seems that there is not too many people working on |
9 |
> > it since drobbins left, but you can contact Pieter |
10 |
> > (pvdabeel@g.o). I might get on that too at some point in the |
11 |
> > future too. |
12 |
> |
13 |
> portage-ng is dead. There is a rewrite going on, but it'll take a while |
14 |
> to get anywhere near usable. |
15 |
|
16 |
Here is my recent communication with Pieter: |
17 |
|
18 |
On Sat, 2005-08-13 at 21:59 +0200, Pieter Van den Abeele wrote: |
19 |
> On 13 Aug 2005, at 19:16, Kristian Benoit wrote: |
20 |
> |
21 |
> > I've heard that you might be the last to know something about |
22 |
> > portage-ng. What's the actual status, |
23 |
> |
24 |
> Here's what I've done so far: |
25 |
> |
26 |
> I've build upon Andreas' Zeller idea of using Smolka's feature logic |
27 |
> for software configuration management. Zeller's approach was ok for |
28 |
> determining consistency/inconsistency of software configurations. In |
29 |
> his phd thesis he described the algorithm involved and discussed time |
30 |
> complexity (which goes to NP if you allow for quantification). My |
31 |
> impression after implementing his idea was that for automated |
32 |
> construction there were a few things that were lacking, and some |
33 |
> things were incorrect. I revisited Zellers feature logic, and ended |
34 |
> up with a clean implementation of a declarative language which has |
35 |
> some very desirable properties for automated software construction. |
36 |
> I'd say my approach is closer to the spirit of Smolka's feature logic |
37 |
> than Zellers approach. My non-destructive feature unification has a |
38 |
> worst case time complexity of O(n x m) where n is the length of the |
39 |
> feature term describing your system, and m is the length of the |
40 |
> feature term describing the component to be added. In practice |
41 |
> performance is very good. An emerge --vp --emptytree kde with the |
42 |
> regular portage takes about 55 seconds on my Open Desktop Workstation |
43 |
> and produces a list of 200 packages. A similar action using my |
44 |
> implementation: |
45 |
> |
46 |
> ===================================================================== |
47 |
> Total time: 14.55 seconds |
48 |
> ===================================================================== |
49 |
> Predicate Box Entries = Calls+Redos Time |
50 |
> ===================================================================== |
51 |
> vunify/4 341,900 = 341,900+0 72.6% |
52 |
> $garbage_collect/1 326 = 326+0 13.6% |
53 |
> lists:append/3 684,320 = 684,320+0 4.0% |
54 |
> genterm/2 520 = 520+0 3.9% |
55 |
> hunify/4 520 = 520+0 3.3% |
56 |
> is/2 342,420 = 342,420+0 1.8% |
57 |
> >/2 342,160 = 342,160+0 0.8% |
58 |
> buildsystem/2 1 = 1+0 0.0% |
59 |
> val/3 5,200 = 5,200+0 0.0% |
60 |
> unify/3 260 = 260+0 0.0% |
61 |
> |
62 |
> % 9,531,861 inferences, 13.96 CPU in 14.55 seconds (96% CPU, 682798 |
63 |
> Lips) |
64 |
> |
65 |
> The search space is kept as small as possible because I've introduced |
66 |
> lazy feature evaluation and both multi valued and open features. |
67 |
> Those concepts are missing in Zellers approach. Comparing current |
68 |
> portage and my implementation performance-wise is difficult. In |
69 |
> general mine is faster, but current portage doesn't use sql either. |
70 |
> What is for sure is that mine allows you to express various |
71 |
> constraints. You can prevent a dependency from being built with a |
72 |
> specific use flag. My implementation automatically solves 'blockers'. |
73 |
> Circular dependencies are also solved correctly. For instance, if you |
74 |
> want to install unixodbc with the qt use flag enabled and you want to |
75 |
> install qt wit the unixodbc use flag enabled, my portage knows that |
76 |
> it needs to: |
77 |
> |
78 |
> emerge unixodbc without qt |
79 |
> emerge qt with unixodbc |
80 |
> remerge unixodbc with qt support |
81 |
> |
82 |
> So it makes revdep-rebuild unnecessary basically. |
83 |
> |
84 |
> |
85 |
> Once I was done implementing this new declarative language in which |
86 |
> for instance ebuild concepts can be easily expressed (but also rpm, |
87 |
> deb, fink, darwinports). I implemented a knowledge base in which |
88 |
> those feature terms can be stored/looked up efficiently. I used an |
89 |
> odbc bridge design pattern and have tested the thing with postgresql/ |
90 |
> mysql and sqlite. I've also implemented a DCG parser which parses |
91 |
> ebuilds (no more having to start a bash process for each ebuild like |
92 |
> current portage does) and converts it to feature logic representation |
93 |
> very efficiently. One of the things I'm doing now is finishing up the |
94 |
> documentation and experimenting with an RDF based system for |
95 |
> 'ebuildcasting'. The idea is that users who write ebuilds could |
96 |
> "ebuildcast" it like some people podcast their own radio shows. The |
97 |
> knowledge base can be subscribed to several sources (basically the |
98 |
> idea of portage overlays but combined with some ideas from the |
99 |
> semantic web). |
100 |
> |
101 |
> |
102 |
> > can we see the code, |
103 |
> |
104 |
> yes, the first release (and all releases after that) will be GPL. |
105 |
> |
106 |
> |
107 |
> > do you think there is still a hope ? |
108 |
> |
109 |
> As for me finishing this and doing something with it, yes. |
110 |
> |
111 |
> |
112 |
> > Anyway, I'd like to learn what there is to learn about it and perhaps |
113 |
> > help to get it restarted. |
114 |
> |
115 |
> For your convenience I've put some interesting papers online on |
116 |
> http://www.metadistribution.org/seminar-tinf/ |
117 |
> |
118 |
> I'd love to discuss the idea of feature logic with you while I'm |
119 |
> finishing things up. |
120 |
> |
121 |
> Pieter |
122 |
> |
123 |
> |
124 |
> > thank for any info. |
125 |
> > |
126 |
> > Krisitian |
127 |
|
128 |
-- |
129 |
gentoo-dev@g.o mailing list |