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 |