I ran into a problem building kdelibs tonight and I'm not sure how to address 
the problem.  I got:

/bin/sh ../../libtool --silent --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H 
-I. -I../.. -I../../dcop -I../../kdecore -I../../kio/kssl -I../../kjs -I../.. 
-I./.. -I../../kdecore/network -I./../kssl -I../kssl -I./../../interfaces 
-I../../dcop -I../../libltdl -I../../kdefx -I../../kdecore -I../../kdecore 
-I../../kdecore/network -I../../kdeui -I../../kio -I../../kio/kio 
-I../../kio/kfile -I../.. -I/opt/qt/include -I. -I/opt/kde-3.5.10/include 
-D_LARGEFILE64_SOURCE -DQT_THREAD_SUPPORT  -D_REENTRANT  -Wno-long-long -Wundef 
-ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wchar-subscripts -Wall -W 
-Wpointer-arith -DNDEBUG -DNO_DEBUG -O2 -Wformat-security 
-Wmissing-format-attribute -Wno-non-virtual-dtor -fno-exceptions -fno-check-new 
-fno-common  -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT 
-DQT_NO_TRANSLATION  -c -o libksycoca_la.all_cpp.lo libksycoca_la.all_cpp.cpp
In file included from /usr/include/asm/fcntl.h:1,
                  from /usr/include/linux/fcntl.h:4,
                  from /usr/include/linux/inotify.h:11,
                  from kdirwatch.cpp:74,
                  from libksycoca_la.all_cpp.cpp:2:
/usr/include/asm-generic/fcntl.h:117: error: redefinition of 'struct flock'
/usr/include/bits/fcntl.h:145: error: previous definition of 'struct flock'
/usr/include/asm-generic/fcntl.h:140: error: redefinition of 'struct flock64'
/usr/include/bits/fcntl.h:160: error: previous definition of 'struct flock64'


There was an earlier report of the same thing (Oct 30) by Petr Ovtchenkov:
http://linuxfromscratch.org/pipermail/blfs-dev/2008-October/018968.html

and a discussion on the kernel list (Sep 16/17):
http://patchwork.ozlabs.org/patch/316/

I'm not sure the fix by Petr Ovtchenkov is the right thing to do, but I can't 
find anywhere where the kernel headers were changed after 2.6.27.4.  I also 
can't find any KDE bug filed that addresses the problem.

Basically Petr's approach is to remove the following lines:

static inline int inotify_init (void)
{
   return syscall (__NR_inotify_init);
}

static inline int inotify_add_watch (int fd, const char *name, __u32 mask)
{
   return syscall (__NR_inotify_add_watch, fd, name, mask);
}

static inline int inotify_rm_watch (int fd, __u32 wd)
{
   return syscall (__NR_inotify_rm_watch, fd, wd);
}

and replace #include <linux/inotify.h> with #include <sys/inotify.h>
where the above calls are defined. The functions are found in /lib/libc-2.8.so.

Does anyone have any thoughts on this?

   -- Bruce
-- 
http://linuxfromscratch.org/mailman/listinfo/blfs-dev
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to