[ CCing aurel32, doko and vorlon ]
Hi,
I was also caught by #635685 when trying to build gcc-4.7 snapshot
("gnu/stubs-32.h" not found due to double "gnu/stubs.h" in
/usr/include and /usr/include/i386-linux-gnu).
After a bit of dealing with the libc6-dev problem, I was able to build gcc-4.7.
[0] Filelist of installed libc6-dev package
$ dpkg --listfiles libc6-dev | sort > libc6-dev_filelist.txt
This shows doubled bits/ include files.
[1] Symlinking bits/ gnu/ sys/ include-dirs
Problem here was that these include-dirs were not removed on upgrade
to -13 (see excerpt from eglibc-213_debian_11-VS-12.diff below), which
is not ideal as some programs seem to look in the "old" locations.
A better solution would be to symlink:
# l /usr/include/bits /usr/include/gnu /usr/include/sys
lrwxrwxrwx 1 root root 19 31. Jul 13:14 /usr/include/bits ->
i386-linux-gnu/bits
lrwxrwxrwx 1 root root 18 31. Jul 13:13 /usr/include/gnu ->
i386-linux-gnu/gnu
lrwxrwxrwx 1 root root 18 31. Jul 13:19 /usr/include/sys -> i386-linux-gnu/sys
Next problem was that some -dev packages had files in /usr/include/sys
which were not in /usr/include/i386-linux-gnu/sys.
So, I reinstalled them (see attached files: sys-1.txt sys-2.txt sys.diff).
# apt-get install --reinstall libacl1-dev libasound2-dev libcap-dev
[ Excerpt diffs/eglibc-213_debian_11-VS-12.diff]
diff -uprN eglibc-2.13-11/debian/debhelper.in/libc-dev-alt.preinst
eglibc-2.13-12/debian/debhelper.in/libc-dev-alt.preinst
--- eglibc-2.13-11/debian/debhelper.in/libc-dev-alt.preinst
1970-01-01 01:00:00.000000000 +0100
+++ eglibc-2.13-12/debian/debhelper.in/libc-dev-alt.preinst
2011-07-31 11:57:30.000000000 +0200
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+case $1 in
+       (upgrade|install)
+       # We want /usr/include/bits and /usr/include/gnu to become
+       # symlinks
+       if test -d /usr/include/bits ; then
+               rm -rf /usr/include/bits
+       fi
+       if test -d /usr/include/gnu ; then
+               rm -rf /usr/include/gnu
+       fi
+
+       # We want /usr/include/sys to be a normal directory instead
+       # of a symlink
+       if test -h /usr/include/sys ; then
+               rm -f /usr/include/sys
+       fi
+       ;;
+       (*)
+       ;;
+esac
[2] Keep i486-linux-gnu for compatibility reasons?
I compiled my gcc-4.7 with host/buil/target type "i486-linux-gnu" (see
build-script).
i486-linux-gnu dynamic linker run-time bindings with multiarch-support
is configured via:
# cat /etc/ld.so.conf.d/i486-linux-gnu.conf
# Multiarch support
/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu
/lib/i486-linux-gnu
/usr/lib/i486-linux-gnu
Following this I created some symlinks for compatibility reasons:
# l /lib/i486-linux-gnu
lrwxrwxrwx 1 root root 14 31. Jul 14:42 /lib/i486-linux-gnu ->
i386-linux-gnu
# l /usr/lib/i486-linux-gnu
lrwxrwxrwx 1 root root 14 31. Jul 14:13 /usr/lib/i486-linux-gnu ->
i386-linux-gnu
I am not sure what is with /usr/lib/i586 /usr/lib/i686 - shouldn't
that stuff move below /usr/lib/i386-linux-gnu/?
[3] Error-message: crt*.o files not found
My build broke next when "crti.o" was not found, after this "crtn.o" etc.
To catch them, I created again some symlinks:
# l /usr/lib/crt*.o
lrwxrwxrwx 1 root root 21 31. Jul 14:16 /usr/lib/crt1.o ->
i386-linux-gnu/crt1.o
lrwxrwxrwx 1 root root 21 31. Jul 14:14 /usr/lib/crti.o ->
i386-linux-gnu/crti.o
lrwxrwxrwx 1 root root 21 31. Jul 14:14 /usr/lib/crtn.o -> i386-linux-gnu/crtn.o
[ Conclusion ]
With these modifications I was able to successfully build a gcc-4.7 snapshot.
First testcase was to build mesa-from-git, which worked.
Steve (vorlon) was telling me on #multiarch about a "compatibility
package" which was not finished yet.
Hope this helps to narrow down the problem.
- Sedat -
P.S.: gcc-4.7 file location and -v output
# which gcc-4.7
/usr/bin/gcc-4.7
# l /usr/bin/gcc-4.7
lrwxrwxrwx 1 root root 24 31. Jul 14:28 /usr/bin/gcc-4.7 ->
/opt/gcc-4.7/bin/gcc-4.7
# gcc-4.7 -v
Using built-in specs.
COLLECT_GCC=gcc-4.7
COLLECT_LTO_WRAPPER=/opt/gcc-4.7/lib/gcc/i486-linux-gnu/4.7.0/lto-wrapper
Target: i486-linux-gnu
Configured with: ../gcc-4.7-20110730/configure --prefix=/opt/gcc-4.7
--libdir=/opt/gcc-4.7/lib --libexecdir=/opt/gcc-4.7/lib
--program-suffix=-4.7 --enable-clocale=gnu --enable-languages=c,c++
--enable-shared --enable-threads=posix --disable-bootstrap
--disable-libssp --disable-multilib --disable-nls --with-system-zlib
--without-cloog --without-ppl --with-arch-32=i586 --with-tune=generic
--build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.7.0 20110730 (experimental) (GCC)
Attachment:
debbug-636116_from-dileks.tar.xz
Description: Binary data
Attachment:
debbug-636116_from-dileks.tar.xz.sha256sum
Description: Binary data