Gentoo Archives: gentoo-dev

From: "Anthony G. Basile" <blueness@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Re: rfc: adding sys-apps/iproute2 to the @system set
Date: Sat, 06 Sep 2014 12:16:24
Message-Id: 540AFB9E.4060902@gentoo.org
In Reply to: Re: [gentoo-dev] Re: rfc: adding sys-apps/iproute2 to the @system set by Rich Freeman
1 On 09/06/14 07:05, Rich Freeman wrote:
2 > On Sat, Sep 6, 2014 at 2:44 AM, Duncan <1i5t5.duncan@×××.net> wrote:
3 >> Rich Freeman posted on Fri, 05 Sep 2014 20:10:02 -0400 as excerpted:
4 >>
5 >>> The purpose of the system set is to deal with circular deps and the need
6 >>> to bootstrap. We shouldn't have stuff in there if it is possible to run
7 >>> without it.
8 >>>
9 >>> There are loads of things I can't live without which aren't in the
10 >>> system set. I have a default world file that I always start with
11 >>> anytime I do an install.
12 >> Does portage still force serial builds of anything in the system-set and
13 >> all deps thereof?[1] If so, given a situation where even most phones are
14 >> multi-core these days, does /anything/ other than circular deps and
15 >> bootstrapping really justify forcing /all/ the several @system packages
16 >> and deps I had before I started pruning, into serial build?
17 > @system serves a couple of different purposes, and I think this is
18 > part of the problem.
19 >
20 > 1. One purpose of @system is simply convenience. Devs don't want to
21 > stick baselayout, bzip, sed, toolchain, etc in every other ebuild, so
22 > it is basically a default dependency for everything. This is what
23 > makes parallel builds with @system and its deps unsafe - there is no
24 > way for the package manager to know when there are dependency
25 > relationships in the packages being built if we intentionally don't
26 > specify them. The only safe solution here is to minimize the size of
27 > @system, either eliminating packages that aren't really such common
28 > dependencies or suffer a bit more inconvenience.
29 >
30 > The other purposes are all related to catalyst:
31 >
32 > 2. Another purpose is to break the circular dependency problem when
33 > building stage 1/2/3. If you did ditch #1 entirely it would not be
34 > straightforward to build a stage1/2/3 without some hints as to what
35 > basically just needs to be pre-provided from the outside system as a
36 > bootstrap.
37 >
38 > 3. Yet another of its purposes is to determine what goes into the
39 > stage3. I'm actually wondering if something like a default world set
40 > might be a better approach to that, or maybe we need a stage3 set or
41 > something. This is where packages like openssh fit in. or even man
42 > and editor.
43
44 All true, but returning to the original point, even if packages in
45 stage3 were a superset of @system, I would still argue against including
46 iproute2 because of bloat for the reasons already stated. Don't get me
47 wrong, I really like iproute2, but net-tools is sufficient for a
48 stage3. I like the idea that stage3 is pretty much defined by your
49 points 1 and 2, with the implicit assumption of "a minimal set of
50 packages be able to build any gentoo system" from it. This minimal set
51 idea is important because of its role in building stages via catalyst
52 ... see below.
53
54 >
55 > The thing is that #2-3 really only pertain to generating stage3s, and
56 > that really only matters for the initial install. After that,
57 > everybody lives with it for the rest of their Gentoo lives.
58
59 If we fell like bikeshedding (and I'm up for a good discussion on the
60 matter :), we can return to the old "stage4 = stage3 + extras"
61 discussion. Not having a clear picture of what a stage4 should and
62 should not have in it, I don't have any a priori objections to adding
63 openssh, man, vi and iproute2. However, there is one big difference I
64 see between stage4 and any of the other stages. A proper catalyst run
65 should be:
66
67 stage3 -> stage1 -> stage2 -> stage3 -> etc
68
69 It should NOT include a stage4. A stage4 would just be a spinoff of a
70 stage3, and not be part of the catalyst cycle. You *could* use a stage4
71 as a stage3 seed, but it should not be necessary. We should NOT have
72 catalyst runs looking like:
73
74 stage4 -> stage1 -> stage2 -> stage3 -> stage4 -> etc
75
76 This would unnecessarily increase cpu time, contribute to the total
77 entropy of the universe and speed up its heat death. All bad things.
78
79 >
80 > Now that we actually have sets in portage, maybe it would make sense
81 > to split up @system into different sets for each of those purposes.
82 > Then we can optimize both the stage3 generation and the requirements
83 > for installed systems separately.
84 >
85 > --
86 > Rich
87 >
88
89
90 --
91 Anthony G. Basile, Ph.D.
92 Gentoo Linux Developer [Hardened]
93 E-Mail : blueness@g.o
94 GnuPG FP : 1FED FAD9 D82C 52A5 3BAB DC79 9384 FA6E F52D 4BBA
95 GnuPG ID : F52D4BBA