Gentoo Archives: gentoo-dev

From: Geert Bevin <gbevin@××××.com>
To: gentoo-dev@g.o
Subject: Re: [gentoo-dev] Gcc 3.0.4 installed system
Date: Sun, 07 Apr 2002 05:58:07
Message-Id: 1018177055.23269.11.camel@oak.uwyn.office
In Reply to: Re: [gentoo-dev] Gcc 3.0.4 installed system by "Preston A. Elder"
1 Bootstrap gives you baselayout, binutils, gcc, glibc and gettext
2 compiled with gcc3. Everything (including these utilities you talk
3 about) else is compiled again when you do 'emerge system'. The only
4 thing I did afterwards is 'ebuild
5 /var/db/pkg/sys-devel/gcc-2.95.3-r5/gcc-2.95.3-r5.ebuild unmerge' to
6 ensure that it's not present at all on the system anymore.
7 The system I have running has no libraries of gcc 2.95.3 installed and
8 everything is running fine and has been compiled with gcc3. Remember
9 that is what stage1 -> stage2 -> stage3 really is for.
10 Sure a stage1 that has been prepared with gcc3 would be cleaner and it's
11 not that difficult to do. However as long as gcc3 isn't the default
12 gentoo compiler, I don't see much use for it.
13
14 On Sun, 2002-04-07 at 12:40, Preston A. Elder wrote:
15 > I'm sure it does ...
16 >
17 > But unless I'm missing something here, changing the profile does NOTHING
18 > to change the utilities (read: tar, bzip2, cp, mv, ls, etc) that are
19 > installed WITH the system.
20 >
21 > Read my email again carefully. I manually made my own
22 > 'default-1.0-gcc3' profile by changing the packages file to use gcc3
23 > instead of 2.95 and then bootstrapped with it -- and it worked fine
24 > right up until it installed glibc.
25 >
26 > Just incase your not a coder. GLIBC supplies both C and C++ libraries
27 > and symbols for other programs to use. All C++ symbols are 'mangled',
28 > which is a method the compiler uses to differentiate different functions
29 > with the same name but different types (read up on C++ function
30 > overloading and name mangling).
31 >
32 > 3.0 changed the mangling scheme used to mangle C++ names from what was
33 > used with 2.x -- which means, quite simply, if you have an application
34 > thats been compiled against libraries built with gcc 2.x, and then you
35 > compile the libraries with 3.x, the application will cease to work,
36 > because it will not be able to find the symbols it needs to run.
37 > Usually, this will result in a core dump. This only affects programs
38 > written in C++.
39 >
40 > This is exactly what happens with utilities such as tar, which is
41 > written in C++ (which surprised me). Which is why, your
42 > default-1.0-gcc3 profile will *NOT* enable someone to bootstrap with gcc
43 > 3.0, unless you happen to have a stage1 ISO that has statically linked
44 > binaries in it (theoretically, if you have statically linked binaries on
45 > the whole system, you dont even NEED a /lib or /usr/lib directory,
46 > because its all statically linked).
47 >
48 > This was the point I was trying to make. Dont get me wrong, I'm glad
49 > the gcc3 profile is there, and I'm using it, because I use gcc3
50 > exclusively -- however gcc3 (for now), is only available as a
51 > POST-bootstrap (ie. stage2) compilation, until we get a 1.0 ISO with
52 > statically linked binaries -- or binaries that are still dynamically
53 > linked, but all compiled with gcc3.0 against a glibc compiled with
54 > gcc3.0. Which brings in the chicken and the egg problem.
55 >
56 > This is also why you will have to lock people into a specific glibc
57 > version in your gcc3 profile (which I've noticed you dont do right
58 > now). Say someone bootstraps as normal, then installs gcc3, then
59 > switches to your gcc3 profile, and continues to build the system. If,
60 > at some later point, a new revision or version of glibc comes out, and
61 > is put into the portage tree, and the user then does a world upgrade,
62 > they will attempt to re-compile glibc. It will compile, but as soon as
63 > it installs, a good proportion of the rest of their system will stop
64 > working for exactly the reason I described. I've manually locked my
65 > glibc version because of this fact, because I know I cant re-compile it
66 > with gcc3 without breaking my system.
67 >
68 > If I get time, I'll sit down and think about how to actually create a
69 > stage1 (the thing you tar -xvbjf onto your hard disk) system that is
70 > totally gcc3 based, or see if I can create a stage1 with all statically
71 > linked binaries in it. For now, thats not high on my priority list.
72 >
73 > On Sun, 2002-04-07 at 06:14, Geert Bevin wrote:
74 > > Changing the profile in /etc/make.profile to default-1.0-gcc3 should
75 > > make you bootstrap against gcc3 instead.
76 > >
77 > > On Sun, 2002-04-07 at 05:29, Preston A. Elder wrote:
78 > > > Personally, I'd be very interested to know how you did this 'from
79 > > > scratch'.
80 > > >
81 > > > I myself have done this from the post-bootstrap (but pre emerge system)
82 > > > stage on, but I cant bootstrap with 3.0.x, why?
83 > > >
84 > > > Well, the image the ISO installs has many applications on it, not linked
85 > > > statically (eg. tar, etc) -- compiling gcc3.0.4 works fine, but as soon
86 > > > as it then compiles glibc 2.2.5 and installs it, nothing else works.
87 > > >
88 > > > The utilities on the install image look for glibc 2.2.5 compiled with
89 > > > gcc 2.95.x. So until there is an install image that has statically
90 > > > linked binaries on it, I dont see how a bootstrap can be achieved using
91 > > > 3.0.x compilers.
92 > > >
93 > > > I too, however, have installed a 3.0.x based system. I did the
94 > > > bootstrap on 2.95.3, then first thing after bootstrap, I merged gcc
95 > > > 3.0.4, and then did my emerge system. As Geert said, a few problems
96 > > > along the way, but not many. I too made patches for all the problems I
97 > > > found, I submitted them to Geert. The patches I made are ALL backward
98 > > > compatable to 2.95.3 (I believe, I've not tested this). But then, I
99 > > > could also have compiled a different package set than he did.
100 > > >
101 > > >
102 > > > On Sat, 2002-04-06 at 07:01, Geert Bevin wrote:
103 > > > > Hi all,
104 > > > >
105 > > > > I finally installed 1.0 from scratch and decided to try it out with gcc
106 > > > > 3.0.4 instead of 2.95.3. Along the way I encountered some problems, but
107 > > > > surprisingly little. I've fixed everything that needed fixing and sadly
108 > > > > some packages are backwards incompatible. For that reason and for the
109 > > > > ease of maintenance I've created a dedicated gcc 3 profile.
110 > > > >
111 > > > > So, for those that want to try this out, just link the default-1.0-gcc3
112 > > > > profile instead of default-1.0 to /etc/make.profile. Note that this will
113 > > > > only work for installations from scratch and not for updates since
114 > > > > applications that link against libstdc++ v2 require the libraries of gcc
115 > > > > v2 and not gcc v3.
116 > > > >
117 > > > > There are still some packages that don't compile such as galeon and
118 > > > > openjade, but these will be fixed in a matter of time since I need them
119 > > > > ;-) Feel free to submit fixes too.
120 > > > >
121 > > > > Best regards,
122 > > > >
123 > > > > Geert Bevin
124 > > > > --
125 > > > > Geert Bevin Uwyn
126 > > > > "Use what you need" Lambermontlaan 148
127 > > > > http://www.uwyn.com 1030 Brussels
128 > > > > gbevin@××××.com Tel & Fax +32 2 245 41 06
129 > > > >
130 > > > > _______________________________________________
131 > > > > gentoo-dev mailing list
132 > > > > gentoo-dev@g.o
133 > > > > http://lists.gentoo.org/mailman/listinfo/gentoo-dev
134 > > >
135 > > > Thanks,
136 > > >
137 > > > --
138 > > > PreZ
139 > > > Systems Administrator
140 > > > GOTH.NET
141 > > >
142 > > > Goth Code '98: tSKeba5qaSabsaaaGbaa75KAASWGuajmsvbieqcL4BaaLb3F4
143 > > > nId5mefqmDjmmgm#haxthgzpj4GiysNkycSRGHabiabOkauNSW
144 > > >
145 > > > GOTH.NET - http://www.goth.net
146 > > > Free online resource for the gothic community.
147 > > --
148 > > Geert Bevin Uwyn
149 > > "Use what you need" Lambermontlaan 148
150 > > http://www.uwyn.com 1030 Brussels
151 > > gbevin@××××.com Tel & Fax +32 2 245 41 06
152 > >
153 > > _______________________________________________
154 > > gentoo-dev mailing list
155 > > gentoo-dev@g.o
156 > > http://lists.gentoo.org/mailman/listinfo/gentoo-dev
157 > --
158 > PreZ
159 > Systems Administrator
160 > GOTH.NET
161 >
162 > Goth Code '98: tSKeba5qaSabsaaaGbaa75KAASWGuajmsvbieqcL4BaaLb3F4
163 > nId5mefqmDjmmgm#haxthgzpj4GiysNkycSRGHabiabOkauNSW
164 >
165 > GOTH.NET - http://www.goth.net
166 > Free online resource for the gothic community.
167 --
168 Geert Bevin Uwyn
169 "Use what you need" Lambermontlaan 148
170 http://www.uwyn.com 1030 Brussels
171 gbevin@××××.com Tel & Fax +32 2 245 41 06