[linux-dvb] hg v4l-dvb broken with kernel 2.6.18.dfsg.1-13etch4 (Debian)

Hans-Georg Friedmann hgf at hgfriedmann.de
Sun Oct 14 05:49:16 CEST 2007


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



More information about the linux-dvb mailing list