1 |
Marius Mauch 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 |
> 2) it implements a redundant visibility filter as package.mask is also |
7 |
> available in profiles |
8 |
> 3) the syntax for defining the "system" set plain sucks |
9 |
> 4) the name doesn't really say anything about the purpose |
10 |
> |
11 |
> Another issue that isn't directly related, but covered by the proposed |
12 |
> solution below, is the so called "implicit system dependency" in |
13 |
> ebuilds, which doesn't really exist. It only an assumption by people |
14 |
> that the "system" set is satisfied before an ebuild is processed, so |
15 |
> its contents don't have to be listed in *DEPEND. If a user breaks that |
16 |
> assumption by not regulary ensuring that "system" is satisfied bugs can |
17 |
> occur. Another issue is the informal exception when system items are |
18 |
> allowed to/must be listed in *DEPEND, IMO that should be formalized. |
19 |
> |
20 |
> To solve both issues I propose the following system: |
21 |
> Profiles can contain the files "system.depend" and "system.rdepend" |
22 |
> whose combined contents make up the "system" target. If any of those |
23 |
> two files exists the "packages" file is ignored. The syntax should |
24 |
> either be the same as package.mask or, if desired, also allow complex |
25 |
> atoms (use-conditionals, any-of constructs). |
26 |
> The second part would be that portage implicitly adds the content of |
27 |
> the files to the DEPEND or RDEPEND setting of each ebuild unless it |
28 |
> contains RESTRICT=system-deps. Obviously this would have to be tied to |
29 |
> a new EAPI version. (an undefined cornercase here is if a profile does |
30 |
> not contain the new files, not sure how that should be handled) |
31 |
> |
32 |
> Benefits: |
33 |
> - we get rid of all the issues outlined at the top |
34 |
> - should make it easier long-term to setup a no-compile system that only |
35 |
> installs binary packages due to separation of build- and runtime deps |
36 |
> in "system" |
37 |
> |
38 |
> Problems: |
39 |
> - obviously it has to be implemented first |
40 |
> - no obvious solution for stacking rules (e.g. child uses system.*, but |
41 |
> parent profile only has "packages") |
42 |
> - some people might rely on the "packages" file |
43 |
> |
44 |
> So, comments? |
45 |
|
46 |
I like the idea overall. I dislike the "packages" file for many of the same |
47 |
reasons that you pointed out. However, I have a few questions/concerns with your |
48 |
proposal. |
49 |
|
50 |
For packages that are in the "system" set, wouldn't adding the contents of |
51 |
system.{,r}depend to {,R}DEPEND cause problems in dep resolution? Would there be |
52 |
a way to prevent the contents of these files from being added for packages that |
53 |
are themselves in these files? |
54 |
|
55 |
How is the "system" set constructed from these files? Would they simply be |
56 |
concatenated (minus duplicates) and treated like the old "packages" file (minus |
57 |
the magic visibility filtering)? |
58 |
|
59 |
-- |
60 |
Andrew Gaffney http://dev.gentoo.org/~agaffney/ |
61 |
Gentoo Linux Developer Catalyst/Installer + x86 release coordinator |
62 |
-- |
63 |
gentoo-portage-dev@g.o mailing list |