1 |
On 10/24/07, Marius Mauch <genone@g.o> wrote: |
2 |
> As package sets are mostly done now, I'm starting to think about |
3 |
> something else. One of my pet peeves with portage is the "packages" |
4 |
> file in profiles, for several reasons: |
5 |
> 1) it has two completely independent purposes |
6 |
|
7 |
ok |
8 |
|
9 |
> 2) it implements a redundant visibility filter as package.mask is also |
10 |
> available in profiles |
11 |
|
12 |
ok |
13 |
|
14 |
> 3) the syntax for defining the "system" set plain sucks |
15 |
|
16 |
not really relevant |
17 |
|
18 |
> 4) the name doesn't really say anything about the purpose |
19 |
|
20 |
not really relevant. |
21 |
|
22 |
3 and 4 are documentation problems, not necessarily problems within |
23 |
the current implementation. |
24 |
|
25 |
> |
26 |
> Another issue that isn't directly related, but covered by the proposed |
27 |
> solution below, is the so called "implicit system dependency" in |
28 |
> ebuilds, which doesn't really exist. It only an assumption by people |
29 |
> that the "system" set is satisfied before an ebuild is processed, so |
30 |
> its contents don't have to be listed in *DEPEND. If a user breaks that |
31 |
> assumption by not regulary ensuring that "system" is satisfied bugs can |
32 |
> occur. Another issue is the informal exception when system items are |
33 |
> allowed to/must be listed in *DEPEND, IMO that should be formalized. |
34 |
|
35 |
I'm going to discuss a bit your implementation below, since you |
36 |
address what you are trying to solve here. My main problem is that |
37 |
given a tree (such as gentoo-x86) it may have one or more profiles |
38 |
with one or more sub-profiles (children). These profiles may contain |
39 |
a set of packages that make up 'system'. The ebuilds DEPEND (or |
40 |
RDEPEND or whatever) on this set of packages existing. The problem I |
41 |
see with your solution is that it doesn't address different system |
42 |
sets in different profiles. Now in practice this isn't much of a |
43 |
problem within gentoo-x86 (most profiles have similar system sets). |
44 |
However it places a certain onus on any profile in a given tree, it |
45 |
must have a system package 'similar' enough to other sets in |
46 |
functioning profiles; otherwise breakage is likely to occur. How |
47 |
would you address this in your system? |
48 |
|
49 |
> |
50 |
> To solve both issues I propose the following system: |
51 |
> Profiles can contain the files "system.depend" and "system.rdepend" |
52 |
> whose combined contents make up the "system" target. If any of those |
53 |
> two files exists the "packages" file is ignored. The syntax should |
54 |
> either be the same as package.mask or, if desired, also allow complex |
55 |
> atoms (use-conditionals, any-of constructs). |
56 |
> The second part would be that portage implicitly adds the content of |
57 |
> the files to the DEPEND or RDEPEND setting of each ebuild unless it |
58 |
> contains RESTRICT=system-deps. Obviously this would have to be tied to |
59 |
> a new EAPI version. (an undefined cornercase here is if a profile does |
60 |
> not contain the new files, not sure how that should be handled) |
61 |
> |
62 |
> Benefits: |
63 |
> - we get rid of all the issues outlined at the top |
64 |
> - should make it easier long-term to setup a no-compile system that only |
65 |
> installs binary packages due to separation of build- and runtime deps |
66 |
> in "system" |
67 |
> |
68 |
> Problems: |
69 |
> - obviously it has to be implemented first |
70 |
> - no obvious solution for stacking rules (e.g. child uses system.*, but |
71 |
> parent profile only has "packages") |
72 |
> - some people might rely on the "packages" file |
73 |
> |
74 |
> So, comments? |
75 |
> |
76 |
> Marius |
77 |
> |
78 |
> -- |
79 |
> Public Key at http://www.genone.de/info/gpg-key.pub |
80 |
> |
81 |
> In the beginning, there was nothing. And God said, 'Let there be |
82 |
> Light.' And there was still nothing, but you could see a bit better. |
83 |
> |
84 |
> |
85 |
-- |
86 |
gentoo-portage-dev@g.o mailing list |