News:

Latest versions:
Server plugin: 0.5.1
MVP dongle: 0.5.2
Raspberry Pi client: 0.5.2
Windows client: 0.5.2-1

Main Menu

Howto compile VOMP for different VDR versions ???

Started by argonaut32, July 03, 2005, 19:41:53

Previous topic - Next topic

argonaut32

Hi there,

I just loaded the files from the CVS into the directory

/pub/vomp/vompserver/

and then I compiled it with

make all

then I compiled the file libvdr-vomserver.so into the directory

/usr/lib/vdr/plugins/

and renamed the the file to

libvdr-vompserver.so.1.2.6.

Unfortunately when I start the vdr I get the following error:

WARNING: The following plugins have been left out due to possible binary incompatibility: vompserver

I got the following versions of vdr running

c't VDR: 1.2.6-34
Kernel : 2.4.27-ctvdr-1

I also tried to copy the files into the directory

/usr/src/vdr/vdr-1.2.6/PLUGINS/src/vompserver/

and tried to compile the plugin with

cd /usr/src/vdr/vdr-1.2.6
make plugins

But i get the same error when starting the vdr.

Any idea what I am doing wrong ?

Thanks a lot.

Best Regards,
                      Argonaut32

Chris

Hi, I am guessing c't vdr is using basically the debian package of vdr. I have just been looking through the normal debian vdr package - it has a script to load the plugins. It looks like it is checking the versions on the plugins right down to the patch level (I think the -34 out of vdr-1.2.6-34) and it might not be loading vomp simply because of that. Try renaming the file to
libvdr-vompserver.so.1.2.6-34 or maybe .34 at the end and see if that works.

Alternatively there might be a /etc/default/vdr file which has the options PLUGIN_CHECK_STARTABLE and PLUGIN_CHECK_PATCHLEVEL.

You could try turning these off temporarily to see if it loads the plugin.

Let me know how it goes!

Chris

argonaut32

#2
Hi Chris,

thanks a lot for your help.

Yeah setting PLUGIN_CHECK_PATCHLEVEL="no" in /etc/default/vdr did the trick.
So in the end I menaged to get vompserver running. cool.

For an initial code release it works great.

Keep it up.

Best Regards,
                      Argonaut32

koepcke

I like to compile VOMP on LinVDR 1.3.24.
The result is:
make[1]: Entering directory `/usr/src/vdr/PLUGINS/src/vompserver'
g++ -O2 -Wall -Woverloaded-virtual -Werror -c -DPLUGIN_NAME_I18N='"vompserver"'                                               -I../../include -I../../../../DVB/include -Iremux -Ilibdvbmpeg -o vompserver.o v                                              ompserver.c
vompserver.c:29: vdr/plugin.h: No such file or directory
In file included from mvpserver.h:31,
                 from vompserver.c:31:
mvpclient.h:31: vdr/recording.h: No such file or directory
mvpclient.h:32: vdr/channels.h: No such file or directory
mvpclient.h:33: vdr/videodir.h: No such file or directory
mvpclient.h:34: vdr/plugin.h: No such file or directory
In file included from mvpclient.h:38,
                 from mvpserver.h:31,
                 from vompserver.c:31:
mvpreceiver.h:24: vdr/channels.h: No such file or directory
mvpreceiver.h:25: vdr/device.h: No such file or directory
mvpreceiver.h:26: vdr/receiver.h: No such file or directory
mvpreceiver.h:27: vdr/ringbuffer.h: No such file or directory
In file included from mvpreceiver.h:29,
                 from mvpclient.h:38,
                 from mvpserver.h:31,
                 from vompserver.c:31:
remux/tsremux.h:5: vdr/remux.h: No such file or directory
In file included from mvpclient.h:39,
                 from mvpserver.h:31,
                 from vompserver.c:31:
recplayer.h:25: vdr/recording.h: No such file or directory
make[1]: *** [vompserver.o] Error 1
make[1]: Leaving directory `/usr/src/vdr/PLUGINS/src/vompserver'
make: *** [plugins] Error 2

Were is my msitake?Did I forget to configure s.t.?

davep

AIUI LinVDR is a pre-packaged binary VDR appliance based on a Debian distribution.

When I do a 'make plugins' using a standard source of vdr and vomp the output begins:

make[1]: Entering directory `/dave/DVB/DVB/vdr-1.3.34/PLUGINS/src/vompserver'
g++ -O2 -Wall -Woverloaded-virtual -Werror -c -DPLUGIN_NAME_I18N='"vompserver"' -I../../../include -I../../../../DVB/include -Iremux -Ilibdvbmpeg -o vompserver.o vompserver.c

Notice that the include path has one more "../" than on your listing, which is why it can find the include files when yours cannot.

I suspect the problem is due to the way in which the package was built. Have you asked on the LinVDR boards? Actually, looking in the FAQ it seems that LinVDR already has support for the MVP using the Hauppauge firmware (and presumably the MVPServer plugin) so you don't really need VOMP.

Chris

#5
Hi, I have just had a quick look at the Makefile system for VDR plugins to see how the extra ../ could be missing. In the vompserver makefile it defines VDRDIR as .. / .. / ..   and then the include dir as $VDRDIR/include. This is correct. But inbetween those lines it includes $VDRDIR/Make.conifg which might be overriding the VDRDIR variable to .. / ..     

All the plugin make system is provided by VDR, so I could be talking rubbish here of course! :)


P.S. I had to put spaces in the dots and slashes above, otherwise the reply wouldn't post! Anyone versed enough in HTTP to know why that might be?!  :-\

koepcke


Chris

In your main VDR directory, see if there is a Make.config file that redefines VDRDIR. to fix the vompserver compiling just comment it out, but perhaps then put it back as I don't know what else that would break. I don't know why it would be set like that in the first place.

koepcke

I´m sorry Chris, but LinVDR has no Makfile.conf.
I copied vompserver to usr/src/vdr/PLUGINS/src/vompserver
The VDR Files are in usr/src/vdr
And the kernelsources are found in usr/src/DVB
Is that the same structure you are working with?

Chris

No, that's not the structure I'm working with at all.

Ok, so as we don't know why it's doing that, can you just try hacking the vompserver makefile like this:

On line 24 it defines VDRDIR as .. / .. / ..
Then on line 43 it uses VDRDIR to construct the includes variable.

Make a copy of line 24 and put it just before line 43. Then there can be no way it could get the INCLUDES variable wrong! Let me know how it goes.

koepcke

Hi Chris,
the result of 'make' and 'make all'  is:
server:/usr/src/vdr/PLUGINS/src/vompserver# make
make -C ./libdvbmpeg libdvbmpegtools.a
make[1]: Entering directory `/usr/src/vdr/PLUGINS/src/vompserver/libdvbmpeg'
g++  -M ctools.c remux.c ringbuffy.c transform.c cpptools.cc   -I.> .depend
make[1]: Leaving directory `/usr/src/vdr/PLUGINS/src/vompserver/libdvbmpeg'
make[1]: Entering directory `/usr/src/vdr/PLUGINS/src/vompserver/libdvbmpeg'
cc -c -g -Wall -O2 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I.  ctools.c
cc -c -g -Wall -O2 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I.  ringbuffy.c
cc -c -g -Wall -O2 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I.  remux.c
cc -c -g -Wall -O2 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I.  transform.c
g++ -c -g -Wall -O2 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -I.  cpptools.cc
ar -rcs libdvbmpegtools.a ctools.o ringbuffy.o remux.o transform.o cpptools.o
make[1]: Leaving directory `/usr/src/vdr/PLUGINS/src/vompserver/libdvbmpeg'
server:/usr/src/vdr/PLUGINS/src/vompserver# make all
g++ -O2 -Wall -Woverloaded-virtual -Werror -c -DPLUGIN_NAME_I18N='"vompserver"' -I../../../include -I../../../../DVB/include -Iremux -Ilibdvbmpeg -o vompserver.o vompserver.c
vompserver.c:29: vdr/plugin.h: No such file or directory
In file included from mvpserver.h:31,
                 from vompserver.c:31:
mvpclient.h:31: vdr/recording.h: No such file or directory
mvpclient.h:32: vdr/channels.h: No such file or directory
mvpclient.h:33: vdr/videodir.h: No such file or directory
mvpclient.h:34: vdr/plugin.h: No such file or directory
In file included from mvpclient.h:38,
                 from mvpserver.h:31,
                 from vompserver.c:31:
mvpreceiver.h:24: vdr/channels.h: No such file or directory
mvpreceiver.h:25: vdr/device.h: No such file or directory
mvpreceiver.h:26: vdr/receiver.h: No such file or directory
mvpreceiver.h:27: vdr/ringbuffer.h: No such file or directory
In file included from mvpreceiver.h:29,
                 from mvpclient.h:38,
                 from mvpserver.h:31,
                 from vompserver.c:31:
remux/tsremux.h:5: vdr/remux.h: No such file or directory
In file included from mvpclient.h:39,
                 from mvpserver.h:31,
                 from vompserver.c:31:
recplayer.h:25: vdr/recording.h: No such file or directory
make: *** [vompserver.o] Error 1
server:/usr/src/vdr/PLUGINS/src/vompserver#


Chris

Hi, have you tried "make plugins" in the main VDR sources directory? That's how I always compile it.

koepcke

#12
Yes I did:
server:~# cd /usr/src/vdr
server:/usr/src/vdr# make plugins
g++: channels.c: No such file or directory
ci.c:12: warning: No include path in which to find linux/dvb/ca.h
In file included from cutter.c:12:
remux.h:14: warning: No include path in which to find linux/dvb/dmx.h
In file included from transfer.h:15,
                 from device.c:20:
remux.h:14: warning: No include path in which to find linux/dvb/dmx.h
In file included from dvbdevice.c:10:
dvbdevice.h:13: warning: No include path in which to find linux/dvb/frontend.h
dvbdevice.h:14: warning: No include path in which to find linux/dvb/version.h
In file included from dvbdevice.c:10:
dvbdevice.h:19: #error VDR requires Linux DVB driver API version 3!
dvbdevice.c:21: warning: No include path in which to find linux/dvb/audio.h
dvbdevice.c:22: warning: No include path in which to find linux/dvb/dmx.h
dvbdevice.c:23: warning: No include path in which to find linux/dvb/frontend.h
dvbdevice.c:24: warning: No include path in which to find linux/dvb/video.h
In file included from transfer.h:15,
                 from dvbdevice.c:34:
remux.h:14: warning: No include path in which to find linux/dvb/dmx.h
dvbosd.c:11: warning: No include path in which to find linux/dvb/osd.h
In file included from dvbosd.c:15:
dvbdevice.h:13: warning: No include path in which to find linux/dvb/frontend.h
dvbdevice.h:14: warning: No include path in which to find linux/dvb/version.h
In file included from dvbosd.c:15:
dvbdevice.h:19: #error VDR requires Linux DVB driver API version 3!
In file included from dvbplayer.c:13:
remux.h:14: warning: No include path in which to find linux/dvb/dmx.h
In file included from eitscan.c:13:
dvbdevice.h:13: warning: No include path in which to find linux/dvb/frontend.h
dvbdevice.h:14: warning: No include path in which to find linux/dvb/version.h
In file included from eitscan.c:13:
dvbdevice.h:19: #error VDR requires Linux DVB driver API version 3!
In file included from transfer.h:15,
                 from eitscan.c:15:
remux.h:14: warning: No include path in which to find linux/dvb/dmx.h
In file included from recorder.h:15,
                 from menu.h:19,
                 from menu.c:10:
remux.h:14: warning: No include path in which to find linux/dvb/dmx.h
nit.c:11: warning: No include path in which to find linux/dvb/frontend.h
In file included from recorder.h:15,
                 from recorder.c:13:
remux.h:14: warning: No include path in which to find linux/dvb/dmx.h
In file included from recording.c:21:
remux.h:14: warning: No include path in which to find linux/dvb/dmx.h
In file included from remux.c:17:
remux.h:14: warning: No include path in which to find linux/dvb/dmx.h
In file included from recorder.h:15,
                 from menu.h:19,
                 from skinsttng.c:17:
remux.h:14: warning: No include path in which to find linux/dvb/dmx.h
In file included from recorder.h:15,
                 from menu.h:19,
                 from svdrp.c:35:
remux.h:14: warning: No include path in which to find linux/dvb/dmx.h
In file included from transfer.h:15,
                 from transfer.c:10:
remux.h:14: warning: No include path in which to find linux/dvb/dmx.h
In file included from vdr.c:40:
dvbdevice.h:13: warning: No include path in which to find linux/dvb/frontend.h
dvbdevice.h:14: warning: No include path in which to find linux/dvb/version.h
In file included from vdr.c:40:
dvbdevice.h:19: #error VDR requires Linux DVB driver API version 3!
In file included from recorder.h:15,
                 from menu.h:19,
                 from vdr.c:47:
remux.h:14: warning: No include path in which to find linux/dvb/dmx.h
make: *** [.dependencies] Error 1
make: *** Deleting file `.dependencies'
server:/usr/src/

Is nobody using LinVDR7 (1.3.34)?

koepcke

Hi Chris,
I read in the vdr-portal that I have to add 'DEFINES += -D_GNU_SOURCE' to the makefile.
After that the compilitaion went fine, but when the plugin is loaded I get this error message:

Oct 11 09:25:15 server user.err vdr[1353]: ERROR: /usr/lib/vdr/plugins/libvdr-vompserver.so.1.3.34: undefined symbol: GetDevice__7cDevicePC8cChanneliPb


Chris

Hi, I have only tested up to VDR 1.3.28, so I was expecting that missing symbol to be a change in the way VDR works between 1.3.28 and 1.3.34. So I downloaded 1.3.34 and compiled it, and I also compiled a fresh vompserver with the -D_GNU_SOURCE switch, and it all works fine... So I have no idea what is wrong...

I think you're having the most bad luck trying to compile vompserver. Can you compile other plugins? I have not changed much in the plugin build system, and the plugin code itself is all fairly standard stuff (I think!). I think I would have to try the LinVDR distribution myself now to be of any more help. Unfortunately I can't do this in the near future as I am going away on work duty for a week.