1 |
On 12/07/14 17:41, William Hubbs wrote: |
2 |
> On Sun, Dec 07, 2014 at 08:32:57AM -0500, Rich Freeman wrote: |
3 |
>> On Sun, Dec 7, 2014 at 8:05 AM, Anthony G. Basile |
4 |
>> <basile@××××××××××××××.edu> wrote: |
5 |
>>> On 12/07/14 05:37, Michał Górny wrote: |
6 |
>>>> If you're interested in testing it, 'layman -a mgorny' and enjoy. I'd |
7 |
>>>> appreciate any bug reports, except for those covering things i've |
8 |
>>>> already listed as missing :). Any further comments will be very helpful |
9 |
>>>> in deciding on the way forward. |
10 |
>>> Removing the eclass is a bad idea: |
11 |
>>> |
12 |
>>> 0) This reduces code reusability. The eclass is used by sys-devel/kgcc64 in |
13 |
>>> the tree and (at least) the hardened-dev::musl overlay outside. |
14 |
>> Well, other packages could keep using the eclass. |
15 |
>> |
16 |
>> I think that eclasses tend to get abused in situations like these. It |
17 |
>> is one thing if you have 300 ebuilds that are all maintained together |
18 |
>> like there are with kde and logic really is shared in common between |
19 |
>> them. |
20 |
>> |
21 |
>> However, this eclass is only used by a few packages, the shared code |
22 |
>> isn't across stuff installed in parallel but across stuff that changes |
23 |
>> over time. This is done without upstream support for the most part, |
24 |
>> so it becomes a growing collection of workarounds. When eclasses |
25 |
>> start following different code paths every time a package that uses |
26 |
>> them is versioned, it makes a lot more sense to either version the |
27 |
>> eclass every time or move the code to the ebuild. |
28 |
> This makes sense to me as well, let's work twoard getting rid of |
29 |
> toolchain.eclass. |
30 |
|
31 |
Hardened has used the eclass in its overlay and continues to use it. We |
32 |
do not wish to get rid of it. |
33 |
|
34 |
@hardened, we should discuss this at our next meeting. |
35 |
|
36 |
>>> 1) Those version specific conditionals that you don't like give a |
37 |
>>> history/comparison of gcc versions. It is not cruft. It encodes what |
38 |
>>> versions allow what features. Moving to the ebuilds makes this history much |
39 |
>>> harder to read. Think of a diff -Naur when producing a patch. I like the |
40 |
>>> current eclass approach. |
41 |
>> Why do we need a history/comparison of gcc written in shell script? |
42 |
>> Wouldn't a text file or webpage be a better way to document this? |
43 |
>> Wouldn't upstream be the place to document this? |
44 |
>> |
45 |
>> This seems a bit like saying that we don't need the EAPI/PMS guide or |
46 |
>> even PMS itself because anybody can just read the portage source code |
47 |
>> and figure out how it works. |
48 |
>> |
49 |
>> If you need a list of what features are supported in what versions of |
50 |
>> gcc, wouldn't it make more sense to create a wiki page somewhere? |
51 |
> I thinkk this makes more sense as well. Historical reasons don't work |
52 |
> for me by them selves as a reason to justify keeping old code, |
53 |
> especially when it is to support versions of packages that are no longer |
54 |
> really supported upstream. |
55 |
|
56 |
I'm not sure what you mean by "old code" which is "no longer really |
57 |
supported upstream". gcc is built using gcc. We should have a window |
58 |
on gcc versions which goes backwards and forwards a couple of versions, |
59 |
so I can build 4.8 with 4.7 or 4.6 and vice versa. And build 4.6 with |
60 |
4.5 or 4.4, etc. There is an entire chain there. Keeping the detailed |
61 |
decisions in an eclass of what features were on/off for each version |
62 |
makes sense so we can conveniently track that chain. When I say I want |
63 |
to keep history, that's what I'm talking about. In hardened we went |
64 |
through a pains taking process of making sure the first hardened gcc-4 |
65 |
versions (4.4 I believe) was buildable by the previous one, and that it |
66 |
could build itself and could rebuild itself both adding and remove |
67 |
hardening etc. (BTW by "we" I mean Magnus who deserves all the kudos. |
68 |
I just helped with testing and told him what broke.) |
69 |
|
70 |
If you want to simplify code, then let's bump all the gcc ebuilds to |
71 |
EAPI 4 or above and refactor the phase functions and remove all the EAPI |
72 |
checks. But removing all instances of tc_version_is_* is not a good idea. |
73 |
|
74 |
> |
75 |
>>>> If there is a real interest in my fork, I will probably move it to gx86 |
76 |
>>>> as sys-devel/gcc-mgorny. |
77 |
>>> |
78 |
>>> I don't think we should proceed this way. The way I'd like to proceed is to |
79 |
>>> introduce a new toolchain-r1.eclass which addresses at least your QA issues |
80 |
>>> below. If I understood Ryan's plan with the eclass, it was to simply |
81 |
>>> refactor the phase functions to modernize things but keep backwards compat. |
82 |
>>> When toolchain-r1.eclass is mature, then we switch the inherit. I'd like to |
83 |
>>> keep gcc-2* and gcc-3* around. We could consider cleaning up those ebuilds |
84 |
>>> to work with EAPI=4 or 5 with the new eclass or just leave them with the old |
85 |
>>> eclass. |
86 |
> Why do you want to keep these outdated and not supported versions of gcc |
87 |
> around? Have you tried building a modern system with gcc-2 or gcc-3? I |
88 |
> haven't but I'm sure it would fail horribly. |
89 |
|
90 |
But not certain embedded systems or other scenarios. gcc-3 for instance |
91 |
did hardening differently than 4. While I'm not as interested in gcc-2, |
92 |
I don't want to see gcc-3 dumped. Even minor leaps like 4.7 to 4.8 |
93 |
introduced deep changes like requiring c++. Its easy to say, why do we |
94 |
need this? when one forgets that evolution, or was never familiar with it. |
95 |
|
96 |
This line of reasoning is used often: "I can't see how this is useful |
97 |
for the type of systems I envision, so this is not useful." Gentoo is |
98 |
not that spectacular as a "regular" distro. Only masochists pick gentoo |
99 |
as a desktop given that it has no installer --- why wouldn't the average |
100 |
user pick ubuntu over gentoo if they want something that "just works." |
101 |
But for niche systems, Gentoo shines like nothing else. ChromeOS would |
102 |
never have been born of a debian-ish or fedora-ish distro. Let's keep |
103 |
this alive. |
104 |
|
105 |
> |
106 |
>>> Also, no to the name sys-devel/gcc-mgorny. I very much appreciate the |
107 |
>>> excellent hard work you've done on eclasses, but the reason this is |
108 |
>>> happening is because of patches that toolchain lead is not accepting. |
109 |
>>> Anyhow, most of the work with gcc (in my opinion) is with the patches |
110 |
>>> against gcc itself which are housed in ~vapier, ~rhill and ~zorry. When you |
111 |
>>> don't accept my patches to gcc-mgorny, shall I add gcc-basile to the tree? |
112 |
>> Well, that would be in keeping with GLEP 39, which seems to encourage |
113 |
>> everybody to fork each other's packages. :) |
114 |
>> |
115 |
>> It seems like there is a fundamental disagreement here over the right |
116 |
>> way to refactor all this code. Honestly, the fact that nobody seems |
117 |
>> to even want to look at the toolchain suggests to me that |
118 |
>> simplification is probably worthwhile. |
119 |
|
120 |
This statement is not true. The maintainer is actively making commits |
121 |
to toolchain.eclass and gcc. The problem stems from the maintainer |
122 |
ignoring patches to the eclass regarding certain fixes, eg the thorny |
123 |
dependencies on gcj[awt] which draws in windowing system stuff. A |
124 |
compiler depending on media-libs/alsa-lib! Yuck! |
125 |
|
126 |
These are QA issues. I do agree with Michal that they should be |
127 |
addressed. I am willing to support QA against the maintainer as I said |
128 |
in a previous email, after a review of proposed changes. But these |
129 |
problems are not the occasion to throw out the current approach to |
130 |
toolchain. |
131 |
|
132 |
> |
133 |
> I tend to agree here too; let's get rid of the old versions of things |
134 |
> where we can and simplify. |
135 |
|
136 |
This move will not simply things. It will just re-encode the |
137 |
complexities in a new way. Or it will throw out stuff we later realize |
138 |
we want. Take a look at bug #513716, #513578, #513576 and others and |
139 |
tell me how any of the above suggestions to remove the eclass will make |
140 |
that ugliness simple? |
141 |
|
142 |
If people really want this, then I'd rather see a fork in the tree for |
143 |
those "forward looking devs" and leave the current toolchian stuff in |
144 |
tact for us old "fuddy duddies" like me. |
145 |
|
146 |
> |
147 |
> William |
148 |
> |
149 |
|
150 |
|
151 |
-- |
152 |
Anthony G. Basile, Ph.D. |
153 |
Gentoo Linux Developer [Hardened] |
154 |
E-Mail : blueness@g.o |
155 |
GnuPG FP : 1FED FAD9 D82C 52A5 3BAB DC79 9384 FA6E F52D 4BBA |
156 |
GnuPG ID : F52D4BBA |