Gentoo Archives: gentoo-alt

From: heroxbd@g.o
To: gentoo-alt@l.g.o
Subject: Re: [gentoo-alt] Restructuring the bootstrap (or: getting rid of gcc 4.2)
Date: Mon, 03 Feb 2014 01:23:21
Message-Id: 861tzldm67.fsf@moguhome00.in.awa.tohoku.ac.jp
In Reply to: [gentoo-alt] Restructuring the bootstrap (or: getting rid of gcc 4.2) by Ruud Koolen
1 Hey Ruud,
2
3 Ruud Koolen <redlizard@g.o> writes:
4
5 > In the mainline process, stage1 manually builds a handful or required tools
6 > (such as make, patch, and python) in $EPREFIX/tmp, using the host toolchain.
7 > stage2 then manually builds a portage and constructs a profile, both in
8 > $EPREFIX. stage3 starts by using portage to build a toolchain in $EPREFIX
9 > (along with minimal dependencies, such as bash and bison), built using the
10 > host toolchain; afterwards, portage uses this toolchain to emerge a proper
11 > portage (also including dependencies, like python), emerged on top of the
12 > bootstrapped portage using USE=-collision-protect. At this point, portage is
13 > basically operational, and what remains is emerge -e @system.
14 >
15 > [...]
16 >
17 > In my experimental process, things work differently. The stage1 part is
18 > unchanged, but stage2 bootstraps a portage *in $EPREFIX/tmp*, and portage's
19 > cross-eprefix functionality is used to have this portage build packages in
20 > both $EPREFIX/tmp and $EPREFIX. In stage3, portage builds a toolchain (and
21 > dependencies) in $EPREFIX/tmp, but one that targets $EPREFIX; that is, it
22 > builds a toolchain in $EPREFIX/tmp that builds executables that expect to run
23 > in $EPREFIX, have $EPREFIX for rpath, and read headers from $EPREFIX. This
24 > toolchain is then used to build a second toolchain in $EPREFIX (targeting
25 > $EPREFIX as normal); this "real" toolchain is then used to build the final
26 > portage, in $EPREFIX. At this point, the situation is similar to the end of
27 > stage3 in the mainline process, with an operational and self-sufficient
28 > toolchain and portage in $EPREFIX, and all that is left to be done is emerge -
29 > e @system.
30
31 I'll omit your explanations which I am aware of: It's a nice wrap up
32 indeed. So I'm going to cut in here.
33
34 The new stageX feels intertwined:
35
36 stage2: tmp portage
37 stage3: tmp gcc, EPREFIX gcc, EPREFIX portage
38
39 How about defining stage2 as "anything to be built with tmp portage into
40 tmp", and stage3 as "anything to be inserted into EPREFIX"? Then it's
41 arraged as:
42
43 stage2: tmp portage, tmp gcc
44 stage3: EPREFIX gcc, EPREFIX portage
45
46
47 On the resistence from the momentum of tradition, I hope you can look at
48 the situation from Fabian's angle of view: the fragile script (bugs
49 sometimes) at least works on AIX, HPUX, solaris, MacOSX. They might be
50 broken by the new bootstrap concept. As you don't have access to these
51 platforms, several people have to be involved to prove the platforms are
52 cool with the new concept, which implies a lot of work and social
53 coordination than you might anticipate. Unless the present solution is a
54 real pain in the ass, we are conservative with the refactorization. The
55 new one is good enough and it's a good job, while it's counterpart
56 should be bad enough to drive your fellows on track.
57
58 If, by all means, you got development boxes of AIX, solaris, etc. And
59 prove the new one can 100% replace the old one. That's when it starts
60 getting widely accepted. At the same time, however, this process will
61 take a lot of work. If it is your destiny, go for it.
62
63 Cheers,
64 Benda

Replies