[Pkg-uml-pkgs] Bug#438568: FTBFS: fail to build when linux-libc-dev on buildings system is 2.6.22

Peder Chr. Nørgaard pcn at pogt.dk
Fri Aug 17 20:43:02 UTC 2007


Package: user-mode-linux
Version: 2.6.21-1um-1
Severity: important
Justification: fails to build from source

This is a slightly tricky FTBFS report.  The fundamental bug is probably of upstream origin
- I have had similar problems building recent user-mode-linux'es under other distros.

The actual problem is, that if I try to do a dpkg-buildpackage on a recent
"sid" debian, it fails (I cannot do a "pbuilder build" because of #436388 and
the fact that linux-source-2.6.21 is no longer found on the debian servers).

The failure is a simple compilation failure:  

  gcc -Wp,-MD,arch/um/os-Linux/.aio.o.d  -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Os -D__arch_um__ -DSUBARCH=\"i386\" -Dvmap=kernel_vmap -Din6addr_loopback=kernel_in6addr_loopback -march=i486 -mtune=generic -mpreferred-stack-boundary=2 -ffreestanding -D_LARGEFILE64_SOURCE  -fno-unit-at-a-time -fno-omit-frame-pointer -fno-optimize-sibling-calls -g -fno-stack-protector -Wdeclaration-after-statement -Wno-pointer-sign -Iarch/um/include  -I/home/pcn/debian_src/user-mode-linux-2.6.21-1um/linux-source-2.6.21/arch/um/include/skas -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -DHAVE_AIO_ABI -c -o arch/um/os-Linux/aio.o arch/um/os-Linux/aio.c
arch/um/os-Linux/aio.c: In function 'do_aio':
arch/um/os-Linux/aio.c:80: error: unknown field 'aio_reserved3' specified in initializer
  
Now, why is this struct member 'aio_reserved3' missing?  If you check the file aio_abi.h in the
building directory linux-source-2.6.21/include/linux, the struct member is certainly defined.
But if you look more closely at the 'gcc' command above, you will notice that it does
not include an option "-Iinclude" - so the line '#include <linux/aio_abi.h>' in the aio.c makes
the compilation include the file /usr/include/aio_abi.h - which belongs to the debian package
linux-libc-dev which is now version 2.6.22-3.

And the struct member in question - aio_reserved3 - is present in the linux 2.6.21 source but not 
in the linux 2.6.22 sources.

So the fundamental problem is not that a struct member has been removed from a struct between 
2.6.21 and 2.6.22 - it is that the compilation command is missing the "-Iinclude" option.  It is 
quite obvious that the building of user-mode-linux - or any kernel building, actually - may not 
depend on whatever is currently installed in /usr/include - it must take all include files from 
the kernel build directory itself.

Regrettably, I am not sufficiently competent in reading Makefile to figure out a patch to solve
the problem.  But I am pretty certain that the problem is not Debian-specific - it is a basic
problem from upstream that just haven't been noticed because the vast majority of kernel builds
- including UML kernel builds - happen on systems that have a linux-libc-dev installed that
matches the kernel built.

It is wrong nevertheless.  I hope someone can figure this out and fix it.


-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 2.6.22-1-686 (SMP w/2 CPU cores)
Locale: LANG=en_DK.ISO-8859-15, LC_CTYPE=en_DK.ISO-8859-15 (charmap=ISO-8859-15)
Shell: /bin/sh linked to /bin/bash

Versions of packages user-mode-linux depends on:
ii  uml-utilities                 20060323-3 User-mode Linux (utility programs)

user-mode-linux recommends no packages.

-- no debconf information
Peder Chr. Nørgaard     e-mail: pcn at pogt.dk
Gefionsvej 19           spejder-e-mail: hathi at gallerne.dk
DK-8230 Åbyhøj          tel: +45 87 44 11 99
Denmark                 mob: +45 30 91 84 31




More information about the Pkg-uml-pkgs mailing list