1 |
Below I'll give my shot at it. |
2 |
|
3 |
On Friday 28 November 2003 19:55, Daniel Robbins wrote: |
4 |
> architecture requirements: |
5 |
> |
6 |
> 1) facilitate parallel, community development |
7 |
> 2) allow for easy extensibility and new feature additions over time |
8 |
> 3) provide a coherent model for (meta)data representation and storage |
9 |
> 4) will run on a wide variety of systems |
10 |
> 5) will run efficiently even on modest hardware |
11 |
> 6) in as much as possible, encourage and/or enforce the development of |
12 |
> high-quality, versatile and maintainable code |
13 |
> 7) encourage/enforce separation of package metadata from specific build |
14 |
> steps and algorithms |
15 |
> 8) allow for delivery of feature set that meets or exceeds expectations |
16 |
> of existing user community |
17 |
> |
18 |
> design goals: |
19 |
> |
20 |
> 1) reflect the sensibilities of "ports" system designs |
21 |
> 2) provide an easy-to-understand developer API |
22 |
> 3) provide an open, transparent architecture that reflects UNIX design |
23 |
> philosophy |
24 |
> 4) In every way possible, program should be malleable to allow |
25 |
> conformation to user needs and expectations, |
26 |
> both interface as well as the specific actions performed by the program. |
27 |
|
28 |
implementation goals: |
29 |
1) Support distfile renaming or distfile subdirectories or both to solve the |
30 |
name-clash problem. |
31 |
2) Support useflag and slot dependencies as layed out by carpaski before and |
32 |
which will probably come into the current portage. |
33 |
3) A full dependency tracker that can use the USEFLAGS from compile-time |
34 |
instead of check-time to determine dependencies and stale packages. (Should |
35 |
make depclean work) |
36 |
4) Support partial overlap of same-version/same-package packages. This would |
37 |
require some extra variable like EXTRASLOT (for example php would specify |
38 |
a value like apache2 for the apache2 module and apache1 for the apache1 |
39 |
module). This variable can be determined at the compilation time based on |
40 |
other parameters. The package database needs some name mangling (shouldn't |
41 |
be a big problem). Further there needs to be some overlap detection. What |
42 |
this would mean is that at the moment a second package of the same version |
43 |
but with a different EXTRASLOT would be merged, the overlapping filenames |
44 |
would be collected. Those would go in a general package. The ones from the |
45 |
original package that do not overlap go to a new package specific to that |
46 |
EXTRASLOT, and the files that are new go into the package with the new |
47 |
EXTRASLOT. |
48 |
|
49 |
Why is this important. It allows for a package like php to be compiled as |
50 |
both a plugin to apache1 as to apache2 without any difficulties. It is also |
51 |
the solution for modules like alsa and nvidia drivers, and it eases |
52 |
cross-compiler installation. |
53 |
5) Make the ebuild format as extendable as possible (without breaking all |
54 |
current ones) to allow for future enhancements. |
55 |
6) (sidestep) Make a clear system for specifying the locales that should be |
56 |
built, and if a specific locale needs to be chosen, what is the priority |
57 |
list for that. This will make locales in things like kde and openoffice a |
58 |
lot easier, but it also should be used by glibc and other ebuilds. |
59 |
|
60 |
Paul |
61 |
|
62 |
-- |
63 |
Paul de Vrieze |
64 |
Researcher |
65 |
Mail: pauldv@××××××.nl |
66 |
Homepage: http://www.devrieze.net |