Re: comedi + suse compile error: irq_vectors.h: No such file or directory

On 30/01/2006 17:12, steve.sharples_at_nottingham.ac.uk wrote:
> I can get comedi to compile ok by adding an appropriate -I line in the
> Makefile. Actually what I do is edit a line in ./configure: change:
> 
> LINUX_CFLAGS="$LINUX_CFLAGS $LINUX_CFLAGS_MODULE"
> to
> LINUX_CFLAGS="$LINUX_CFLAGS -I/usr/src/linux/include/asm-i386/mach-default/ $LINUX_CFLAGS_MODULE"
> 
> (...then run ./configure again to re-make all my Makesfiles)
> This is a very dirty hack, and I haven't tried a card yet, but the comedi
> kernel module loads without complaint.
> 
> I've got virtually zero experience with Suse, I don't know how different
> their kernels are from vanilla but I don't think there is too much
> difference.

They'll use the usual array of vendor patches I guess, but I think the 
main thing Suse do differently to most distros is build the kernel 
object files outside the kernel source directory (so they can build 
kernels for different architectures and sub-architectures using a single 
copy of the source directory.  I guess Comedi's configure script is 
falling foul of this technique!

> All I did by way of preparation is install the "kernel-source"
> package. If I do the additional steps as described in the comedi INSTALL
> file (btw, I had to grab this off the most recent release version of
> comedi, as autogen.sh seems to create some sort of default INSTALL file
> that has nothing to do with comedi) like putting the current kernel
> configuration file into /usr/src/linux/.config, checking Makefile for
> EXTRAVERSION, run 'make oldconfig' and run 'make modules_prepare'... well,
> there seems to be absolutely no difference.
> 
> Is the machine-specific directory for irq_vectors.h meant to be something
> that's defined in the kernel configuration, the compiler, or by comedi?
> 
> I can provide any extra debug info you like, but you'll have to guide me
> because I'm a little ignorant of these things. Just wondered if anyone
> else had experience anything else like it, or had a "proper" fix (that
> doesn't involve compiling my own kernel).

It might be possible to cater for the Suse way of doing things with a 
bit of configure script hackery in a slightly more clean way than adding 
hard-coded include paths.

I think a "proper" fix would involve adopting the kernel's kbuild 
mechanism for building Comedi, but that's a fair bit of work involving 
some disruptive changes to the Comedi source code (especially to the 
Makefiles and kernel compatibility headers), so would have to be worked 
on in a new CVS branch.  There are some benefits - the Comedi build 
wouldn't keep tripping up over changes to the kbuild mechanism in the 
kernel (for example there are changes in 2.6.16-rc that are transparent 
to modules built using the kbuild mechanism, but currently cause Comedi 
to fail to build).

There are other issues with adopting kbuild, especially for 2.4 kernels 
which only supports a subset of the 2.6 kbuild mechanism, so the 
configure scripts would have to add extra stuff to the Makefile for 2.4 
to deal with dependency tracking and linking .o files together for 
example.  At least we don't have to worry about 2.2 kernels anymore!

Sorry, I kind of got off the the original subject a little :-)

-- 
-=( Ian Abbott _at_ MEV Ltd.    E-mail: <abbotti_at_mev.co.uk>        )=-
-=( Tel: +44 (0)161 477 1898   FAX: +44 (0)161 718 3587         )=-

Received on 2006-01-31Z11:44:58