Linux Compiling pvr.hts
#1
Hello,

I would like to compile the latest version of pvr.hts for my Kodi14.2 clients from here; https://github.com/kodi-pvr/pvr.hts

However, there is a complete lack of information on how to do this. I tried a cmake but i got missing kodiConfig.cmake & kodi-config.cmake file errors.

Can anybody point me in the right direction?
Reply
#2
Just stumbled onto this: http://forum.kodi.tv/showthread.php?tid=219166

Should help me get going Smile
Reply
#3
Did not really help me unfortunately. It seems like this is made way more complex then it needs to be and undergoing changes monthly with makes any documentation useless.
None of the paths that are used in the examples are relevant anymore.

Why can't be build this with a simple make?
Reply
#4
The examples are still relevant, the paths there are just examples. The build system is complex because the same system is used regardless of platform, whereas previously we had separate systems for Windows and others.
Reply
#5
Even I'm scratching my head here trying to get an Isengard compile of TVHeadend on to a Ubuntu ARM platform. Unless someone is hosting a bunch of zip PVR packages somewhere.

I will likely revert to just stealing the ones from an OpenElec RPi2.

Reply
#6
I haven't tested it with Kodi 14.2 since I always use the git master version, but the steps should be these and should work:

1. You need pkgconfig and cmake > 2.8
2. Have Kodi installed with all dev packages also (depending on your platform, but you need its header files)
3. Have TinyXML installed with all dev packages also (should be 2.6.2 depending again on your platform or you may download and compile/install from: https://sourceforge.net/projects/tinyxml )
4. Download and compile/install platform from: https://github.com/Pulse-Eight/platform
5. Download and compile/install kodi-platform from: https://github.com/xbmc/kodi-platform
6. Download and compile/install pvr.hts from: https://github.com/kodi-pvr/pvr.hts . It may have a glitch installing the library not in kodi addons folder, so be careful where does the pvr.hts.so.2.2.5 goes in (should be something like: /usr/lib64/kodi/addons/pvr.hts/). To be sure you may use this cmake option (for 64bit platform): -DCMAKE_INSTALL_LIBDIR=/usr/lib64/kodi
Additionally you may use this cmake option too: -DUSE_DEMUX=ON

You should now have a working HTS PVR Smile

BTW I have prepared Gentoo ebuilds, but didn't have the time to add them to https://bugs.gentoo.org , so they be included in main Gentoo portage... If someone is interested you may find them here: http://gentoo.kbfx.net/overlay/

Did this help?
Reply
#7
I can't compile that thing!
I compiled and install Kodi isengard with its own way.
Kodi-platform and the other platform straight away with cmake -DCMAKE_INSTALL_PREFIX=/usr/local, make, sudo make install.
Here's the output of make:
Quote:Scanning dependencies of target hts
[ 6%] Building C object lib/libhts/CMakeFiles/hts.dir/htsbuf.c.o
[ 12%] Building C object lib/libhts/CMakeFiles/hts.dir/htsmsg_binary.c.o
[ 18%] Building C object lib/libhts/CMakeFiles/hts.dir/htsmsg.c.o
[ 25%] Building C object lib/libhts/CMakeFiles/hts.dir/htsstr.c.o
[ 31%] Building C object lib/libhts/CMakeFiles/hts.dir/sha1.c.o
[ 37%] Building C object lib/libhts/CMakeFiles/hts.dir/net_posix.c.o
Linking C static library libhts.a
[ 37%] Built target hts
Scanning dependencies of target pvr.hts
[ 43%] Building CXX object CMakeFiles/pvr.hts.dir/src/AsyncState.cpp.o
[ 50%] Building CXX object CMakeFiles/pvr.hts.dir/src/CircBuffer.cpp.o
[ 56%] Building CXX object CMakeFiles/pvr.hts.dir/src/client.cpp.o
In file included from /home/djdoo/pvr.hts-master/src/Tvheadend.h:34:0,
from /home/djdoo/pvr.hts-master/src/client.cpp:29:
/home/djdoo/pvr.hts-master/src/HTSPTypes.h: In member function ‘bool SRecording::IsTimer() const’:
/home/djdoo/pvr.hts-master/src/HTSPTypes.h:317:21: error: ‘PVR_TIMER_STATE_DISABLED’ was not declared in this scope
state == PVR_TIMER_STATE_DISABLED;
^
In file included from /home/djdoo/pvr.hts-master/src/client.cpp:29:0:
/home/djdoo/pvr.hts-master/src/Tvheadend.h: At global scope:
/home/djdoo/pvr.hts-master/src/Tvheadend.h:410:33: error: ‘PVR_TIMER_TYPE’ has not been declared
PVR_ERROR GetTimerTypes ( PVR_TIMER_TYPE types[], int *size );
^
/home/djdoo/pvr.hts-master/src/client.cpp:525:25: error: ‘PVR_TIMER_TYPE’ was not declared in this scope
PVR_ERROR GetTimerTypes(PVR_TIMER_TYPE types[], int *size)
^
/home/djdoo/pvr.hts-master/src/client.cpp:525:49: error: expected primary-expression before ‘int’
PVR_ERROR GetTimerTypes(PVR_TIMER_TYPE types[], int *size)
^
/home/djdoo/pvr.hts-master/src/client.cpp:525:58: error: expression list treated as compound expression in initializer [-fpermissive]
PVR_ERROR GetTimerTypes(PVR_TIMER_TYPE types[], int *size)
^
/home/djdoo/pvr.hts-master/src/client.cpp:526:1: error: expected ‘,’ or ‘;’ before ‘{’ token
{
^
/home/djdoo/pvr.hts-master/src/client.cpp: In function ‘PVR_ERROR DeleteTimer(const PVR_TIMER&, bool, bool)’:
/home/djdoo/pvr.hts-master/src/client.cpp:545:87: error: declaration of C function ‘PVR_ERROR DeleteTimer(const PVR_TIMER&, bool, bool)’ conflicts with
PVR_ERROR DeleteTimer(const PVR_TIMER &timer, bool bForceDelete, bool bDeleteScheduled)
^
In file included from /home/djdoo/pvr.hts-master/src/client.cpp:23:0:
/usr/local/include/kodi/xbmc_pvr_dll.h:370:13: error: previous declaration ‘PVR_ERROR DeleteTimer(const PVR_TIMER&, bool)’ here
PVR_ERROR DeleteTimer(const PVR_TIMER& timer, bool bForceDelete);
^
CMakeFiles/pvr.hts.dir/build.make:100: recipe for target 'CMakeFiles/pvr.hts.dir/src/client.cpp.o' failed
make[2]: *** [CMakeFiles/pvr.hts.dir/src/client.cpp.o] Error 1
CMakeFiles/Makefile2:91: recipe for target 'CMakeFiles/pvr.hts.dir/all' failed
make[1]: *** [CMakeFiles/pvr.hts.dir/all] Error 2
Makefile:137: recipe for target 'all' failed
make: *** [all] Error 2

Any ideas?
Reply
#8
Ignore previous post! I got the wrong branch! Now that I got Isengard make went fine through the steps. To install correctly it needs: cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_INSTALL_LIBDIR=/usr/local/lib64/kodi
, make, sudo make install
Code:
Scanning dependencies of target hts
[  7%] Building C object lib/libhts/CMakeFiles/hts.dir/htsbuf.c.o
[ 14%] Building C object lib/libhts/CMakeFiles/hts.dir/htsmsg_binary.c.o
[ 21%] Building C object lib/libhts/CMakeFiles/hts.dir/htsmsg.c.o
[ 28%] Building C object lib/libhts/CMakeFiles/hts.dir/htsstr.c.o
[ 35%] Building C object lib/libhts/CMakeFiles/hts.dir/sha1.c.o
[ 42%] Building C object lib/libhts/CMakeFiles/hts.dir/net_posix.c.o
Linking C static library libhts.a
[ 42%] Built target hts
Scanning dependencies of target pvr.hts
[ 50%] Building CXX object CMakeFiles/pvr.hts.dir/src/AsyncState.cpp.o
[ 57%] Building CXX object CMakeFiles/pvr.hts.dir/src/CircBuffer.cpp.o
[ 64%] Building CXX object CMakeFiles/pvr.hts.dir/src/client.cpp.o
[ 71%] Building CXX object CMakeFiles/pvr.hts.dir/src/HTSPConnection.cpp.o
[ 78%] Building CXX object CMakeFiles/pvr.hts.dir/src/HTSPDemuxer.cpp.o
[ 85%] Building CXX object CMakeFiles/pvr.hts.dir/src/HTSPTypes.cpp.o
[ 92%] Building CXX object CMakeFiles/pvr.hts.dir/src/HTSPVFS.cpp.o
[100%] Building CXX object CMakeFiles/pvr.hts.dir/src/Tvheadend.cpp.o
Linking CXX shared library pvr.hts.so
[100%] Built target pvr.hts
Reply
#9
Now the Kodi Team does require the crossguid library to compile Kodi :S (This is done in this commit 6f8171f53992fc2eaabf71f6fa47ebed1da0d43d - so you may see the needed commands to compile the crossguid lib)
This is the one from here: https://github.com/graeme-hill/crossguid
And since it has no configure or make script... I decided to share with you what I did when I got
crossguid not found message while compiling Kodi...

You need to do:
Code:
g++ -std=c++11 -DGUID_LIBUUID -Wall -c guid.cpp -o guid.o
ar rvs libcrossguid.a guid.o

And then put guid.h into /usr/include
and libcrossguid.a into /usr/lib64 (if it is a 64bit platform)
then go on with step 2 from my original post (i.e. compile Kodi)
I have added a very dirty hack ebuild to: my Gentoo overlay

I wonder why don't they just put the two files in their source and do compile it by themselves... :S
Reply
#10
make -C tools/depends/target/crossguid/ PREFIX=/usr/local
Reply

Logout Mark Read Team Forum Stats Members Help
Compiling pvr.hts0