[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: