[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