Phriction This Is A Wiki Documentation Kodi Standalone Kodi Compile Kodi for ARM History Version 6 vs 10
Version 6 vs 10
Version 6 vs 10
Edits
Edits
- Edit by keithzg, Version 10
- Sep 23 2019 8:27 PM
- Edit by keithzg, Version 6
- Sep 17 2019 10:32 PM
- ·Mention swap
Edit Older Version 6... | Edit Current Version 10... |
Content Changes
Content Changes
So you don't want to use LibreELEC, and are annoyed with the Kodi team for not bothering to publish ARM binaries in their PPA, probably because they really want to make LibreELEC happen? Well here we go.
Official Instructions:
* https://github.com/xbmc/xbmc/blob/master/docs/README.Ubuntu.md
* https://github.com/xbmc/xbmc/blob/master/docs/README.Linux.md
== Get the dependencies ==
```
lang=bash
sudo apt install debhelper autoconf automake autopoint gettext autotools-dev cmake curl default-jre doxygen gawk gcc gdc gperf libasound2-dev libass-dev libavahi-client-dev libavahi-common-dev libbluetooth-dev libbluray-dev libbz2-dev libcdio-dev libp8-platform-dev libcrossguid-dev libcurl4-openssl-dev libcwiid-dev libdbus-1-dev libegl1-mesa-dev libenca-dev libflac-dev libfontconfig-dev libfreetype6-dev libfribidi-dev libfstrcmp-dev libgcrypt-dev libgif-dev libgles2-mesa-dev libgl1-mesa-dev libglu1-mesa-dev libgnutls28-dev libgpg-error-dev libiso9660-dev libjpeg-dev liblcms2-dev libltdl-dev liblzo2-dev libmicrohttpd-dev libmariadb-dev-compat libmariadb-dev libnfs-dev libogg-dev libpcre3-dev libplist-dev libpng-dev libpulse-dev libsmbclient-dev libsqlite3-dev libssl-dev libtag1-dev libtiff5-dev libtinyxml-dev libtool libudev-dev libva-dev libvdpau-dev libvorbis-dev libxmu-dev libxrandr-dev libxslt1-dev libxt-dev lsb-release python-dev python-pil rapidjson-dev swig unzip uuid-dev yasm zip zlib1g-dev libcec-dev libfmt-dev liblirc-dev libgbm-dev libinput-dev libxkbcommon-dev
```
Compared to the official instructions, this removes the following packages not available for Ubuntu 19.04 ARM64:
* `libshairplay-dev`, which is presumably for AirPlay and what kinda asshole even has an iOS device anyways?
* `flatbuffers-dev`, which can theoretically be compiled within Kodi itself (see `cmake` flag used below)
I also add the following:
* `libxkbcommon-dev`
* `libinput-dev`
* `libgbm-dev` since we're gonna be aiming for using GBM rather than X11
And I swapped:
* `libmariadb-dev-compat` and `libmariadb-dev` for `libmysqlclient-dev`
== Get the source ==
```
lang=bash
# Clone to a Kodi folder. Probably go into somewhere like ~/Code/git or something first.
git clone https://github.com/xbmc/xbmc kodi
# Check what tags are available, then switch to the latest stable
cd kodi
git tag
git checkout tags/18.4-Leia
```
== Compilin' time ==
```
lang=bash
# Presuming we're inside the checkout right now, the hot new thing all the kids are doing is out-of-source builds, and Kodi is nothing if not trendy.
mkdir ../build-kodi
cd ../build-kodi
# Now run cmake with the flags for what we want to do here
cmake ../kodi -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_INTERNAL_FLATBUFFERS=on -DCORE_PLATFORM_NAME=gbm -DENABLE_X=OFF -DENABLE_OPENGLES=ON -DENABLE_OPENGL=OFF -DGBM_RENDER_SYSTEM=gles
# If that succeeded, then lets build! The subshell used here should spit out "4" to append to the -j argument on a Pi 3, and thus use all 4 cores. We're gonna need 'em . . .
cmake --build . -- VERBOSE=1 -j$(getconf _NPROCESSORS_ONLN)
```
So you don't want to use LibreELEC, and are annoyed with the Kodi team for not bothering to publish ARM binaries in their PPA, probably because they really want to make LibreELEC happen? Well here we go.
Official Instructions:
* https://github.com/xbmc/xbmc/blob/master/docs/README.Ubuntu.md
* https://github.com/xbmc/xbmc/blob/master/docs/README.Linux.md
WIP:
* {T64}
== Get the dependencies ==
```
lang=bash
sudo apt install debhelper autoconf automake autopoint gettext autotools-dev cmake curl default-jre doxygen gawk gcc gdc gperf libasound2-dev libass-dev libavahi-client-dev libavahi-common-dev libbluetooth-dev libbluray-dev libbz2-dev libcdio-dev libp8-platform-dev libcrossguid-dev libcurl4-openssl-dev libcwiid-dev libdbus-1-dev libegl1-mesa-dev libenca-dev libflac-dev libfontconfig-dev libfreetype6-dev libfribidi-dev libfstrcmp-dev libgcrypt-dev libgif-dev libgles2-mesa-dev libgl1-mesa-dev libglu1-mesa-dev libgnutls28-dev libgpg-error-dev libiso9660-dev libjpeg-dev liblcms2-dev libltdl-dev liblzo2-dev libmicrohttpd-dev libmariadb-dev-compat libmariadb-dev libnfs-dev libogg-dev libpcre3-dev libplist-dev libpng-dev libpulse-dev libsmbclient-dev libsqlite3-dev libssl-dev libtag1-dev libtiff5-dev libtinyxml-dev libtool libudev-dev libva-dev libvdpau-dev libvorbis-dev libxmu-dev libxrandr-dev libxslt1-dev libxt-dev lsb-release python-dev python-pil rapidjson-dev swig unzip uuid-dev yasm zip zlib1g-dev libcec-dev libfmt-dev liblirc-dev libgbm-dev libinput-dev libxkbcommon-dev libunistring-dev
```
Compared to the official instructions, this removes the following packages not available on contemporary Debian-based ARM distros:
* `libshairplay-dev`, which is presumably for AirPlay and what kinda asshole even has an iOS device anyways?
* `flatbuffers-dev`, which can theoretically be compiled within Kodi itself (see `cmake` flag used below)
I also add the following:
* `libxkbcommon-dev`
* `libinput-dev`
* `libgbm-dev` since we're gonna be aiming for using GBM rather than X11
* `libunistring-dev` since the compile failed with a library error with it
And I swapped:
* `libmariadb-dev-compat` and `libmariadb-dev` for `libmysqlclient-dev`
== Get the source ==
```
lang=bash
# Clone to a Kodi folder. Probably go into somewhere like ~/Code/git or something first.
git clone https://github.com/xbmc/xbmc kodi
# Check what tags are available, then switch to the latest stable
cd kodi
git tag
git checkout tags/18.4-Leia
```
== Compilin' time ==
```
lang=bash
# Presuming we're inside the checkout right now, the hot new thing all the kids are doing is out-of-source builds, and Kodi is nothing if not trendy.
mkdir ../build-kodi
cd ../build-kodi
# Now run cmake with the flags for what we want to do here
cmake ../kodi -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_INTERNAL_FLATBUFFERS=on -DCORE_PLATFORM_NAME=gbm -DENABLE_X=OFF -DENABLE_OPENGLES=ON -DENABLE_OPENGL=OFF -DGBM_RENDER_SYSTEM=gles
# If that succeeded, then lets build! The subshell used here should spit out "4" to append to the -j argument on a Pi 3, and thus use all 4 cores. We're gonna need 'em . . .
cmake --build . -- VERBOSE=1 -j$(getconf _NPROCESSORS_ONLN)
```
== Install and service ==
Annoyingly, `checkinstall` doesn't seem to work right. Damn CMake. So I guess just outright install it...
```
sudo cmake install
```
Then define a service file, ex.
```
name=/etc/systemd/system/kodi-gbm-local.service
[Unit]
Description=Kodi standalone (GBM) self-compiled
After=systemd-user-sessions.service network.target network-online.target sound.target upower.service mysqld.service
Requires=graphical.target
Wants=network.target network-online.target
Conflicts=getty@tty1.service
[Service]
User=kodi
Group=kodi
PAMName=login
TTYPath=/dev/tty1
Environment=WINDOWING=gbm
ExecStart=/usr/local/bin/kodi-standalone
Restart=on-abort
StandardInput=tty
[Install]
WantedBy=graphical.target
```
Make sure you `systemctl disable` any other Kodi services you have enabled.
So you don't want to use LibreELEC, and are annoyed with the Kodi team for not bothering to publish ARM binaries in their PPA, probably because they really want to make LibreELEC happen? Well here we go.
Official Instructions:
* https://github.com/xbmc/xbmc/blob/master/docs/README.Ubuntu.md
* https://github.com/xbmc/xbmc/blob/master/docs/README.Linux.md
WIP:
* {T64}
== Get the dependencies ==
```
lang=bash
sudo apt install debhelper autoconf automake autopoint gettext autotools-dev cmake curl default-jre doxygen gawk gcc gdc gperf libasound2-dev libass-dev libavahi-client-dev libavahi-common-dev libbluetooth-dev libbluray-dev libbz2-dev libcdio-dev libp8-platform-dev libcrossguid-dev libcurl4-openssl-dev libcwiid-dev libdbus-1-dev libegl1-mesa-dev libenca-dev libflac-dev libfontconfig-dev libfreetype6-dev libfribidi-dev libfstrcmp-dev libgcrypt-dev libgif-dev libgles2-mesa-dev libgl1-mesa-dev libglu1-mesa-dev libgnutls28-dev libgpg-error-dev libiso9660-dev libjpeg-dev liblcms2-dev libltdl-dev liblzo2-dev libmicrohttpd-dev libmariadb-dev-compat libmariadb-dev libnfs-dev libogg-dev libpcre3-dev libplist-dev libpng-dev libpulse-dev libsmbclient-dev libsqlite3-dev libssl-dev libtag1-dev libtiff5-dev libtinyxml-dev libtool libudev-dev libva-dev libvdpau-dev libvorbis-dev libxmu-dev libxrandr-dev libxslt1-dev libxt-dev lsb-release python-dev python-pil rapidjson-dev swig unzip uuid-dev yasm zip zlib1g-dev libcec-dev libfmt-dev liblirc-dev libgbm-dev libinput-dev libxkbcommon-dev libunistring-dev
```
Compared to the official instructions, this removes the following packages not available for Ubuntu 19.04on contemporary Debian-based ARM64: distros:
* `libshairplay-dev`, which is presumably for AirPlay and what kinda asshole even has an iOS device anyways?
* `flatbuffers-dev`, which can theoretically be compiled within Kodi itself (see `cmake` flag used below)
I also add the following:
* `libxkbcommon-dev`
* `libinput-dev`
* `libgbm-dev` since we're gonna be aiming for using GBM rather than X11
* `libunistring-dev` since the compile failed with a library error with it
And I swapped:
* `libmariadb-dev-compat` and `libmariadb-dev` for `libmysqlclient-dev`
== Get the source ==
```
lang=bash
# Clone to a Kodi folder. Probably go into somewhere like ~/Code/git or something first.
git clone https://github.com/xbmc/xbmc kodi
# Check what tags are available, then switch to the latest stable
cd kodi
git tag
git checkout tags/18.4-Leia
```
== Compilin' time ==
```
lang=bash
# Presuming we're inside the checkout right now, the hot new thing all the kids are doing is out-of-source builds, and Kodi is nothing if not trendy.
mkdir ../build-kodi
cd ../build-kodi
# Now run cmake with the flags for what we want to do here
cmake ../kodi -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_INTERNAL_FLATBUFFERS=on -DCORE_PLATFORM_NAME=gbm -DENABLE_X=OFF -DENABLE_OPENGLES=ON -DENABLE_OPENGL=OFF -DGBM_RENDER_SYSTEM=gles
# If that succeeded, then lets build! The subshell used here should spit out "4" to append to the -j argument on a Pi 3, and thus use all 4 cores. We're gonna need 'em . . .
cmake --build . -- VERBOSE=1 -j$(getconf _NPROCESSORS_ONLN)
```
== Install and service ==
Annoyingly, `checkinstall` doesn't seem to work right. Damn CMake. So I guess just outright install it...
```
sudo cmake install
```
Then define a service file, ex.
```
name=/etc/systemd/system/kodi-gbm-local.service
[Unit]
Description=Kodi standalone (GBM) self-compiled
After=systemd-user-sessions.service network.target network-online.target sound.target upower.service mysqld.service
Requires=graphical.target
Wants=network.target network-online.target
Conflicts=getty@tty1.service
[Service]
User=kodi
Group=kodi
PAMName=login
TTYPath=/dev/tty1
Environment=WINDOWING=gbm
ExecStart=/usr/local/bin/kodi-standalone
Restart=on-abort
StandardInput=tty
[Install]
WantedBy=graphical.target
```
Make sure you `systemctl disable` any other Kodi services you have enabled.