From: Thomas K. <me...@th...> - 2005-12-01 20:38:45
|
Hi! I'm currently trying to get davfs2 to work with my FC4 installation. I'm us= ing=20 a swsusp2 patched FC4 stock kernel (2.6.14-1.1637_9.rhfc4) which already=20 includes the coda FS compiled as module. Problem is that FC4 prevents the usage of kernel header files directly (gcc= =20 outputs "including kernel header in userspace" error), so for this purpose = a=20 special rpm, called glibc-kernheaders, takes place. Problem here is that th= is=20 package is for Kernel 2.4 only and therefor the file coda.h doesn't know=20 anything about CODA_KERNEL_VERSION set to 3, it defaults to 2 - its plain t= oo=20 old. The file coda.h which ships with the kernel itself has some reference = to=20 the correct version, but can't be included through the above gcc error (eve= n=20 if I copy the file from /usr/src/linux/include/linux to /usr/include/linux = it=20 still "recognizes" it as kernel header file... dunno why). If I compile with the "old" header file I get the following error message f= rom=20 mount.davfs on runtime: [tommyd@tidikay ~]$ mount /mnt/svnrepo /sbin/mount.davfs: CODA kernel version mismatch: compiled for version 2, version 3 available So my question is: How can I make davfs2 think I'm using=20 CODA_KERNEL_VERSION=3D3? Just add another #define in davfsd.c which overwri= tes=20 the CODA_KERNEL_VERSION which comes from coda.h? Any hints? Thanks in advance, Thomas. PS: I also asked in the Fedora Forum for this problem, more on the topic "w= hy=20 are glibc-kernheaders out of date and why I can't link to kernel header fil= es=20 directly...": http://forums.fedoraforum.org/showthread.php?t=3D87045 =2D-=20 Registered Linux User #369861 PGP Public Key on http://thomaskeller.biz/pgp/thomas-keller.pkr Learn to quote http://netmeister.org/news/learn2quote.html |
From: Werner B. <wer...@on...> - 2005-12-04 11:00:04
|
Hello Thomas, the dependencies and conflicts between kernel and system headers are really complicated and I don't understand most of it. Fortunately davfs2 only needs some macro constants and data structures from coda.h, that usally don't conflict with system headers and libraries. But the bits that cause problems are still in coda.h although we don't need them. So one aproach could be: - use the headers of your kernel 2.6 (as in your first attempt) - create a backup of coda.h, so you can change coda.h and restore the original later - now you can remove the bits that cause trouble from coda.h, whenever the compiler complains - first thing to remove from coda.h is '#include <linux/config.h>' Usually it should work now. - sometimes the definitions of 'struct ViceIoctl' and 'struct PioctlData' cause trouble. They may be removed too. - If there is something else in coda.h, the compilers complains about, just remove. If you are unlucky, the compiler will complain about something, davfs2 needs. I did not hear of this up to now. If it happens, please send me the complete error message from the compiler. If this does not work, we may make our own version of coda.h, just for davfs2. Greetings Werner P.S.: If you succeed, don't forget to restore the original coda.h in the kernel sources. |
From: Thomas K. <me...@th...> - 2005-12-05 20:25:20
|
> the dependencies and conflicts between kernel and system headers are > really complicated and I don't understand most of it. Fortunately davfs2 > only needs some macro constants and data structures from coda.h, that > usally don't conflict with system headers and libraries. > But the bits that cause problems are still in coda.h although we don't > need them. > So one aproach could be: [...] I did it even simpler: Instead of including coda.h via #include <linux/coda= =2Eh>=20 I just gave the full path to the file #include=20 "/usr/src/linux/include/linux/coda.h" and it magically decided to work =3D) Thanks for your help anyways! Thomas. =2D-=20 Registered Linux User #369861 PGP Public Key on http://thomaskeller.biz/pgp/thomas-keller.pkr Learn to quote http://netmeister.org/news/learn2quote.html |