1 |
Before I start this, I'll introduce myself. |
2 |
|
3 |
I'm a professional programmer, working in C, C++, Java, Perl, TCL and |
4 |
shell. I'm qualified to be a professional systems administrator (tho I |
5 |
do not work in that field right now, just dabble with my 9 systems at |
6 |
home). I write Magick IRC Services (http://www.magick.tm), and run |
7 |
GOTH.NET (http://www.goth.net). I also have a few other side-projects. |
8 |
|
9 |
I've been using GCC 3.0.x since they first came out, and had fairly |
10 |
good luck with it, however this is the first time I've tried to build |
11 |
most of my system with it. The way I went about this was to boostrap |
12 |
gentoo as usual, and then emerge system as usual, however, after I did |
13 |
the emerge system, the first thing I did was install gcc 3.0.4, so |
14 |
anything on top of the default system (including any upgrades that may |
15 |
have come out since install) are built with 3.0.4. |
16 |
|
17 |
My 2 attempts to base the entire system (including all the stuff done in |
18 |
the initial bootstrap and the system build after this) off glibc 2.2.5, |
19 |
and gcc 3.0.4 failed miserably, I gave up on that. So I've stuck to the |
20 |
base of 2.2.4, and building anything AFTER the initial system install |
21 |
with gcc 3.0.4. |
22 |
|
23 |
If you plan to try to do the same thing as I have, I recommend you DO |
24 |
NOT use the -funroll-loops optimization. This will break MANY things, |
25 |
and is extremely hard to debug if you have to attempt. I ran into |
26 |
problems with this optimization with gnome-libs, mozilla, evolution, and |
27 |
openssl. More than likely, it has more problems than that. |
28 |
|
29 |
I've listed below a list of packages I had problems with during the |
30 |
compile or installation phase compiling them with gcc 3.0.4, for your |
31 |
reference if you want to attempt this. These should probably be turned |
32 |
into bugs by one of the developers (I'm registered in the bug database, |
33 |
but I think someone would take exception to me raising so many bugs, and |
34 |
I dont know much history on the whole system, so I dont know the policy |
35 |
on bugs, or whats already raised, etc). |
36 |
|
37 |
Most of this document speaks in programmer terms. |
38 |
|
39 |
XFree86 4.2.0 (r8) |
40 |
- lib/GLU in one of the .cc's, creates a profile for a static |
41 |
void swap(char *[], int, int) - then when its used, it puts |
42 |
another profile in the function its used in, and then the |
43 |
actual function definition is not static. It all ends up |
44 |
looking something like this: |
45 |
static void swap(char *[], int, int); |
46 |
... |
47 |
void somefunc() { |
48 |
void swap(char *[], int, int); |
49 |
} |
50 |
... |
51 |
void swap(char *[], int, int) { |
52 |
} |
53 |
The profile should be removed from the function, and the |
54 |
actual definition of the function should beccome static. |
55 |
|
56 |
- programs/XServer doesnt link, because the -lXau is too early |
57 |
in the linking process, it needs to be moved to later on (this |
58 |
is a makefile change). |
59 |
|
60 |
pilot-link 0.9.6 (r3) |
61 |
- A bunch of .hxx files that just have friend <class> instead of |
62 |
friend class <class>, which GCC 3.0.x complains about. |
63 |
|
64 |
groff 1.17.2 (r1) |
65 |
- When using the original groff (compiled in the system build), it |
66 |
will complain about the library libstdc++-6.2-2.so.3 missing after |
67 |
gcc 3.0.x is installed. When groff is recompiled with gcc 3.0.4, |
68 |
troff coredumps - however groff still works (evident with 'man'). |
69 |
|
70 |
pcmcia-cs 3.1.33 (r2) |
71 |
- Wireless support totally broken. The /etc/pcmcia/wireless script |
72 |
is never invoked, and even if you invoke it, the network script |
73 |
never sources /etc/pcmcia/shared. To fix this problem, I've added |
74 |
to the top of the /etc/pcmcia/network script: |
75 |
. /etc/pcmcia/shared $* |
76 |
get_info $DEVICE |
77 |
HWADDR=`ifconfig $DEVICE | grep HWaddr | sed "s/.*HWaddr //"` |
78 |
if [ -z "$NEW_SCHEME" ]; then |
79 |
ADDRESS="$SCHEME,$SOCKET,$INSTANCE,$HWADDR" |
80 |
else |
81 |
ADDRESS="$NEW_SCHEME,$SOCKET,$INSTANCE,$HWADDR" |
82 |
fi |
83 |
|
84 |
if [ -f /proc/net/wireless ]; then |
85 |
if [ -n "`awk '{print $1}' /proc/net/wireless |\ |
86 |
cut -f1 -d: | grep "^$DEVICE$"`" ]; then |
87 |
. /etc/pcmcia/wireless $* |
88 |
fi |
89 |
fi |
90 |
|
91 |
perl 5.6.1 (r3) |
92 |
- Perl is not compiled with POSIX threads support, which retards |
93 |
packages such as PDL and expat, both of which tell you that perl |
94 |
lacks POSIX threads support. |
95 |
|
96 |
openjade 1.3 (r2) |
97 |
- ugly (non-3.0.4 ready) syntax on line 217 of CmdLineApp.cxx |
98 |
- spgrove/GroveBuilder.cxx also is not 3.0.4 ready, PiChunk should |
99 |
inherit CharsChunk as protected, not private. |
100 |
- style/LangObj.cxx line 27 redefines strdup? not needed. |
101 |
- nsgmls/RastEventHandler.h, class RastEventHandler inherits |
102 |
messenger private, should be protected. |
103 |
|
104 |
util-linux 2.11l |
105 |
- No encryption support. Either cryptoapi or the international |
106 |
kernel patch needs to be installed. And util-linux needs to |
107 |
be patched with the patch from the cryptoapi. Please check out |
108 |
http://cryptoapi.sourceforge.net for where to get both cryptoapi |
109 |
or the linux international kernel patch. |
110 |
I personally installed cryptoapi, and then applied the patch for |
111 |
util-linux contained within that package to util-linux, and then |
112 |
re-compiled util-linux. This is the only way to get real crypto |
113 |
algorithms like blowfish, 3des, etc into losetup (so you can have |
114 |
encrypted loopback filesystems). |
115 |
Please note, that if you go this route, the patch in cryptoapi |
116 |
for util-linux fails in 2 places, neither of these is important. |
117 |
If you wish for me to create an ebuild for cryptoapi, and create |
118 |
a better patch for util-linux (that can be put into the files |
119 |
directory for the util-linux package), please let me know. |
120 |
|
121 |
evolution 1.0.2 (r1) |
122 |
- Need to apply my IMAP patch, see bug 1355 (patch included) |
123 |
|
124 |
lame 3.91 |
125 |
- rtp.h has #ifdef 0, not #if 0 |
126 |
|
127 |
xzgv |
128 |
- No such package, should be added, see bug 1354. |
129 |
|
130 |
screen |
131 |
- doesnt exist (I will create an ebuild file for it in the near |
132 |
future if noone else does). |
133 |
|
134 |
xmms-shn 2.2.4 |
135 |
- flexio.c looks for ulaw_outward, which doesnt exist, I dont know |
136 |
how to resolve this. |
137 |
|
138 |
avi-xmms 1.2.2 (r2) |
139 |
- No dependancy on SDL in the ebuild file, even though the |
140 |
configure script for the package requires it. |
141 |
- The dependancy in the ebuild file is broken (there is no such |
142 |
version 0.52.anything, so it chucks a fit). |
143 |
- Needs updating to new avifile library, since only the 0.60 version |
144 |
is now in the portage tree, this software needs to compile with |
145 |
it. This or the 0.52 avifile ebuild should be re-added. |
146 |
|
147 |
smpeg-xmms 0.3.4 (r1) |
148 |
- The package's configure script needs to use C++ for its tests. |
149 |
- Configure's test programs are generated with the code: |
150 |
#ifdef __cplusplus |
151 |
extern "C" void exit(int); |
152 |
#endif |
153 |
which 3.0.4 rejects because it doesnt match the definition |
154 |
in system headers (which throws exceptions). |
155 |
- Each library the configure script looks for, it creates an |
156 |
internal variable called library_CFLAGS (where library is |
157 |
replaced with the library its looking for). However it does |
158 |
NOT create a library_CXXFLAGS variable, so when it does its |
159 |
compile test to see if the libraries check out (after making |
160 |
the configure script use c++ for its test), it fails. |
161 |
- The code needs to be re-written to support gcc 3.0.4 |
162 |
|
163 |
gtkmm-addons (0.5.3) |
164 |
- Configure's test programs are generated with the code: |
165 |
#ifdef __cplusplus |
166 |
extern "C" void exit(int); |
167 |
#endif |
168 |
which 3.0.4 rejects because it doesnt match the definition |
169 |
in system headers (which throws exceptions). |
170 |
- TCList.h and TCList_ct.h need the following changes: |
171 |
'using namespace std' needs to be added to the top of the file. |
172 |
'friend iterator' need to change to 'friend class iterator' |
173 |
The function 'static inline bool operator!=' needs to be |
174 |
completely removed. |
175 |
- TCListRow_ct.cc (line 44) need explicit casting of lr.item |
176 |
to Gtk::CTree::Row |
177 |
- Gtk2TeX.h needs 'using namespace std' added to the top. |
178 |
- Most of the test cases also need 'using namespace std'. |
179 |
|
180 |
sslwrap 2.0.5 (r1) |
181 |
- For some reason, they pass -DOPENSSL="\"openssl/\"" to the make |
182 |
command, and then inside the .c files use something like |
183 |
#include OPENSSL"ssl.h" |
184 |
They are trying to rying to convert it to "openssl/""ssl.h", |
185 |
however GCC 3.0.4 doesnt like this construct on an #include line. |
186 |
I searched/replaced OPENSSL" with "openssl/ in all .c files. |
187 |
|
188 |
snort 1.8.3 (r1) |
189 |
- Had to add a header check for sys/types.h to the configure.in |
190 |
file (and then re-autoconf) so it would find u_int(8|16|32)_t |
191 |
typedef's (as it was not finding them). |
192 |
|
193 |
nautilus 1.0.6 (r6) |
194 |
- in components/mozilla/nautilus-mozilla-embed-extensions.cpp, |
195 |
removed the #include <std/bastring.h> and the |
196 |
typedef basic_string<char> string, and just added |
197 |
#include <string> and 'using namespace std'. |
198 |
|
199 |
sun-jdk 1.4.0 (r1) |
200 |
- Requires manual intervention to install (ie. manually downloading |
201 |
the file from sun, running their .bin file, and then moving the |
202 |
resulting .tar into the distfiles directory). |
203 |
- The plugin file gives invalid symbols when mozilla is trying to |
204 |
load it. I also tried the blackdown java (1.3.1) plugin, same |
205 |
problem. Note that the sun jdk has no problems RUNNING. I get |
206 |
the feeling I'm going to have to create an ebuild file for the |
207 |
sun jdk source distribution (1.3.1), so I can get the plugin. |
208 |
|
209 |
jikes 1.15 |
210 |
- Changed entry in enum called NAN to L_NAN (and all usages of it), |
211 |
NAN is a macro in the system headers for 3.0.4. |
212 |
|
213 |
battery_applet |
214 |
- For some reason, this starts and ends, without doing anything (no |
215 |
compile errors for gnome_applets). No idea why, however power |
216 |
applet works ok in its stead. |
217 |
|
218 |
If you have any questions, comments, or need more detail about anything |
219 |
I've mentioned above, please let me know. I hope this is helpful. I'm |
220 |
not finished, theres still a few loose ends to tie up, however I'm |
221 |
getting there. MOST of my system is up and running :) |
222 |
|
223 |
-- |
224 |
PreZ |
225 |
Systems Administrator |
226 |
GOTH.NET |
227 |
|
228 |
Goth Code '98: tSKeba5qaSabsaaaGbaa75KAASWGuajmsvbieqcL4BaaLb3F4 |
229 |
nId5mefqmDjmmgm#haxthgzpj4GiysNkycSRGHabiabOkauNSW |
230 |
|
231 |
GOTH.NET - http://www.goth.net |
232 |
Free online resource for the gothic community. |