CarPi: Kompilieren von Kodi

Wie bereits in meinem letzten Post zu meinem CarPi geschrieben, ist in dem Image, das ich verwende, eine veraltete Version von Kodi, genauer gesagt Version 14.1, enthalten. Bei meinen Tests mit einer USB-Soundkarte stellte sich heraus, dass diese Version noch keine USB-Soundkarten unterstützt. Also lud ich mir aus dem Forum eine neuere Version (14.2 RC1) herunter. Damit funktionierte dann auch die Soundkarte. In dem Forum war aber auch eine Seite verlinkt, die die Kompilierung von Kodi aus den Quellen beschreibt. Dies möchte ich hier noch mal wiedergeben.

Ich verwende hier einen Raspberry Pi 2 Model B.

Statt ein neues Image herunterzuladen, nutzte ich einfach meinen schon aufgesetzten CarPi.

Zuerst mussten ein paar neue Programme und Bibliotheken installiert werden.

sudo apt-get update
sudo apt-get install libboost1.50-all swig curl libgnutls-dev libxml2-dev libxslt1-dev libfreetype6-dev libfontconfig1-dev libfribidi-dev libmpeg2-4-dev libmad0-dev libjpeg8-dev libsamplerate0-dev libogg-dev libvorbis-dev libflac-dev libtiff4-dev liblzo2-dev cmake zip unzip libsqlite3-dev libpng12-dev libpcre3-dev libjasper-dev libsdl1.2-dev libsdl-image1.2-dev libass-dev libmodplug-dev libcdio-dev libtinyxml2-dev libyajl-dev libgpg-error-dev libgcrypt11-dev libmicrohttpd-dev autoconf libtool autopoint libudev-dev python-dev python-imaging libmysqlclient-dev libcurl4-gnutls-dev libbz2-dev libtinyxml-dev libssh-dev libxrandr-dev libsmbclient-dev libcap-dev gawk gperf debhelper libiso9660-dev liblockdev1-dev ccache gcc-4.8 g++-4.8

Danach werden die neuen Compiler als Standard gesetzt.

sudo rm /usr/bin/gcc
sudo rm /usr/bin/g++

sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++

Da Andrei in seinen Quellen Kodi 14 einsetzt und später noch ein paar Quelldateien angepasst werden müssen, Patches aber eben nur für die Version 14 vorliegen und ich nicht so viel Ahnung vom Kodi-Quellcode habe, begnüge ich mich mit der aktuellsten Kodi 14 Version.

git clone -b Helix git://github.com/xbmc/xbmc.git

Die Originalquelle der Anleitung bindet hier noch CEC ein, aber für meinen CarPi brauche ich kein CEC, deswegen überspringe ich das.

Als nächstes wird dann die taglib aus den Kodi-Quellen kompiliert, die neuer ist als die aus den Raspbian-Quellen.

cd xbmc/lib/taglib
make -j4
sudo make install
cd

Nun müssen die Patches von Andrei angewendet werden. Diese können aus seinem Google Drive heruntergeladen und eingespielt werden. Ich gehe hier davon aus, dass sie im Verzeichnis kodi-patches liegen.

patch xbmc/xbmc/input/linux/LinuxInputDevices.cpp < kodi-patches/xbmc-01-LinuxInputDevices_cpp.patch
patch xbmc/xbmc/input/MouseStat.cpp < kodi-patches/xbmc-02-MouseStat_cpp.patch
patch xbmc/xbmc/input/MouseStat.h < kodi-patches/xbmc-03-MouseStat_h.patch
patch xbmc/xbmc/visualizations/OpenGLSpectrum/opengl_spectrum.cpp < kodi-patches/xbmc-04-opengl_spectrum_cpp.patch
patch xbmc/xbmc/interfaces/legacy/ModuleXbmcgui.cpp < kodi-patches/xbmc-05-ModuleXbmcgui_cpp.patch
patch xbmc/xbmc/interfaces/legacy/ModuleXbmcgui.h < kodi-patches/xbmc-06-ModuleXbmcgui_h.patch
patch xbmc/xbmc/rendering/gles/RenderSystemGLES.cpp < kodi-patches/xbmc-07-RenderSystemGLES_cpp.patch

Nun wird die Kompilierung vorbereitet und dann kompiliert. Das kann ein paar Stunden dauern.

cd xbmc
./bootstrap

CFLAGS="-I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -mfloat-abi=hard -mcpu=cortex-a7 -mfpu=neon-vfpv4" CXXFLAGS="-I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -mfloat-abi=hard -mcpu=cortex-a7 -mfpu=neon-vfpv4" LDFLAGS="-L/opt/vc/lib" FFMPEG_OPTS="--cpu=cortex-a7" ./configure --disable-gl --enable-gles --with-platform=raspberry-pi --disable-x11 --disable-vaapi --disable-vdpau --disable-avahi --disable-pulse --disable-projectm --disable-optical-drive --disable-dvdcss --disable-vtbdecoder --enable-alsa --enable-player=omxplayer

make -j3

sudo make install

Der eigentliche Build-Vorgang erfolgt dann nur auf 3 Kernen (-j3), denn die Verwendung von allen 4 Kernen würde, laut der Anleitung, den Raspberry Pi überlasten.

Nach dem erfolgreichen Kompilieren und einem Neustart steht dann Kodi 14.2 auf dem CarPi zur Verfügung.