Hi,
I need to have a possibility to build VDR plugins using headers which are different then in VDR distribution. Does somebody knows how to do it?
Thanks in advance.
"Michael Stepanov" michael@stepanoff.org wrote:
I need to have a possibility to build VDR plugins using headers which are different then in VDR distribution.
what does "VDR distribution" mean? the vdr source code? what are you trying to achieve? i guess you have to download the "desired" vdr version, copy your plugins into its PLUGINS/src directory and compile them as usual.
clemens
On Sun, Sep 7, 2008 at 9:26 PM, Clemens Kirchgatterer clemens@1541.orgwrote:
"Michael Stepanov" michael@stepanoff.org wrote:
I need to have a possibility to build VDR plugins using headers which are different then in VDR distribution.
what does "VDR distribution" mean? the vdr source code? what are you trying to achieve? i guess you have to download the "desired" vdr version, copy your plugins into its PLUGINS/src directory and compile them as usual.
Yes, I mean VDR sources. I understand how to build plugins using headers from the VDR's sources. But in my case I have patched headers only (source is not available yet - headers only).
clemens
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
"Michael Stepanov" michael@stepanoff.org wrote:
what does "VDR distribution" mean? the vdr source code? what are you trying to achieve? i guess you have to download the "desired" vdr version, copy your plugins into its PLUGINS/src directory and compile them as usual.
Yes, I mean VDR sources. I understand how to build plugins using headers from the VDR's sources. But in my case I have patched headers only (source is not available yet - headers only).
i don't see the point. if the header files are different in respect to ABI compatibillity (for example class member order, number of members or object size) then your plugins will not work anyway. if the headers are compatible, it does not matter which one you used to compile them.
anyway, vdr and plugins must be compiled with "compatible" header files. this is what the APIVERSION is for. you could try to copy your patched headers over a fresh vdr source tree and compile it including your plugins.
hope this helps ... clemens
Thanks a lot, Clemens, for your reply. This is my mistake that I didn't explain clearly what actually I need. I use LinuxMCE (http://linuxmce.com) with integrated VDR 1.6.0. I have just VDR headers and binary. So, I can easily build any plugins which have debian patch using dpkg-buildpackage. In that case the plugins work fine. But for those which don't have that there is an only one way to build them using common way - make plugins from the VDR source directory. So, I think I can make a symlink to patched headers in the $VDR_SORUCE/include/vdr and theoretically it should work.
On Mon, Sep 8, 2008 at 1:18 AM, Clemens Kirchgatterer clemens@1541.orgwrote:
"Michael Stepanov" michael@stepanoff.org wrote:
what does "VDR distribution" mean? the vdr source code? what are you trying to achieve? i guess you have to download the "desired" vdr version, copy your plugins into its PLUGINS/src directory and compile them as usual.
Yes, I mean VDR sources. I understand how to build plugins using headers from the VDR's sources. But in my case I have patched headers only (source is not available yet - headers only).
i don't see the point. if the header files are different in respect to ABI compatibillity (for example class member order, number of members or object size) then your plugins will not work anyway. if the headers are compatible, it does not matter which one you used to compile them.
anyway, vdr and plugins must be compiled with "compatible" header files. this is what the APIVERSION is for. you could try to copy your patched headers over a fresh vdr source tree and compile it including your plugins.
hope this helps ... clemens
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Hello
On Monday, 8. September 2008 Michael Stepanov wrote:
Thanks a lot, Clemens, for your reply. This is my mistake that I didn't explain clearly what actually I need. I use LinuxMCE (http://linuxmce.com) with integrated VDR 1.6.0. I have just VDR headers and binary. So, I can easily build any plugins which have debian patch using dpkg-buildpackage. In that case the plugins work fine. But for those which don't have that there is an only one way to build them using common way - make plugins from the VDR source directory. So, I think I can make a symlink to patched headers in the $VDR_SORUCE/include/vdr and theoretically it should work.
I started my contribution to the development of the LIVE plugin without installed vdr sources.
I installed the "vdr-dev" package from e-tobi debian repository and used the following script to build the binary of the plugin.
'libvdr-live.so.1.6.0' is created in the .libs subdirectory then. Of course the binary had to be copied into the right installation path afterwards. ---------------------------- #!/bin/sh
# check if this are live sources # (there is an extra live subdir in the sources) [ -d live ] || exit 0
mkdir -p .libs VDRDIR=/usr/include/vdr LIBDIR=.libs make $* ----------------------------
Kind regards Dieter Hametner
Thanks a lot, Dieter, for your solution. It seems very useful. Especially when VDR installed from the package and not from the sources. But I don't understand clearly how to run your script? What parameters should be passed there? Just keyword plugins? And where in should be run? From the building pluguns directory?
On Mon, Sep 8, 2008 at 1:57 PM, Dieter Hametner <dh+vdr@gekrumbel.dedh%2Bvdr@gekrumbel.de
wrote:
Hello
I started my contribution to the development of the LIVE plugin without installed vdr sources.
I installed the "vdr-dev" package from e-tobi debian repository and used the following script to build the binary of the plugin.
'libvdr-live.so.1.6.0' is created in the .libs subdirectory then. Of course the binary had to be copied into the right installation path afterwards.
#!/bin/sh
# check if this are live sources # (there is an extra live subdir in the sources) [ -d live ] || exit 0
mkdir -p .libs VDRDIR=/usr/include/vdr LIBDIR=.libs make $*
Kind regards Dieter Hametner
-- Dieter Hametner dh (plus) vdr (at) gekrumbel (dot) de live plugin developer http://live.vdr-developer.org
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
Hi Michael
On Monday, 8. September 2008 Michael Stepanov wrote:
Thanks a lot, Dieter, for your solution. It seems very useful. Especially when VDR installed from the package and not from the sources. But I don't understand clearly how to run your script? What parameters should be passed there? Just keyword plugins? And where in should be run? From the building pluguns directory?
I just have somewhere in my $HOME the live sources directory. I just cd into it and execute 'make-live' (the name of the previously posted script in my ~/bin). That will create the 'default' target of the live plugins Makefile which is the binary. You can execute 'make-live clean' to clean the sources from build artefacts. What you pass to the script is what you would pass to the normal make call.
That way I build only the live plugin. The sources of the live plugin are *not* in the PLUGINS/src/live subdirectory like it would be with 'normal' VDR plugin development.
A side note: the same Makefile (inside the live sources, without any modifications) is also suitable to build the LIVE plugin inside the VDRs PLUGIN directory.
Hope this helps :)
Kind regards Dieter Hametner
Tried to replace include/vdr and include/libsi by headers from the vdr-dev in the Makefile:
include-dir: -@mkdir -p include/vdr -@(cd include/vdr; for i in ../../*.h; do ln -fs $$i .; done) -@mkdir -p include/libsi -@(cd include/libsi; for i in ../../libsi/*.h; do ln -fs $$i .; done) +@mkdir -p include +@ln -s /usr/include/vdr include/vdr +@ln -s /usr/include/libsi include/libsi
But it didn't help. Plugins are built but they are still binary incompatible.
So, I see only one way to build plugins with headers - debianize them :)