From: John E. <jea...@si...> - 2005-10-20 21:18:50
|
It has been pointed out to me that my previous solution only accounted for the case where one was building against the running kernel. I have updated the patch to take the --with-kernel option into account. -- John Eastman John Eastman wrote: >I ran into some problems compiling the fuse (2.4.0/2.4.1) kernel module >on a SUSE 9.3 distribution with the "stock" kernel. > >Investigating the problem, I realized that SUSE packages their kernel >source and kernel symbols separately. In the module installation >directory (/lib/modules/<kernel version>) the build symbolic link points >to the installed symbols, while the source symbolic link points to the >actual source. This slight abnormality causes the test for kernel xttr >support to fail, since the build/include/linux directory does not >contain all of kernel includes (only version.h and autoconf.h) and the >test is looking for attr.h. > >To fix the problem, I had to manually change the configure script. I >changed the location of where the test was looking for the file, which >worked. Instead of submitting a patch to the configure script, I created >a, very simple, patch on the configure.ac that was included in the >kernel directory to check for the xattr.h file in the source directory >rather than the build directory. > >Hopefully this helps others who might run into this situation. > > > ========================================= Patch ========================================= diff -uNr fuse-2.4.1-orig/kernel/configure.ac fuse-2.4.1/kernel/configure.ac --- fuse-2.4.1-orig/kernel/configure.ac 2005-10-11 08:37:55.000000000 -0500 +++ fuse-2.4.1/kernel/configure.ac 2005-10-20 16:10:04.000000000 -0500 @@ -9,8 +9,10 @@ [ --with-kernel=PATH Specify location of kernel source ], [kernelsrc="$withval"]) +sourcelink=$kernelsrc if test -z "$kernelsrc"; then buildlink=/lib/modules/`uname -r`/build + sourcelink=/lib/modules/`uname -r`/source if test -e $buildlink; then kernelsrc=`(cd $buildlink; /bin/pwd)` else @@ -84,7 +86,19 @@ AC_DEFINE(HAVE_KERNEL_XATTR, 1, [Kernel has xattr support]) AC_MSG_RESULT([yes]) else - AC_MSG_RESULT([no]) + if test -e $sourcelink; then + if test -f $srclink/include/linux/xattr.h; then + AC_DEFINE(HAVE_KERNEL_XATTR, 1, [Kernel has xattr support]) + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + else + AC_MSG_RESULT([Not found]) + AC_MSG_ERROR([ + *** Please specify the location of the kernel source with + *** the '--with-kernel=SRCDIR' option]) + fi fi isuml=no |