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: [EMAIL PROTECTED]
Gefionsvej 19           spejder-e-mail: [EMAIL PROTECTED]
DK-8230 Åbyhøj          tel: +45 87 44 11 99
Denmark                 mob: +45 30 91 84 31

Reply via email to