mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-28 22:57:37 +00:00
d9127ef3c8
Newer Pi4s ship with the so-called C0 processor which can run at 1.8 GHz max freq gracefully. Add 'arm_boost=1' to pi4 section of config.txt to enable. This has no effect on older chips (they continue with their 1.50 GHz max unless users overclock them).
308 lines
12 KiB
Bash
308 lines
12 KiB
Bash
# Contributor graysky <graysky AT archlinux DOT org>
|
|
# Contributor: BlackIkeEagle < ike DOT devolder AT gmail DOT com>
|
|
# Contributor Kevin Mihelich <kevin@archlinuxarm.org>
|
|
# Contributor BlackIkeEagle < ike DOT devolder AT gmail DOT com >
|
|
# Contributor Oleg Rakhmanov <oleg [at] archlinuxarm [dot] com>
|
|
# Contributor tomasgroth at yahoo.dk
|
|
# Contributor WarheadsSE <max@warheads.net>
|
|
# Contributor Adrian Fedoreanu <adrian [dot] fedoreanu [at] gmail [dot] com>
|
|
|
|
buildarch=12
|
|
|
|
pkgbase=kodi-rpi-git
|
|
pkgname=(
|
|
'kodi-rpi-git'
|
|
'kodi-rpi-git-eventclients' 'kodi-rpi-git-tools-texturepacker' 'kodi-rpi-git-dev'
|
|
)
|
|
|
|
_commitnumber=58697
|
|
_commit=fdf30c96becf6e1e1e89d3f34aa7130be4b12a19
|
|
|
|
# set this to anything to build with clang
|
|
# recommend manually setting -DUSE_LTO=OFF to -DUSE_LTO=$(nproc) in build()
|
|
_clangbuild=
|
|
|
|
pkgver="20.x.$_commitnumber.${_commit:0:10}"
|
|
pkgrel=1
|
|
arch=('armv7h' 'aarch64')
|
|
url="https://github.com/graysky2/xbmc/tree/gs-gbm_nexus"
|
|
license=('GPL2')
|
|
makedepends=(
|
|
'afpfs-ng' 'bluez-libs' 'cmake' 'curl' 'dav1d' 'doxygen' 'git' 'glew'
|
|
'gperf' 'hicolor-icon-theme' 'java-runtime' 'libaacs' 'libass'
|
|
'libbluray' 'libcdio' 'libcec-rpi' 'libgl' 'mariadb-libs' 'libmicrohttpd'
|
|
'libmodplug' 'libmpeg2' 'libnfs' 'libplist' 'libpulse'
|
|
'libxrandr' 'libxslt' 'lirc' 'lzo' 'mesa' 'nasm'
|
|
'python-pycryptodomex' 'python-pillow' 'python-pybluez'
|
|
'python-simplejson' 'shairplay' 'smbclient' 'taglib' 'tinyxml' 'swig'
|
|
'upower' 'giflib' 'rapidjson' 'ghostscript' 'meson' 'gtest' 'graphviz'
|
|
'libinput' 'libxkbcommon'
|
|
)
|
|
[[ -n "$_clangbuild" ]] && makedepends+=('clang' 'lld' 'llvm')
|
|
|
|
_codename=Nexus
|
|
_init_version=1.133
|
|
_libdvdcss_version="1.4.2-Leia-Beta-5"
|
|
_libdvdnav_version="6.0.0-Leia-Alpha-3"
|
|
_libdvdread_version="6.0.0-Leia-Alpha-3"
|
|
_ffmpeg_version="4.4-N-Alpha1"
|
|
_fmt_version="6.1.2"
|
|
_spdlog_version="1.5.0"
|
|
_crossguid_version="8f399e8bd4"
|
|
_fstrcmp_version="0.7.D001"
|
|
_flatbuffers_version="1.12.0"
|
|
_libudfread_version="1.1.0"
|
|
_name="gbm_nexus-$pkgver-$_codename"
|
|
source=(
|
|
"xbmc-$pkgver.tar.gz::https://github.com/graysky2/xbmc/archive/$_commit.tar.gz"
|
|
"libdvdcss-$_libdvdcss_version.tar.gz::https://github.com/xbmc/libdvdcss/archive/$_libdvdcss_version.tar.gz"
|
|
"libdvdnav-$_libdvdnav_version.tar.gz::https://github.com/xbmc/libdvdnav/archive/$_libdvdnav_version.tar.gz"
|
|
"libdvdread-$_libdvdread_version.tar.gz::https://github.com/xbmc/libdvdread/archive/$_libdvdread_version.tar.gz"
|
|
"ffmpeg-$_ffmpeg_version.tar.gz::https://github.com/xbmc/FFmpeg/archive/$_ffmpeg_version.tar.gz"
|
|
"http://mirrors.kodi.tv/build-deps/sources/fmt-$_fmt_version.tar.gz"
|
|
"http://mirrors.kodi.tv/build-deps/sources/crossguid-$_crossguid_version.tar.gz"
|
|
"http://mirrors.kodi.tv/build-deps/sources/fstrcmp-$_fstrcmp_version.tar.gz"
|
|
"http://mirrors.kodi.tv/build-deps/sources/flatbuffers-$_flatbuffers_version.tar.gz"
|
|
"http://mirrors.kodi.tv/build-deps/sources/spdlog-$_spdlog_version.tar.gz"
|
|
"http://mirrors.kodi.tv/build-deps/sources/libudfread-$_libudfread_version.tar.gz"
|
|
"ArchARM-kodi-init-v$_init_version.tar.gz::https://github.com/graysky2/kodi-standalone-service/archive/v$_init_version.tar.gz"
|
|
kodi.config.txt
|
|
use-mcpu-avoiding-march-and-mtune.patch
|
|
0001-mcpu-cortex-application-to-ffmpeg.patch
|
|
)
|
|
backup=(boot/kodi.config.txt etc/conf.d/kodi-standalone)
|
|
noextract=(
|
|
"libdvdcss-$_libdvdcss_version.tar.gz"
|
|
"libdvdnav-$_libdvdnav_version.tar.gz"
|
|
"libdvdread-$_libdvdread_version.tar.gz"
|
|
"ffmpeg-$_ffmpeg_version.tar.gz"
|
|
"fmt-$_fmt_version.tar.gz"
|
|
"spdlog-$_spdlog_version.tar.gz"
|
|
"crossguid-$_crossguid_version.tar.gz"
|
|
"fstrcmp-$_fstrcmp_version.tar.gz"
|
|
"flatbuffers-$_flatbuffers_version.tar.gz"
|
|
"libudfread-$_libudfread_version.tar.gz"
|
|
)
|
|
sha256sums=('9df5fb85f6ed158dded2c7d7505d3589ab1112b5dc1a4cbb2dd6bad72ea2372d'
|
|
'38816f8373e243bc5950449b4f3b18938c4e1c59348e3411e23f31db4072e40d'
|
|
'071e414e61b795f2ff9015b21a85fc009dde967f27780d23092643916538a57a'
|
|
'a30b6aa0aad0f2c505bc77948af2d5531a80b6e68112addb4c123fca24d5d3bf'
|
|
'eb396f46ef7c5ac01b67818d0f2c0516fd4ab32aa9065a9ffa71eebede67ff20'
|
|
'1cafc80701b746085dddf41bd9193e6d35089e1c6ec1940e037fcb9c98f62365'
|
|
'3d77d09a5df0de510aeeb940df4cb534787ddff3bb1828779753f5dfa1229d10'
|
|
'e4018e850f80700acee8da296e56e15b1eef711ab15157e542e7d7e1237c3476'
|
|
'62f2223fb9181d1d6338451375628975775f7522185266cd5296571ac152bc45'
|
|
'b38e0bbef7faac2b82fed550a0c19b0d4e7f6737d5321d4fd8f216b80f8aee8a'
|
|
'5ad9f95c53e8f29853c1fefa0a20a301be4045e2c7ae49d1164bc74d94155627'
|
|
'47c4895d84ded7f9fd073c80cdeaa1c6f10f9e542a4950121a0d7df26c8397dc'
|
|
'23f105f914f3372afa432251b69c7601e50c22d1a88168185105ee859005f5cd'
|
|
'16d6c79ff3a3d3653f21d77a36326a0335c8cec49a9c06dbc2de0ed143e50a9f'
|
|
'76eafede11af936bb554932b2be71ce91d4bf1c07107d847500ebbf3ff7d7245')
|
|
|
|
prepare() {
|
|
[[ -d kodi-build ]] && rm -rf kodi-build
|
|
mkdir "$srcdir/kodi-build"
|
|
|
|
cd "xbmc-$_commit"
|
|
|
|
# put patch in source tree so kodi build system can pick it up
|
|
cp ../use-mcpu-avoiding-march-and-mtune.patch \
|
|
tools/depends/target/ffmpeg/0002-use-mcpu-avoiding-march-and-mtune.patch
|
|
|
|
# patch kodi build system to apply the patch we just copied over
|
|
patch -Np1 -i ../0001-mcpu-cortex-application-to-ffmpeg.patch
|
|
}
|
|
|
|
build() {
|
|
cd "$srcdir/kodi-build"
|
|
|
|
# -march= defined in /etc/makepkg.conf will override the value for -mcpu we
|
|
# uses here so unset them and redefine below
|
|
unset CFLAGS CXXFLAGS
|
|
|
|
CFLAGS="-O2 -pipe -fstack-protector-strong -fno-plt -fexceptions \
|
|
-Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection"
|
|
CXXFLAGS="${CFLAGS}"
|
|
|
|
if [[ $CARCH = "armv7h" ]]; then
|
|
# we use -mcpu=cortex-a53 rather than cortex-a72 to maximize RPi 3B and RPi 4B/400 compatibility
|
|
# in a single package which is consistent with how LibreELEC is currently built, see:
|
|
# https://github.com/LibreELEC/LibreELEC.tv/commit/8e6605f6da56f25a00272b1cbacb93d40200153f#commitcomment-46341034
|
|
export CFLAGS+=" -mcpu=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard"
|
|
export CXXFLAGS="${CFLAGS}"
|
|
elif [[ $CARCH = "aarch64" ]]; then
|
|
# note that linux-raspberrypi4 for aarch64 will currently NOT boot on RPi3 so we can use
|
|
# a value of cortex-a72 here although the ffmpeg patch is using cortex-a53
|
|
export CFLAGS+=" -mcpu=cortex-a72+crc"
|
|
export CXXFLAGS="${CFLAGS}"
|
|
fi
|
|
|
|
if [[ -n "$_clangbuild" ]]; then
|
|
export CC=clang CXX=clang++
|
|
# depending on your build system, optionally redefine DISTCC_HOSTS
|
|
# since current toolchain does not include clang support x86_64 volunteers
|
|
#unset DISTCC_HOSTS
|
|
#export DISTCC_HOSTS="localhost/5 10.0.1.103/5:3636"
|
|
fi
|
|
|
|
_args=(
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
-DCMAKE_INSTALL_PREFIX=/usr
|
|
-DCMAKE_INSTALL_LIBDIR=/usr/lib
|
|
-DUSE_LTO=OFF
|
|
-DENABLE_LDGOLD=OFF
|
|
-DENABLE_EVENTCLIENTS=ON
|
|
-DENABLE_INTERNAL_FFMPEG=ON
|
|
-DENABLE_INTERNAL_FMT=ON
|
|
-DENABLE_INTERNAL_SPDLOG=ON
|
|
-DENABLE_INTERNAL_CROSSGUID=ON
|
|
-DENABLE_INTERNAL_FSTRCMP=ON
|
|
-DENABLE_INTERNAL_FLATBUFFERS=ON
|
|
-DENABLE_INTERNAL_UDFREAD=ON
|
|
-DENABLE_MYSQLCLIENT=ON
|
|
-DENABLE_VAAPI=OFF
|
|
-DENABLE_VDPAU=OFF
|
|
-Dlibdvdcss_URL="$srcdir/libdvdcss-$_libdvdcss_version.tar.gz"
|
|
-Dlibdvdnav_URL="$srcdir/libdvdnav-$_libdvdnav_version.tar.gz"
|
|
-Dlibdvdread_URL="$srcdir/libdvdread-$_libdvdread_version.tar.gz"
|
|
-DFFMPEG_URL="$srcdir/ffmpeg-$_ffmpeg_version.tar.gz"
|
|
-DFMT_URL="$srcdir/fmt-$_fmt_version.tar.gz"
|
|
-DSPDLOG_URL="$srcdir/spdlog-$_spdlog_version.tar.gz"
|
|
-DCROSSGUID_URL="$srcdir/crossguid-$_crossguid_version.tar.gz"
|
|
-DFSTRCMP_URL="$srcdir/fstrcmp-$_fstrcmp_version.tar.gz"
|
|
-DFLATBUFFERS_URL="$srcdir/flatbuffers-$_flatbuffers_version.tar.gz"
|
|
-DUDFREAD_URL="$srcdir/libudfread-$_libudfread_version.tar.gz"
|
|
-DVERBOSE=ON
|
|
-DAPP_RENDER_SYSTEM=gles
|
|
-DCORE_PLATFORM_NAME="x11 gbm"
|
|
)
|
|
|
|
cmake "${_args[@]}" ../"xbmc-$_commit"
|
|
make
|
|
}
|
|
|
|
package_kodi-rpi-git() {
|
|
pkgdesc="Media player and entertainment hub for Raspberry Pi 3/4/400, gbm_nexus fork"
|
|
depends=(
|
|
'bluez-libs' 'curl' 'dav1d' 'desktop-file-utils' 'hicolor-icon-theme'
|
|
'lcms2' 'libass' 'libbluray' 'libcdio' 'libcec-rpi' 'libmicrohttpd' 'libnfs'
|
|
'libplist' 'libpulse' 'libxslt' 'lirc' 'mariadb-libs' 'mesa'
|
|
'python-pillow' 'python-pycryptodomex' 'python-simplejson'
|
|
'shairplay' 'smbclient' 'sqlite' 'taglib' 'tinyxml'
|
|
'libinput' 'libxkbcommon' 'polkit' 'linux>=5.4.35'
|
|
)
|
|
[[ -n "$_clangbuild" ]] && depends+=('glu')
|
|
|
|
optdepends=(
|
|
'afpfs-ng: Apple shares support'
|
|
'bluez: Blutooth support'
|
|
'linux-raspberrypi: HW accelerated decoding'
|
|
'linux-raspberrypi4: HW accelerated decoding'
|
|
'python-pybluez: Bluetooth support'
|
|
'pulseaudio: PulseAudio support'
|
|
)
|
|
install='kodi.install'
|
|
provides=('xbmc' "kodi=${pkgver}" "kodi-common=${pkgver}")
|
|
conflicts=('xbmc' 'kodi' 'arm-mem-git' 'shairplay-git' 'kodi-rbp4-git' 'kodi-rpi' 'kodi-rpi-legacy')
|
|
replaces=('xbmc-rbp-git' 'kodi-rbp4-git')
|
|
|
|
_components=(
|
|
'kodi'
|
|
'kodi-bin'
|
|
)
|
|
|
|
cd kodi-build
|
|
for _cmp in ${_components[@]}; do
|
|
DESTDIR="$pkgdir" /usr/bin/cmake \
|
|
-DCMAKE_INSTALL_COMPONENT="$_cmp" \
|
|
-P cmake_install.cmake
|
|
done
|
|
|
|
# setup video drivers for kodi-gbm
|
|
install -Dm0644 "$srcdir/kodi.config.txt" "$pkgdir/boot/kodi.config.txt"
|
|
|
|
# rpi4 wants 512 MB of memory
|
|
sed -i 's/@@@/512/' "$pkgdir/boot/kodi.config.txt"
|
|
|
|
_initshit="$srcdir/kodi-standalone-service-$_init_version/arm"
|
|
|
|
# fix permissions necessary for accelerated video playback
|
|
install -Dm0644 "$_initshit/udev/99-kodi.rules" "$pkgdir/usr/lib/udev/rules.d/99-kodi.rules"
|
|
|
|
# environment vars
|
|
install -Dm644 "${_initshit/\/arm}"/common/kodi-standalone "$pkgdir/etc/conf.d/kodi-standalone"
|
|
|
|
# systemd manages kodi user
|
|
install -Dm644 "$_initshit"/init/sysusers.conf "$pkgdir/usr/lib/sysusers.d/kodi.conf"
|
|
install -Dm644 "$_initshit"/init/tmpfiles.conf "$pkgdir/usr/lib/tmpfiles.d/kodi.conf"
|
|
|
|
# systemd service and polkit rules
|
|
install -Dm0644 "$_initshit/init/kodi.service" "$pkgdir/usr/lib/systemd/system/kodi.service"
|
|
install -Dm0644 "$_initshit/polkit/polkit.rules" "$pkgdir/usr/share/polkit-1/rules.d/10-kodi.rules"
|
|
chmod 0750 "$pkgdir/usr/share/polkit-1/rules.d/"
|
|
|
|
# man page
|
|
install -Dm0644 "$_initshit/doc/kodi.service.1" "$pkgdir/usr/share/man/man1/kodi.service.1"
|
|
}
|
|
|
|
package_kodi-rpi-git-eventclients() {
|
|
pkgdesc="Kodi Event Clients for Raspberry Pi 3/4/400, gbm_nexus fork"
|
|
provides=("kodi-eventclients=${pkgver}")
|
|
conflicts=('kodi-eventclients' 'kodi-eventclients-rbp4-git' 'kodi-rpi-eventclients' 'kodi-rpi-legacy-eventclients')
|
|
replaces=('kodi-eventclients-rbp4-git')
|
|
optdepends=(
|
|
'kodi: local machine eventclient use'
|
|
'python: most eventclients are implemented in python'
|
|
)
|
|
|
|
_components=(
|
|
'kodi-eventclients-common'
|
|
'kodi-eventclients-ps3'
|
|
'kodi-eventclients-kodi-send'
|
|
)
|
|
|
|
cd kodi-build
|
|
for _cmp in ${_components[@]}; do
|
|
DESTDIR="$pkgdir" /usr/bin/cmake \
|
|
-DCMAKE_INSTALL_COMPONENT="$_cmp" \
|
|
-P cmake_install.cmake
|
|
done
|
|
}
|
|
|
|
package_kodi-rpi-git-tools-texturepacker() {
|
|
pkgdesc="Kodi Texturepacker Tool for Raspberry Pi 3/4/400, gbm_nexus fork"
|
|
depends=('libpng' 'giflib' 'libjpeg-turbo' 'lzo')
|
|
conflicts=('kodi-tools-texturepacker' 'kodi-tools-texturepacker-rbp4-git' 'kodi-rpi-tools-texturepacker' 'kodi-rpi-legacy-tools-texturepacker')
|
|
replaces=('kodi-tools-texturepacker-rbp4-git')
|
|
|
|
_components=(
|
|
'kodi-tools-texturepacker'
|
|
)
|
|
|
|
cd kodi-build
|
|
for _cmp in ${_components[@]}; do
|
|
DESTDIR="$pkgdir" /usr/bin/cmake \
|
|
-DCMAKE_INSTALL_COMPONENT="$_cmp" \
|
|
-P cmake_install.cmake
|
|
done
|
|
}
|
|
|
|
package_kodi-rpi-git-dev() {
|
|
pkgdesc="Kodi dev files for Raspberry Pi 3/4/400, gbm_nexus fork"
|
|
depends=('kodi')
|
|
conflicts=('kodi-dev-rbp4-git' 'kodi-rpi-dev' 'kodi-rpi-legacy-dev')
|
|
replaces=('kodi-dev-rbp4-git')
|
|
provides=("kodi-dev=${pkgver}")
|
|
|
|
_components=(
|
|
'kodi-addon-dev'
|
|
'kodi-eventclients-dev'
|
|
)
|
|
|
|
cd kodi-build
|
|
for _cmp in ${_components[@]}; do
|
|
DESTDIR="$pkgdir" /usr/bin/cmake \
|
|
-DCMAKE_INSTALL_COMPONENT="$_cmp" \
|
|
-P cmake_install.cmake
|
|
done
|
|
}
|