1 |
On Thursday 15 December 2005 09:58, Eric Edgar spammed: |
2 |
|
3 |
> You also have to concider that you were doing things incorrectly. We |
4 |
> only have so much time in the day and have to go after the low hanging |
5 |
> fruit first per say. While you are correct that something is wrong in |
6 |
> the tree the initial results did not indicate that. |
7 |
|
8 |
It took me a few iterations to understand how the tool is _supposed_ to be |
9 |
used. At no place in the documentation does it clearly explain that the |
10 |
syntax of stage4/use: does not migrate to stage2/use:, for example, or that |
11 |
USE flags are NOT to be used anywhere but stage4, or that USE flags are not |
12 |
to go into the envscript. There is one generic stage example, which has |
13 |
been subsequently changed to explain that cflags and such only apply on |
14 |
stage2, but no mention of use flags and so on. I assumed that: |
15 |
|
16 |
"The catalyst tool is intended to be used by those who wish to create their |
17 |
own customized versions of Gentoo Linux, or their own customized LiveCDs. |
18 |
Our goal is to make catalyst a powerful tool that's a pleasure to use, and |
19 |
to ensure that the code we write is maintainable and of high-quality." |
20 |
|
21 |
..meant that the tool was intended to be used to create customized versions, |
22 |
what I didn't understand was the customization only applies in very limited |
23 |
ways to stage4... |
24 |
|
25 |
So I have had to learn the hard way and have had to bug the hell out of you |
26 |
guys. I would be glad to work on some of the documentation after wrapping |
27 |
my mind around it more completely :) |
28 |
|
29 |
> put out a new gentoo cd. There are only 2 main developers working on |
30 |
> catalyst at the moment, Myself and wolf31o2. |
31 |
|
32 |
Geez, no wonder the fuse is kinda short. I had no idea it was only you two. |
33 |
|
34 |
> from my standpoint I have seen you as quite firm in your convictions |
35 |
> that you were right. I agree that the stage1 bug you posted is valid, |
36 |
> but you could have also performed the few requested steps to follow |
37 |
> wolf31o2's suggestions. |
38 |
|
39 |
After making a few boneheaded mistakes I did follow Chris's suggestions, and |
40 |
arrived at the same results. I also understood that the actual problem is |
41 |
not caused by those mistakes. Stage1 is the only stage that installs into |
42 |
a separate ROOT as far as I can tell. Catalyst is not taking into account |
43 |
the order that portage.grab_stacked() and portage.stack_lists() is |
44 |
returning package lists in. Glibc requires headers to be installed first. |
45 |
The solution is either to hack portage to always sort lists that involve |
46 |
the toolchain correctly, or to account for it in catalyst. I have never |
47 |
coded in python, so I don't quite know how to implement the solution, but I |
48 |
do have a guess at what the solution is. Push any toolchain package to the |
49 |
top (or bottom, whichever) of the buildpkgs array in their proper order, |
50 |
don't rely on portage.grab_stacked() or portage.stack_lists() to order it |
51 |
correctly because it does not gracefully take into account the install is |
52 |
happening in a different ROOT. The DEPEND check in the glibc ebuild is |
53 |
looking for headers in the running system, not what is installed in ROOT, |
54 |
so it does not see it as a dependency that needs to be installed first. |
55 |
<rant>As an anal purist, I believe the toolchain should be installed first |
56 |
and in the proper order explicitly one package at a time instead of in a |
57 |
stacked list. To do otherwise is heaping problems on yourself on down the |
58 |
road if you ask me. You also avoid this weird dependency problem when |
59 |
installing into a ROOT.</rant> |
60 |
|
61 |
|
62 |
> Making a new profile is really very easy to do and with catalysts |
63 |
> portage_overlay features quite painless to do. It works just like an |
64 |
> overlay on a host gentoo system. I can understand that it might have |
65 |
> sounded difficult or time consuming to follow the recommendation but a |
66 |
> better course of action from you would have been how can I do this .. or |
67 |
> how do you guys do this. If it sounds like it sucks for you maybe it |
68 |
> sucks for us too, but we just havent had the time to code a simpler way |
69 |
> yet. We are not out to make anyones life difficult, remember we are |
70 |
> volunteers here with limited time. |
71 |
|
72 |
Can you put profiles in overlays? Duh, that would be much easier. |
73 |
|
74 |
> you are also missing the fact that the profile stays consistent from one |
75 |
> stage to the next. custom use flags in a spec file can and will very |
76 |
> easily be missed or dropped or typoed etc. It really is a better design |
77 |
> choice to do it with profiles. |
78 |
|
79 |
Call this a feature request, or a suggestion. |
80 |
|
81 |
Allow cflags, chosts, cxxflags, FEATURES, and use flags in only ONE place - |
82 |
stage2. Stage2 can generate the entire make.conf that will be used through |
83 |
any future stages, including the user specified USE flags. Stage2 runs the |
84 |
bootstrap.sh, which correctly throws out non-applicable USE flags, so it is |
85 |
not a problem, all the catalyst developers would have to do is count on |
86 |
bootstrap.sh to work correctly. |
87 |
|
88 |
From that point forward every stage done by catalyst uses the USE flags |
89 |
generated in step 2 and never changes. If a USE flag breaks the install, |
90 |
it would have broken during the install in stage4 anyway. This would |
91 |
greatly simplify everything in my opinion. |
92 |
|
93 |
Stage1 would continue to be the proper place to sanitize the build to |
94 |
pre-selected cflags and use flags, etc... |
95 |
|
96 |
Am I crazy, or what? |
97 |
|
98 |
> You assume that its a simple thing to compile a tool chain in order. |
99 |
> But what you miss is the fact that upstream developers consistently |
100 |
> change how things are done. We have coded catalyst the best way for us. |
101 |
> Using profiles allows us to leverage other developers time in the tree |
102 |
> to catch a majority of the issues for us. They can help reorganize the |
103 |
> way things are built if necessary via a profile. Otherwise we would be |
104 |
> constantly updating our spec files and never know exactly what was going |
105 |
> on. |
106 |
|
107 |
It _is_ a simple thing to bootstrap a toolchain in order. The order has |
108 |
always been the exact same and probably always will be. binutils, gcc, |
109 |
headers, glibc. Repeat, using tools from previous step. This is the |
110 |
_only_ way as far as I know to do it correctly, and to do it correctly |
111 |
every time, and to be absolutely certain it has been done correctly. It |
112 |
has been this way for over 10 years if I recall correctly, it is linux |
113 |
system building 101. |