Da ich mit keinem der fertigen Images zufrieden war, und mein Pi 2 eben nicht "nur" Kdi können soll, hab' ich mir ein Script geschrieben, dass alle Aufgaben übernimmt, die getan werden müssen, um Kodi zu kompilieren.
Als Grundlage verwend ich Raspbian Wheezy mit den aktuellstem Kernel und auch Paketen.
Mit dem Script kann man entweder das System updaten, Kodi 15.2 oder Kodi 16 aus dem Git kompilieren.
Es muss vorher nur ein einziger Schritt in ausgeführt werden:
In raspi-config den Memorysplit auf 16 einstellen.
#!/bin/bash
#
# Script zum Kompilieren und Installieren von Kodi 15.2 auf einem Raspberry PI 1 oder 2
# Version 0.03
#
# Changelog:
# 0.02 Update Funktion hinzugefügt
# 0.03 Die Möglichkeit, Jarvis zu kompilieren, hinzugefügt.
function updaten () {
echo "==============================================================================="
echo "Nach Updates suchen"
echo "==============================================================================="
sudo apt-get update
echo "==============================================================================="
echo "Updates werden installiert"
echo "==============================================================================="
sudo apt-get dist-upgrade -y
echo "==============================================================================="
echo "Firmware wird aktualisiert"
echo "==============================================================================="
sudo rpi-update
echo "-------------------------------------------------------------------------------"
echo "Das System benötigt einen Neustart"
echo "Soll jetzt neu gestartet werden?"
echo -en "\033[1;33m[J]a | []Nein \033[0m"
read key
case $key in
[JjYy]|[jJ][aA]|[yY][eE][sS])
echo " "
sudo reboot
;;
*)
sleep 0.5
;;
esac
echo " "
echo "-------------------------------------------------------------------------------"
echo " "
exit
}
function kodibauen () {
#Pakete installieren:
echo "==============================================================================="
echo "Pakete werden installiert"
echo "==============================================================================="
sudo apt-get update && sudo apt-get install libboost1.50-all-dev 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 -y
#gcc und g++ auf 4.8 setzen:
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++
#liberrors fixen:
if ! [ -f "/tmp/.copiesdone" ]; then
sudo cp /opt/vc/lib/libmmal.so /usr/lib/arm-linux-gnueabihf/libmmal.so
sudo cp /opt/vc/lib/libmmal_core.so /usr/lib/arm-linux-gnueabihf/libmmal_core.so
sudo cp /opt/vc/lib/libmmal_util.so /usr/lib/arm-linux-gnueabihf/libmmal_util.so
sudo cp /opt/vc/lib/libmmal_vc_client.so /usr/lib/arm-linux-gnueabihf/libmmal_vc_client.so
sudo cp -R /opt/vc/include/* /usr/include
sudo cp /opt/vc/include/interface/vcos/pthreads/* /usr/include/interface/vcos
sudo ln -fs /opt/vc/lib/libEGL.so /usr/lib/libEGL.so
sudo ln -fs /opt/vc/lib/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so
sudo ln -fs /opt/vc/lib/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so.1
sudo ln -fs /opt/vc/lib/libEGL_static.a /usr/lib/libEGL_static.a
sudo ln -fs /opt/vc/lib/libEGL_static.a /usr/lib/arm-linux-gnueabihf/libEGL_static.a
sudo ln -fs /opt/vc/lib/libGLESv2.so /usr/lib/libGLESv2.so
sudo ln -fs /opt/vc/lib/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so
sudo ln -fs /opt/vc/lib/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2
sudo ln -fs /opt/vc/lib/libGLESv2_static.a /usr/lib/libGLESv2_static.a
sudo ln -fs /opt/vc/lib/libGLESv2_static.a /usr/lib/arm-linux-gnueabihf/libGLESv2_static.a
sudo ln -fs /opt/vc/lib/libbcm_host.so /usr/lib/libbcm_host.so
sudo ln -fs /opt/vc/lib/libbcm_host.so /usr/lib/arm-linux-gnueabihf/libbcm_host.so
sudo ln -fs /opt/vc/lib/libvchiq_arm.a /usr/lib/libvchiq_arm.a
sudo ln -fs /opt/vc/lib/libvchiq_arm.a /usr/lib/arm-linux-gnueabihf/libvchiq_arm.a
sudo ln -fs /opt/vc/lib/libvchiq_arm.so /usr/lib/libvchiq_arm.so
sudo ln -fs /opt/vc/lib/libvchiq_arm.so /usr/lib/arm-linux-gnueabihf/libvchiq_arm.so
sudo ln -fs /opt/vc/lib/libvcos.a /usr/lib/libvcos.a
sudo ln -fs /opt/vc/lib/libvcos.a /usr/lib/arm-linux-gnueabihf/libvcos.a
sudo ln -fs /opt/vc/lib/libvcos.so /usr/lib/libvcos.so
sudo ln -fs /opt/vc/lib/libvcos.so /usr/lib/arm-linux-gnueabihf/libvcos.so
touch /tmp/.copiesdone
fi
#Taglib bauen:
echo "==============================================================================="
echo "Taglib wird gebaut"
echo "==============================================================================="
cd $xbmcdir
cd lib/taglib
make -j4
sudo make install
cd
#libcec:
if [ ! -d "/home/pi/libcec30/" ]; then
git clone --recursive git://github.com/Pulse-Eight/libcec.git /home/pi/libcec30/
##build libplatform
cd libcec30/src/platform
mkdir build
cd build
cmake ..
make
sudo make install
cd
##build libcec
cd libcec30
mkdir build
cd build
cmake -DRPI_INCLUDE_DIR=/opt/vc/include -DRPI_LIB_DIR=/opt/vc/lib -DCMAKE_INSTALL_PREFIX=/usr ..
make -j4
sudo make install
fi
#Flags setzen
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 /usr/lib/arm-linux-gnueabihf"
FFMPEG_OPTS="--cpu=cortex-a7 -L/usr/lib/arm-linux-gnueabihf"
#Bootstrap:
cd $xbmcdir
echo "==============================================================================="
echo "Kodi wird entpackt"
echo "==============================================================================="
./bootstrap
#Kodi Konfigurieren
echo "==============================================================================="
echo "Konfiguration wird für Raspberry Pi angepasst"
echo "==============================================================================="
./configure --disable-gl --enable-gles --with-platform=raspberry-pi --disable-x11 --disable-vaapi --disable-vdpau --disable-avahi --enable-libcec --disable-pulse --disable-projectm --disable-optical-drive --disable-dvdcss --disable-vtbdecoder --enable-alsa --enable-player=omxplayer
#Raspberry Pi Compile-Error fixen:
sudo sed -i 's/#include "vchost_config.h"/#include "linux\/vchost_config.h"/' /usr/include/interface/vmcs_host/vcgencmd.h
#Kodi kompilieren:
if [ "$ARM" = "armv7l" ]; then
echo "==============================================================================="
echo "Kodi wird kompiliert"
echo "==============================================================================="
make -j4
else
echo "==============================================================================="
echo "Kodi wird kompiliert"
echo "==============================================================================="
make
fi
#Kodi installieren:
echo "==============================================================================="
echo "Kodi wird Installiert"
echo "==============================================================================="
sudo make install
#Heruntergeladene Pakete löschen
sudo apt-get clean && sudo apt-get autoclean && sudo apt-get autoremove -y
}
VERSION=$(whiptail --title="Welche Kodi Version soll installiert werden?" --radiolist \
"Was soll ich tun?" 10 60 3 \
"Update" "des System inkl. Kernel" ON \
"Kodi-15.2" "Isengard installieren" OFF \
"Kodi-16" "Jarvis installieren" OFF 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus = 1 ]; then
clear
echo "Script wurde abgebrochen"
exit
fi
clear
#Variablen setzen:
xbmcdir="/home/pi/xbmc"
if [ "$VERSION" = "Kodi-15.2" ]; then
kodigit="-b Isengard git://github.com/xbmc/xbmc.git"
#Kodi herunterladen:
git clone $kodigit $xbmcdir
kodibauen
fi
if [ "$VERSION" = "Kodi-16" ]; then
kodigit="git://github.com/xbmc/xbmc.git"
xbmcdir="/home/pi/jarvis"
#Kodi herunterladen:
if [ ! -d $xbmcdir ]; then
echo "GIT wird heruntergeladen"
git clone $kodigit $xbmcdir
else
cd $xbmcdir
echo "GIT wird aktualisiert"
git pull
fi
if dpkg -l | grep -q libdcadec0; then
echo "libdcadec0 installiert"
else
wget http://deb-multimedia.org/pool/main/d/dcadec-dmo/libdcadec0_0.0+git2a9186e34c-dmo1_armhf.deb >/dev/null
fi
if dpkg -l | grep -q libdcadec-dev; then
echo "libdcadec-dev installiert"
else
wget http://deb-multimedia.org/pool/main/d/dcadec-dmo/libdcadec-dev_0.0+git2a9186e34c-dmo1_armhf.deb >/dev/null
fi
if dpkg -l | grep -q libcrossguid; then
echo "libcrossguid installiert"
else
wget http://deb-multimedia.org/pool/main/c/crossguid-dmo/libcrossguid0_0.0+git200150803-dmo1_armhf.deb >/dev/null
fi
if dpkg -l | grep -q libcrossguid-dev; then
echo "libcrossguid-dev installiert"
else
wget http://deb-multimedia.org/pool/main/c/crossguid-dmo/libcrossguid-dev_0.0+git200150803-dmo1_armhf.deb&& >/dev/null && sudo dpkg -i *.deb && sudo rm *.deb
fi
sudo apt-get install uuid-dev >/dev/null
kodibauen
fi
if [ "$VERSION" = "Update" ]; then
updaten
fi
#Prüfen ob Raspberry Pi oder 2:
[[ "$(uname -m)" = "arm"* ]] && ARM=$(uname -m)
Alles anzeigen
Das Script wurde von mir auf Raspberry Pi 2 getestet sollte aber auch auf dem Pi 1 funktionieren.
Ich weiß, dass das Script nicht unbedingt immer elegant ist, aber so what. Works for me
P.S.: Nach dem Kompilieren nicht vergessen, den Memorysplit wieder auf 128 oder 256 zu stellen.