Gentoo Archives: gentoo-portage-dev

From: Andrew Gaffney <agaffney@g.o>
To: gentoo-portage-dev@l.g.o
Subject: Re: [gentoo-portage-dev] RFC: replacing "packages"
Date: Wed, 24 Oct 2007 18:34:57
Message-Id: 471F9044.5050503@gentoo.org
In Reply to: [gentoo-portage-dev] RFC: replacing "packages" by Marius Mauch
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

Replies

Subject Author
Re: [gentoo-portage-dev] RFC: replacing "packages" Marius Mauch <genone@g.o>