Hi folks :-)

Yesterday I upgraded the kernel of my c't-VDR 6 to 2.6.18.dfsg.1-13etch3, then
to 2.6.18.dfsg.1-13etch4 and had the same problem with both of them when
building the latest v4l-dvb from hg.

Unfortunately I hadn't tried compiling with the before working hg-release, so I
had quite a hard time finding the error.

The error was (compiling with linux-source-2.6.18 2.6.18.dfsg.1-13etch4 on hg
release ea93c93f1547 as of Oct 11th):

  CC [M]  
/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb_test/v4l/pvrusb2-sysfs.o
/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb_test/v4l/pvrusb2-sysfs.c: In
function 'pvr2_sysfs_add_debugifc':
/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb_test/v4l/pvrusb2-sysfs.c:626:
warning: assignment from incompatible pointer type
/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb_test/v4l/pvrusb2-sysfs.c:627:
warning: assignment from incompatible pointer type
/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb_test/v4l/pvrusb2-sysfs.c:630:
warning: assignment from incompatible pointer type
/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb_test/v4l/pvrusb2-sysfs.c: In
function 'pvr2_sysfs_class_create':
/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb_test/v4l/pvrusb2-sysfs.c:925:
error: 'struct class' has no member named 'dev_release'
/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb_test/v4l/pvrusb2-sysfs.c:930:
error: 'struct class' has no member named 'dev_uevent'
make[4]: ***
[/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb_test/v4l/pvrusb2-sysfs.o] 
Error 1
make[3]: ***
[_module_/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb_test/v4l] Error 2
make[2]: *** [modules] Error 2
make[2]: Leaving directory
`/var/lib/video.main/IMAGES/public/src/usr_src_vdr6/linux-source-2.6.18'
make[1]: *** [default] Fehler 2
make[1]: Leaving directory
`/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb_test/v4l'
make: *** [all] Fehler 2

The problem persisted even after deactivating pvrusb2-support and looked like 
that:

make[2]: Entering directory
`/var/lib/video.main/IMAGES/public/src/usr_src_vdr6/linux-headers-2.6.18-5-686'
  CC [M]  /var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb/v4l/videodev.o
/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb/v4l/videodev.c:126: error:
unknown field 'dev_attrs' specified in initializer
/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb/v4l/videodev.c:126: warning:
initialization from incompatible pointer type
/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb/v4l/videodev.c:127: error:
unknown field 'dev_release' specified in initializer
/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb/v4l/videodev.c:127: warning:
missing braces around initializer
/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb/v4l/videodev.c:127: warning:
(near initialization for 'video_class.subsys')
/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb/v4l/videodev.c:127: warning:
initialization from incompatible pointer type
make[4]: *** [/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb/v4l/videodev.o]
Error 1
make[3]: *** [_module_/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb/v4l] 
Error 2
make[2]: *** [modules] Error 2
make[2]: Leaving directory
`/var/lib/video.main/IMAGES/public/src/usr_src_vdr6/linux-headers-2.6.18-5-686'
make[1]: *** [default] Fehler 2
make[1]: Leaving directory 
`/var/lib/video.main/IMAGES/public/src/dvb/v4l-dvb/v4l'
make: *** [all] Fehler 2


Finally looking in the Mercurial changelog at http://www.linuxtv.org/hg/v4l-dvb
and trying to compile different revisions I found out that revision d54a009062d3
worked, but a3583b377d71 not anymore:

Mauro Carvalho Chehab   V4L: convert struct class_device to struct device
a3583b377d71                    ## <- doesn't work

Mauro Carvalho Chehab   videobuf_core init always require callback
implementation  d54a009062d3    ## <- still works


An example of the problematic section in dvb/v4l-dvb/v4l/videodev.c[118]:

static struct class video_class = {

        .name    = VIDEO_NAME,

#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)

        .release = video_release,

#else

        .dev_attrs = video_device_attrs,

        .dev_release = video_release,
#endif

};

It seems for me like the new struct isn't in the debian-version of 2.6.18 yet.
But maybe the test for version 2.6.13 in the code is simply wrong and the change
in the struct was even later? I'm not so good at kernel-level, so this is only a
guess.

So for now I'm running on rev. d54a009062d3 (accomplished by
"hg revert -r d54a009062d3").

So far,
happy sunday ;-)
Hans-Georg

_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

Reply via email to