Alex
Teammitglied
- Registriert
- 10. Januar 2012
- Beiträge
- 21.392
- Lösungen
- 9
- Reaktionspunkte
- 30.291
- Punkte
- 1.113
- Ort
- Paradise City
Da ich Kodi gerne selbst auf Basis von Raspbian Wheezy kompiliere, habe ich folgendes Script geschrieben um mir die Aufgabe zu erleichtern.
Das Script wurde nur mit Wheezy getestet, da mir Jessie im Moment noch nicht so gefällt.
Außerdem sollte es theretisch auch mit dem Pi 1 funktionieren, wurde aber aufgrund der langen Kompilierzeit auf dem Pi1 nicht getestet.
Das Script ist für den User Pi gedacht und sollte im Homepfad ausgeführt werden. Also /home/pi
Das Menü sollte eigentlich selbsterklärend sein. Einfach mit den Pfeiltasten Navigieren, gewünschten Punkt mit der Leertaste markieren und Enter drücken.
Für die Dauer des Kompilierens sollte der Grafikspeicher auf via 16 MB reduziert werden. Danach natürlich wieder auf 256 MB setzen.
Das Script wurde nur mit Wheezy getestet, da mir Jessie im Moment noch nicht so gefällt.
Außerdem sollte es theretisch auch mit dem Pi 1 funktionieren, wurde aber aufgrund der langen Kompilierzeit auf dem Pi1 nicht getestet.
Das Script ist für den User Pi gedacht und sollte im Homepfad ausgeführt werden. Also /home/pi
Code:
#!/bin/bash
#
# Script zum Kompilieren und Installieren von Kodi 15.2 auf einem Raspberry PI 1 oder 2
# Version 0.06
#
# Changelog:
# 0.01 Script zum Kompilieren von Kodi 15.2 Isengard erstellt.
# 0.02 Update Funktion für das System hinzugefügt
# 0.03 Die Möglichkeit, Jarvis zu kompilieren, hinzugefügt.
# 0.04 Wenn Pakete bereits installiert, erfolgt keine Paketprüfung mehr
# 0.05 Benutzerprüfung
# 0.06 Kompatiblität zu Debian Jessie
# 0.07 Menü angepasst und Kodi Krypton aufgenommen
function firstroutine {
echo ""
echo "==============================================================================="
echo "Nach Updates suchen"
echo "==============================================================================="
echo ""
sudo apt-get update
echo ""
echo "==============================================================================="
echo "Updates werden installiert"
echo "==============================================================================="
echo ""
sudo apt-get dist-upgrade -y
echo ""
echo "==============================================================================="
echo "Firmware wird aktualisiert"
echo "==============================================================================="
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 secondroutine {
kodigit="-b Isengard git://github.com/xbmc/xbmc.git"
xbmcdir="/home/pi/xbmc"
#Kodi herunterladen:
if [ ! -d $xbmcdir ]; then
echo "GIT wird heruntergeladen"
git clone $kodigit $xbmcdir
fi
kodibauen
}
function thirdroutine {
kodigit="-b Jarvis 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
packages
kodibauen
}
function fourthroutine {
kodigit="-b master git://github.com/xbmc/xbmc.git"
xbmcdir="/home/pi/krypton"
#Kodi herunterladen:
if [ ! -d $xbmcdir ]; then
echo "GIT wird heruntergeladen"
git clone $kodigit $xbmcdir
else
cd $xbmcdir
echo "GIT wird aktualisiert"
git pull
fi
packages
kodibauen
}
function packages () {
if [ ! -f "/tmp/.packeteinstalliert2" ]; then
cd /tmp/
if dpkg -l | grep -q libdcadec0; then
echo "libdcadec0 installiert"
else
wget https://www.deb-multimedia.org/pool/main/d/dcadec-dmo/libdcadec0_0.2.0-dmo1_armhf.deb >/dev/null
fi
if dpkg -l | grep -q libdcadec-dev; then
echo "libdcadec-dev installiert"
else
wget https://www.deb-multimedia.org/pool/main/d/dcadec-dmo/libdcadec-dev_0.2.0-dmo1_armhf.deb >/dev/null
fi
if dpkg -l | grep -q libcrossguid; then
echo "libcrossguid installiert"
else
wget https://www.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 https://www.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
touch /tmp/.packeteinstalliert2
fi
}
function kodibauen () {
#Pakete installieren:
if [ ! -f "/tmp/.packeteinstalliert" ]; then
echo ""
echo "==============================================================================="
echo "Pakete werden installiert"
echo "==============================================================================="
echo ""
if [ -n "$LINUXVERSION" ]&&[ $(echo $LINUXVERSION|cut -c1) == 7 ]; then
#gcc und g++ auf 4.8 setzen:
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 && touch /tmp/.packeteinstalliert
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++
else
#gcc und g++ auf 4.9 setzen:
sudo apt-get update && sudo apt-get install libboost1.50-all-dev swig curl 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 liblzo2-dev cmake zip unzip libsqlite3-dev libpng12-dev libpcre3-dev libjasper-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 dh-autoreconf libgnutls28-dev swig libpython-dev libmysqlclient-dev -y && touch /tmp/.packeteinstalliert
sudo apt-get install libtiff5-dev -y
sudo rm /usr/bin/gcc
sudo rm /usr/bin/g++
sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.9 /usr/bin/g++
sudo ln -s /usr/bin/gcc-4.9 /usr/bin/c++
fi
fi
#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:
if [ ! -f "/usr/local/include/taglib/tag.h" ]; then
echo ""
echo "==============================================================================="
echo "Taglib wird gebaut"
echo "==============================================================================="
echo ""
cd $xbmcdir
cd lib/taglib
make -j3
sudo make install
cd
fi
#libcec:
if [ ! -d "/home/pi/libcec30/" ]; then
echo ""
echo "==============================================================================="
echo "libcec 3.0 wird gebaut"
echo "==============================================================================="
echo ""
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 -j3
sudo make install
fi
#Bootstrap:
cd $xbmcdir
echo ""
echo "==============================================================================="
echo "Kodi wird entpackt"
echo "==============================================================================="
echo ""
./bootstrap
#Kodi Konfigurieren
if [ ! -f "/tmp/.konfiguriert" ]; then
echo ""
echo "==============================================================================="
echo "Konfiguration wird für Raspberry Pi angepasst"
echo "==============================================================================="
echo ""
./configure --prefix=/usr --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 && touch /tmp/.konfiguriert
fi
#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 "==============================================================================="
echo "Kodi wird kompiliert"
echo "==============================================================================="
echo ""
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"
make -j3
else
echo ""
echo "==============================================================================="
echo "Kodi wird kompiliert"
echo "==============================================================================="
echo ""
export TARGET_SUBARCH="armv6zk"
export TARGET_CPU="arm1176jzf-s"
export TARGET_FLOAT="hard"
export TARGET_FPU="vfp"
export TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
export TARGET_EXTRA_FLAGS="-Wno-psabi -Wa,-mno-warn-deprecated"
export TARGET_COPT="-Wall -pipe -fomit-frame-pointer -O3 -fexcess-precision=fast -ffast-math -fgnu89-inline"
export TARGET_LOPT="-s -Wl,--as-needed"
export CFLAGS="-march=$TARGET_SUBARCH -mcpu=$TARGET_CPU $TARGET_FPU_FLAGS -mabi=aapcs-linux $TARGET_COPT $TARGET_EXTRA_FLAGS"
export CXXFLAGS="$CFLAGS"
export LDFLAGS="-march=$TARGET_SUBARCH -mtune=$TARGET_CPU $TARGET_LOPT"
make
fi
#Kodi installieren:
echo ""
echo "==============================================================================="
echo "Kodi wird Installiert"
echo "==============================================================================="
echo ""
sudo make install
#Heruntergeladene Pakete löschen
sudo apt-get clean && sudo apt-get autoclean && sudo apt-get autoremove -y
}
#Prüfen, ob als User PI angemeldet
userlang=`who i am`
USER=$(echo $userlang|cut -c 1-2)
if ! [ $(echo $USER == "pi") ]; then
echo "Der angemeldete User ist nicht -->pi<-- Script wird beendet"
exit
fi
whiptail --title "Welche Kodi Version soll installiert werden" --checklist --separate-output "Was soll ich tun?" 10 50 4 \
"Update" "des Systems inkl. Kernel" OFF \
"Kodi-15.2" "Isengard installieren" OFF \
"Kodi-16.1" "Jarvis installieren" OFF \
"Kodi-17.0" "Krypton BETA installieren" OFF 2>results
#Raspbian Version ermitteln:
if [ -z "$LINUXVERSION" ]; then
[ -f /etc/debian_version ] && LINUXVERSION=$(cat /etc/debian_version)
fi
#Prüfen ob Raspberry Pi oder 2:
[[ "$(uname -m)" = "arm"* ]] && ARM=$(uname -m)
while read choice
do
case $choice in
Update) firstroutine
;;
Kodi-15.2) secondroutine
;;
Kodi-16.1) thirdroutine
;;
Kodi-17.0) fourthroutine
;;
*)
;;
esac
done < results
Das Menü sollte eigentlich selbsterklärend sein. Einfach mit den Pfeiltasten Navigieren, gewünschten Punkt mit der Leertaste markieren und Enter drücken.
Du musst angemeldet sein, um Bilder zu sehen.
- Bei Punkt 1 werden alle installierten Pakete auf die aktuellste Versoin gebracht und im Anschluss der neueste Kernel installiert
- Bei Punkt 2 wird der Quellcode für Kodi 15.2 aus dem git geladen, alle benötigten Pakete werden installiert, dann wird Kodi konfiguriert, kompiliert und schließlich installiert.
- Bei Punkt 3 wird der Quellcode für Kodi Jarvis aus den git geladen, alle benötigten Pakete werden installiert, dann wird Kodi konfiguriert, kompiliert und schließlich installiert.
Für die Dauer des Kompilierens sollte der Grafikspeicher auf via 16 MB reduziert werden. Danach natürlich wieder auf 256 MB setzen.
Zuletzt bearbeitet: