this has been a problem for a long time in Mandrake (it's FAQ #3.8) and we resisted doing anything about it but now that Red Hat is doing it and you've proposed an elegant solution we should give it a try. I'll check it in. Mark M. Hoffman wrote: > * Philip Pokorny <ppokorny at penguincomputing.com> [2003-05-07 19:40:31 -0700]: > > >>Red hat pre-generates all the modversion madness for all the kernels and >>includes them in the kernel source tree. Further, the versions.h that >>is in place looks at something like this: >> >>#include <linux/rhconfig.h> >>#if defined(__module__smp) >>#define UTS_RELEASE "2.4.18-10smp" >>#elif defined(__module__BOOT) >>#define UTS_RELEASE "2.4.18-10BOOT" >>#elif defined(__module__bigmem) >>#define UTS_RELEASE "2.4.18-10bigmem" >>#elif defined(__module__debug) >>#define UTS_RELEASE "2.4.18-10debug" >>#else >>#define UTS_RELEASE "2.4.18-10" >>#endif >>#define LINUX_VERSION_CODE 132114 >>#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) >> >>Normally there would only be one UTS_RELEASE entry here. This alone >>gives many makefiles fits. > > > Ours, e.g. :) Once upon a time I suggested a way for us to deal with > that but the suggestion was ignored... ah yes here it is: > > http://archives.andrew.net.au/lm-sensors/msg01854.html > > >>Notice the include of rhconfig.h. That file includes /boot/kernel.h >>which is created each time a Red Hat kernel boots. /boot/kernel.h tells >> rhconfig.h what the active kernel is (smp, up, bigmem, 586, 686, etc.) >>which then tells (via __module__xxxx) version.h, modversions.h and >>modules/foo.ver which #defines to make active. >> >>When you 'make clean' or make 'dep' you delete this version madness and >>it all breaks down until you actually build a kernel in that tree. But >>then the files are setup ONLY for that single kernel. > > > Great explanation - thanks. > > >>I also find that if I create a soft link in the i2c tree: >> >> ln -s kernel linux >> >>Then I can build lm_sensors without installing i2c. Just compile i2c as >>above, then in lm_sensors: >> >> make I2C_HEADERS=<path to i2c> >> >>Then I can insmod the .o files directly from the i2c and lm_sensors >>build areas for testing without clobbering the kernel files. > > > That is slick - thanks again! > > Regards, >