On Wed, Nov 7, 2012 at 10:05 AM, Tomasz Torcz <tomek@xxxxxxxxxxxxxx> wrote: > Hi, > > Today I tried to build ladvd 1.0.4 package for rawhide, but it failed with > some strange message http://koji.fedoraproject.org/koji/getfile?taskID=4662562&name=build.log&offset=-4000 , > which is pasted below. So I rolled back to 1.0.2 and it failed to build, too. > It was building fine previously. > Then I tried to build for F18, it was built succesfuly (although it packaging ultimately > failed because of unrelated reason). > > So the question is: what's broken with rawhide builders? The kernel-headers package is newer and includes the UAPI split done by David Howells. > The message on rawhide builder is: > #v+ > libtool: compile: gcc -std=gnu99 -DHAVE_CONFIG_H -I. -Wall -Werror -Wformat -Wformat-security -D_FORTIFY_SOURCE=2 -fno-delete-null-pointer-checks -fstack-protector -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -c child.c -fPIC -DPIC -o .libs/child.o > In file included from cli.c:20:0: > common.h:152:8: error: redefinition of 'struct sysinfo' > In file included from /usr/include/linux/kernel.h:4:0, > from /usr/include/linux/sysctl.h:25, > from /usr/include/sys/sysctl.h:43, > from common.h:50, > from cli.c:20: > /usr/include/linux/sysinfo.h:7:8: note: originally defined here > make[2]: *** [cli.lo] Error 1 So it seems ladvd has carried a redefinition of struct sysinfo basically forever. They could have very well named it ladvd_sysinfo or something and that might work as a temporary patch, but I think there is a bigger issue going on here. It seems that /usr/include/sys/sysctl.h has been doing a bit of ifdefery to prevent inclusion of certain header files from the kernel. That header file is provided by glibc. In it, you can see things like: #include <stddef.h> /* Prevent more kernel headers than necessary to be included. */ #ifndef _LINUX_KERNEL_H # define _LINUX_KERNEL_H 1 # define __undef_LINUX_KERNEL_H #endif ... #include <linux/sysctl.h> #ifdef __undef_LINUX_KERNEL_H # undef _LINUX_KERNEL_H # undef __undef_LINUX_KERNEL_H #endif That works with kernel-headers from <= the 3.6 kernel, but the UAPI rework has redefined the header guards for a number of files, including <linux/kernel.h>. That file is now specifically guarded by: #ifndef _UAPI_LINUX_KERNEL_H #define _UAPI_LINUX_KERNEL_H which means the tests glibc is doing above are failing. David, any thoughts on what the general solution to that would be? josh -- devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/devel