Hello,
I am trying to build GCC 4.5 on my Ubuntu 15.04 laptop but cannot get it
to compile. As far as I got, there are two distinct errors, which
probably affect other old versions of GCC and other recent distros as well.
I have a workaround for the first issue, but I have no clue about the
second.
(1) TexInfo 5.0 is more strict and rejects some `.texi` files as
invalid.
In the course of building GCC, the `.texi` files are compiled
using the (system-provided) `makeinfo` binary. However, GNU texinfo
5.0.0 (released Feb. 2013) apparently rejects some syntax that was
accepted by older versions of it, which causes the GCC building process
to fail::
if [ xinfo = xinfo ]; then \
makeinfo --split-size=5000000 --split-size=5000000
--split-size=5000000 --no-split -I ../../gcc/doc \
-I ../../gcc/doc/include -o doc/gccinstall.info
../../gcc/doc/install.texi; \
fi
../../gcc/doc/cppopts.texi:763: @itemx must follow @item
Makefile:4052: recipe for target 'doc/cpp.info' failed
make[3]: *** [doc/cpp.info] Error 1
Listing texinfo 4.13 as a dependency in the `.eb` file does not work; EB
reports ignoring dependencies when doing the initial build of GCC using
the "dummy" toolchain::
== 2015-10-25 21:02:55,510 main.Dummy INFO prepare: toolchain dummy mode,
dummy version; not loading dependencies
The only workaround I have found is to force *not* building the docs:
buildopts='MAKEINFO=missing'
Maybe the `EB_GCC` easyblock could be patched to add `MAKEINFO=missing`
in the initial steps, and only build documentation in the last step,
when it's actually useful? (and build dependencies are honored)
(2) Still, compilation of `libgcc` fails with some error I cannot
explain.
After working around the makeinfo issue, the build process fails with
this error::
# multilibs.
/dev/shm/GCC/4.5.3/dummy-dummy/gcc-4.5.3/obj/./gcc/xgcc
-B/dev/shm/GCC/4.5.3/dummy-dummy/gcc-4.5.3/obj/./gcc/
-B/home/rmurri/.local/easybuild/software/GCC/4.5.3/x86_64-unknown-linux-gnu/bin/
-B/home/rmurri/.local/easybuild/software/GCC/4.5.3/x86_64-unknown-linux-gnu/lib/
-isystem
/home/rmurri/.local/easybuild/software/GCC/4.5.3/x86_64-unknown-linux-gnu/include
-isystem
/home/rmurri/.local/easybuild/software/GCC/4.5.3/x86_64-unknown-linux-gnu/sys-include
-g -O2 -O2 -g -O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual
-Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem
./include -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED
-I. -I. -I../.././gcc -I../../../libgcc -I../../../libgcc/.
-I../../../libgcc/../gcc -I../../../libgcc/../include
-I../../../libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS
-DUSE_TLS -o _ashldi3.o -MT _ashldi3.o -MD -MP -MF _ashldi3.dep -DL_ashldi3 -c
../../../libgcc/../gcc/libgcc2.c -fvisibility=hidden -DHIDE_EXPORTS
In file included from /usr/include/stdio.h:27:0,
from ../../../libgcc/../gcc/tsystem.h:87,
from ../../../libgcc/../gcc/libgcc2.c:29:
/usr/include/features.h:364:25: fatal error: sys/cdefs.h: No such file or
directory
compilation terminated.
Makefile:370: recipe for target '_ashldi3.o' failed
...
Makefile:21002: recipe for target 'bootstrap' failed
make: *** [bootstrap] Error 2
(at easybuild/local/lib/python2.7/site-packages/easybuild/tools/run.py:360
in parse_cmd_output)
I cannot understand this error, as the `sys/cdefs.h` file is regularly
present in `/usr/include`::
$ locate sys/cdefs.h
/usr/include/bsd/sys/cdefs.h
/usr/include/x86_64-linux-gnu/sys/cdefs.h
Any suggestions?
Ciao,
R
--
Riccardo Murri
http://www.s3it.uzh.ch/about/team/#Riccardo.Murri
S3IT: Services and Support for Science IT
University of Zurich
Winterthurerstrasse 190, CH-8057 Zürich (Switzerland)
Tel: +41 44 635 4297
Fax: +41 44 635 6888