1 |
-----BEGIN PGP SIGNED MESSAGE----- |
2 |
Hash: SHA1 |
3 |
|
4 |
On 12/07/2014 04:37 AM, Michał Górny wrote: |
5 |
> Hello, developers and users. |
6 |
> |
7 |
> As some of you know, the toolchain packages in Gentoo suffer from |
8 |
> lack-of-sanity issues and their maintainers are completely |
9 |
> unwilling to improve things. I have finally decided to start |
10 |
> working on a fork of the sys-devel/gcc ebuilds, and I have some |
11 |
> bits ready for initial testing in 'mgorny' repo, so I would like |
12 |
> to know your opinion. |
13 |
> |
14 |
> |
15 |
> Before you start, the shortcomings are: |
16 |
> |
17 |
> 1. No cross-compilation support. If the project proves being a |
18 |
> success it will be readded at some point. However, I will likely |
19 |
> fork glibc first and work on a sane crossdev alternative. |
20 |
> |
21 |
> 2. No gcj support. Since the ebuild has been forked out of |
22 |
> toolchain.eclass, and the gcj support suffers a lot of issues |
23 |
> there, I decided there's no point in copying the code. Not sure if |
24 |
> anybody actually uses it, and if it is actually useful for |
25 |
> anything but will probably get reintroduced one day [above 'if' |
26 |
> applies too]. |
27 |
> |
28 |
> 3. No bootstrapping, fallbacks and possible some other random |
29 |
> feature support. The goal was pretty much to get gcc compiling |
30 |
> first, and avoid awful lot of effort if things prove to have no |
31 |
> future. |
32 |
> |
33 |
> 4. Hardened is not tested. I think I have copied all the needed |
34 |
> code and fixed some stuff but I have no clue if it still works ;). |
35 |
> |
36 |
> |
37 |
> Now, the major changes are: |
38 |
> |
39 |
> 1. Most of the insanity removed. No more toolchain.eclass. The |
40 |
> ebuild has just the code for the current gcc version. You can read |
41 |
> it and know what it does, you don't have to parse a few dozen |
42 |
> version conditionals, runtime conditionals and random crap code |
43 |
> that doesn't do anything in some gcc versions. In fact, I think I |
44 |
> removed most of the no-op code. And now you can actually change |
45 |
> something in the ebuild without caring for gcc3.4, or without |
46 |
> breaking stuff for stable ebuilds. |
47 |
> |
48 |
> 2. USE flags are supposed to work. I've replaced the cases when |
49 |
> they were silently ignored with REQUIRED_USE. I've also removed |
50 |
> the silent removals when they didn't work -- so if your current |
51 |
> toolchain is broken, things may actually fail instead of giving |
52 |
> your different gcc than you wanted. Probably deserves explanatory |
53 |
> pkg_pretend() at some point, with messages like 'disable USE=-foo |
54 |
> because your toolchain is broken'. |
55 |
> |
56 |
> 3. Things simplified where they could have been simplified. For |
57 |
> example, I removed the big gcc executable moving function and |
58 |
> replaced it with --enable-version-specific-runtime-libs. It was |
59 |
> enabled in toolchain.eclass with a comment 'If we enable it on |
60 |
> non-Darwin we screw up the behaviour this eclass relies on.' So |
61 |
> yep, precious cargo cult -- why enable something that would |
62 |
> require you to remove your useless complex function?! |
63 |
> |
64 |
> 4. Added gx86-multilib love. Now you have abi_* flags to control |
65 |
> the compiler runtime. Of course, since gcc is a pile of random |
66 |
> modules not fit for one another it has different code for |
67 |
> different targets. In particular, on mips you can't do two ABIs -- |
68 |
> either single one (non-multilib) or all three of them |
69 |
> (--enable-multilib). |
70 |
> |
71 |
> 5. Added multilib gcc wrappers. Long story short, multilib gcc now |
72 |
> shows up in gcc-config alike crossdev -- but unlike i686 |
73 |
> crossdev, it doesn't screw up your system! Of course, the final |
74 |
> implementation may differ since it's an early idea but it works. |
75 |
> Now distcc happily builds stuff for your x86 clients. |
76 |
> |
77 |
> 6. Added missing dependencies. Yep, USE flags now, say, pull in |
78 |
> doxygen rather than silently skipping doc build when it's not |
79 |
> installed... |
80 |
> |
81 |
> 7. Disabled bootstrap by default (and in fact completely for now). |
82 |
> It is not *that* useful, and means time savings (and distcc |
83 |
> support): |
84 |
> |
85 |
> Thu Nov 6 20:39:31 2014 >>> sys-devel/gcc-4.9.2 merge time: 1 |
86 |
> hour, 56 minutes and 43 seconds. |
87 |
> |
88 |
> Sun Dec 7 10:46:08 2014 >>> sys-devel/gcc-4.9.2-r100 merge time: |
89 |
> 34 minutes and 55 seconds. |
90 |
> |
91 |
> |
92 |
> If you're interested in testing it, 'layman -a mgorny' and enjoy. |
93 |
> I'd appreciate any bug reports, except for those covering things |
94 |
> i've already listed as missing :). Any further comments will be |
95 |
> very helpful in deciding on the way forward. |
96 |
> |
97 |
> If there is a real interest in my fork, I will probably move it to |
98 |
> gx86 as sys-devel/gcc-mgorny. I will also be happy to work on |
99 |
> replacing the new versions of original sys-devel/gcc completely. |
100 |
> With QA process against toolchain.eclass if necessary. |
101 |
> |
102 |
|
103 |
As a user, what would adopting this do? For instance I run ~amd64 |
104 |
multilib and have had quite a time dealing with the recent multilib |
105 |
changes (specifically with Humble Bundle games). Would you recommend |
106 |
helping you test this simplified and/or cleaned up toolchain on one's |
107 |
primary system, or is it better off for more specific systems that |
108 |
don't need to be as versatile as a multi-purpose desktop machine? |
109 |
|
110 |
Regardless, it seems really ambitious and I hope positive change comes |
111 |
about for the toolchain. |
112 |
-----BEGIN PGP SIGNATURE----- |
113 |
Version: GnuPG v2 |
114 |
|
115 |
iQEcBAEBAgAGBQJUhC80AAoJEJUrb08JgYgHowwH/A7s/IBm6wbQL2HafNuYCN9f |
116 |
I9MQlHeS7pBaf29u18nDPInFuViGgOfUjQBazhZ9TDdNFxG/EhmNhMfXRC0iIlPs |
117 |
HV9MmPWOgRQCo6E0DtTw81+E2aEPiCurqpKpTtChFZlYgN31z3sx9prevwtH1vyT |
118 |
ikHounODw4ml5aRCfQAm40Hgt+UJ5tre6mS9/3c/smmMSTO1/mxzxhMedHHs5Yol |
119 |
sgghqbzce5TO/LWKFpR1Jti7qF967Y9UVvQUHa/qX+jFDMN2CgIVPWI2I2s9LeW5 |
120 |
rR/xe94lcgJDDhTxeBG5ep0o5JXhAjNeoCq/qgcbhGM1OTzBOI/aOGjYgYa8tfA= |
121 |
=rsQ8 |
122 |
-----END PGP SIGNATURE----- |