Bug#644764: FTBFS: asm/errno.h: No such file or directory (due to multiarch)
Hi Matthias! Thanks for your help!
On Oct 09, 2011, at 04:47, Matthias Klose wrote:
> On 10/08/2011 10:31 PM, Kyle Moffett wrote:
>> Source: gcc-4.6
>> Version: 4.6.1-13
>> Severity: serious
>> Justification: fails to build from source (but built successfully in the past)
>>
>> When trying to rebuild gcc-4.6 natively from source, I get build
>> failures of the following variety:
>> asm/errno.h: No such file or directory
>>
>> In particular, it seems that recent linux-libc-dev packages have moved
>> the architecture-specific header files from the path "/usr/include/asm"
>> to "/usr/include/x86_64-linux-gnu/asm".
>>
>> In particular, I have linux-libc-dev 3.0.0-3 installed locally.
>>
>> The existing "gcc" on the system finds files in that search path, but
>> when building libgcc it seems that the temporary built "xgcc" does not.
>> You can some one example failed command below.
>>
>> Error output:
>> In file included from /usr/include/bits/errno.h:25:0,
>> from /usr/include/errno.h:36,
>> from ../../../../src/libgcc/../gcc/tsystem.h:93,
>> from ../../../../src/libgcc/../gcc/libgcc2.c:29:
>> /usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or directory
>
> I don't see this. is /usr/include/asm a symlink? is gcc-multilib the recent
> version in unstable? If this is a local build, make sure that the
> gcc-multiarch.diff is applied during the build.
No, this is a regular dpkg-buildpackage of the "gcc-4.6" source package:
$ apt-get source gcc-4.6=4.6.1-13
$ cd gcc-4.6-4.6.1
$ dpkg-buildpackage -us -uc -b
My /usr/include/asm is just a leftover empty directory. If I run:
$ dpkg -L linux-libc-dev
$ dpkg-deb -c /var/cache/apt/archives/linux-libc-dev_3.0.0-3_amd64.deb
I can see files in the following places, which matches up with what I
actually see in those directories:
/usr/include/asm-generic/*.h
/usr/include/linux/*.h
/usr/include/linux/*/*.h
/usr/include/mtd/*.h
/usr/include/rdma/*.h
/usr/include/sound/*.h
/usr/include/video/*.h
/usr/include/xen/*.h
/usr/include/x86_64-linux-gnu/asm/*.h
My currently installed GCC compiler packages are:
gcc 4:4.6.1-2 (gcc-defaults 1.107)
gcc-4.6 4.6.1-13
If I run this command on my regular system compiler:
$ cpp -v </dev/null
[...]
#include <...> search starts here:
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/include
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/include-fixed
/usr/include/x86_64-linux-gnu
/usr/include
End of search list.
[...]
So it looks like everything is OK. But when I try the build listed at
the beginning of this email, the very first "xgcc" partway through the
bootstrap fails with the attached message (with libgcc).
If I manually extract the command-line from that, strip out the object
files, and add the options "-E -Wp,-v -x c /dev/null", I get the
output found in the second attachment. The highlights are below:
#include "..." search starts here:
#include <...> search starts here:
.
../../.././gcc
../../../../src/libgcc
../../../../src/libgcc/../gcc
../../../../src/libgcc/../include
../../../../src/libgcc/config/libbid
/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/./gcc/include
/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/./gcc/include-fixed
/usr/local/include
/usr/include
End of search list.
The /usr/include/x86_64-include-linux directory with some headers
from linux-libc-dev is distinctly missing from that search path.
Cheers,
Kyle Moffett
make[7]: Entering directory `/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/x86_64-linux-gnu/32/libgcc'
# If this is the top-level multilib, build all the other
# multilibs.
/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/./gcc/xgcc -B/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/./gcc/ -B/usr/x86_64-linux-gnu/bin/ -B/usr/x86_64-linux-gnu/lib/ -isystem /usr/x86_64-linux-gnu/include -isystem /usr/x86_64-linux-gnu/sys-include -g -O2 -m32 -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 -fno-stack-protector -I. -I. -I../../.././gcc -I../../../../src/libgcc -I../../../../src/libgcc/. -I../../../../src/libgcc/../gcc -I../../../../src/libgcc/../include -I../../../../src/libgcc/config/libbid -DENABLE_DECIMAL_BID_FORMAT -DHAVE_CC_TLS -DUSE_TLS -o _muldi3.o -MT _muldi3.o -MD -MP -MF _muldi3.dep -DL_muldi3 -c ../../../../src/libgcc/../gcc/libgcc2.c \
-fvisibility=hidden -DHIDE_EXPORTS
In file included from /usr/include/bits/errno.h:25:0,
from /usr/include/errno.h:36,
from ../../../../src/libgcc/../gcc/tsystem.h:93,
from ../../../../src/libgcc/../gcc/libgcc2.c:29:
/usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or directory
compilation terminated.
make[7]: *** [_muldi3.o] Error 1
make[7]: Leaving directory `/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/x86_64-linux-gnu/32/libgcc'
make[6]: *** [multi-do] Error 1
make[6]: Leaving directory `/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/x86_64-linux-gnu/libgcc'
make[5]: *** [all-multi] Error 2
make[5]: *** Waiting for unfinished jobs....
make[5]: Leaving directory `/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/x86_64-linux-gnu/libgcc'
make[4]: *** [all-stage1-target-libgcc] Error 2
make[4]: Leaving directory `/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build'
make[3]: *** [stage1-bubble] Error 2
make[3]: Leaving directory `/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build'
make[2]: *** [bootstrap-lean] Error 2
make[2]: Leaving directory `/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build'
s=`cat status`; rm -f status; test $s -eq 0
make[1]: *** [stamps/05-build-stamp] Error 1
make[1]: Leaving directory `/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1'
make: *** [stamps/05-build-stamp] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2
ignoring nonexistent directory "/usr/x86_64-linux-gnu/include"
ignoring nonexistent directory "/usr/x86_64-linux-gnu/sys-include"
ignoring nonexistent directory "./include"
ignoring nonexistent directory "/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/gcc/../lib/gcc/x86_64-linux-gnu/4.6.1/include"
ignoring nonexistent directory "/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/gcc/../lib/gcc/x86_64-linux-gnu/4.6.1/include-fixed"
ignoring nonexistent directory "/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/gcc/../lib/gcc/x86_64-linux-gnu/4.6.1/../../../../x86_64-linux-gnu/include"
ignoring nonexistent directory "/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/gcc/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/4.6.1/include"
ignoring nonexistent directory "/usr/local/include/i386-linux-gnu"
ignoring nonexistent directory "/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/gcc/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/4.6.1/include-fixed"
ignoring nonexistent directory "/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/gcc/../lib/gcc/../../lib/gcc/x86_64-linux-gnu/4.6.1/../../../../x86_64-linux-gnu/include"
ignoring nonexistent directory "/usr/include/i386-linux-gnu"
ignoring duplicate directory "."
ignoring duplicate directory "../../../../src/libgcc/."
#include "..." search starts here:
#include <...> search starts here:
.
../../.././gcc
../../../../src/libgcc
../../../../src/libgcc/../gcc
../../../../src/libgcc/../include
../../../../src/libgcc/config/libbid
/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/./gcc/include
/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/./gcc/include-fixed
/usr/local/include
/usr/include
End of search list.
# 1 "/dev/null"
# 1 "/srv/stuff/toolchain/BUILDER/GCC/gcc-4.6-4.6.1/build/x86_64-linux-gnu/32/libgcc//"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/dev/null"
Reply to: