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 |