Gentoo Archives: gentoo-portage-dev

From: Marius Mauch <genone@g.o>
To: gentoo-portage-dev@g.o
Subject: Re: [gentoo-portage-dev] portage-ng requirements doc
Date: Sat, 29 Nov 2003 05:01:59
Message-Id: 20031129060151.69906282.genone@gentoo.org
In Reply to: [gentoo-portage-dev] portage-ng requirements doc by Daniel Robbins
1 Hi,
2
3 Some of my points are probably already covered in your list, but let me
4 show my wishlist:
5
6 portage-ng should be ...
7
8 - completely based on exchangable components (I don't like the term
9 plugin here as plugins are IMO always optional) and each component
10 should have a well defined interface as well as metadata stating
11 dependencies on other components (e.g. a DB based tree backend needs a
12 DB compatible sync mechanism and parser).
13
14 - statically typed, so it can be better checked for errors before
15 released. I realize that this might not be possible in several
16 languages, but then at least we should enforce consistent typenames in
17 the API documentation (as currently you often have to read the source to
18 find out what parameter a function really wants).
19
20 - able to be used as a secondary package manager, this would also
21 include the ability to enable users to install packages in their
22 homedirs using system packages for the dependencies. One important part
23 of this is implementing pathspec.
24
25 - as secure as possible. This includes signed packages (both source and
26 binary) and automatic priorization of security related updates.
27
28 That's all for now, but I think my first point implicates many other
29 points mentioned by you. Let me elaborate a bit more by giving an
30 example what components could be used in the current portage:
31 - ebuild parser
32 - metadata parser
33 - profile parser
34 - config parser
35 - packagename/version parser
36 - dependency resolver
37 - rsync sync component
38 - cvs sync component
39 - http sync component (for snapshots)
40 - filesystem portdir storage component
41 - filesystem package database storage component
42 - searching component
43 ...
44
45 So now the portagesql guys for example could just write different
46 portdir storage, sync and metadata parser components to use mysql as a
47 backend for the metadata instead of re-implementing portage completely.
48 For the dependency example above their storage component would need
49 their sync component or, more flexible, it implements some write()
50 functions that could be used by sync components implementing a suitable
51 interface (but for instance a storage component for cd-rom based
52 snapshots could not do that). I hope you get the idea.
53
54 Marius
55
56 --
57 Public Key at http://www.genone.de/info/gpg-key.pub
58
59 In the beginning, there was nothing. And God said, 'Let there be
60 Light.' And there was still nothing, but you could see a bit better.