Gentoo Archives: gentoo-dev

From: "Anthony G. Basile" <blueness@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] sys-devel/gcc::mgorny up for testing
Date: Mon, 08 Dec 2014 13:16:29
Message-Id: 5485A563.9020606@gentoo.org
In Reply to: Re: [gentoo-dev] sys-devel/gcc::mgorny up for testing by William Hubbs
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