mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-18 22:54:00 +00:00
0926d17669
Properly set cortex-a72 optimizations for this package, see comment
in 0000-use-mcpu-avoiding-march-and-mtune.patch for more details.
Should be totally fine in doing so since this only RPi 4 can actually
make use of the HW decoding intended for v19 once it goes final and the
patchset is gets merged into ffmpeg (at some point).
In addition to that, fix a small bug in kodi.service, for details see:
909f274d6e
308 lines
12 KiB
Bash
308 lines
12 KiB
Bash
# Contributor graysky <graysky AT archlinux DOT org>
|
|
# 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=4
|
|
|
|
_prefix=/usr
|
|
|
|
pkgbase=kodi-rpi-git
|
|
pkgname=('kodi-rpi-git' 'kodi-rpi-git-eventclients' 'kodi-rpi-git-tools-texturepacker' 'kodi-rpi-git-dev')
|
|
|
|
_commitnumber=56808
|
|
_commit=0f75c910145f31dcb48219bc6174b0a15156ceaa
|
|
|
|
pkgver="19.0b2.$_commitnumber.${_commit:0:10}"
|
|
pkgrel=4
|
|
arch=('armv7h')
|
|
url="https://github.com/popcornmix/xbmc/tree/gbm"
|
|
license=('GPL2')
|
|
makedepends=(
|
|
'afpfs-ng' 'bluez-libs' 'cmake' 'curl' 'dav1d' 'doxygen' 'glew'
|
|
'gperf' 'hicolor-icon-theme' 'java-runtime' 'libaacs' 'libass'
|
|
'libbluray' 'libcdio' 'libcec-rpi' 'libgl' 'mariadb-libs' 'libmicrohttpd'
|
|
'libmodplug' 'libmpeg2' 'libnfs' 'libplist' 'libpulse' 'libva'
|
|
'libvdpau' 'libxrandr' 'libxslt' 'lirc' 'lzo' 'mesa' 'nasm'
|
|
'python-pycryptodomex' 'python-pillow' 'python-pybluez' 'python-simplejson'
|
|
'shairplay' 'smbclient' 'taglib' 'tinyxml' 'swig'
|
|
'upower' 'giflib' 'rapidjson' 'ghostscript' 'git' 'meson' 'gtest'
|
|
'libinput' 'libxkbcommon' 'linux-raspberrypi4-headers'
|
|
)
|
|
_codename=Leia
|
|
# Found on their respective github release pages. One can check them against
|
|
# what is pulled down when not specifying them in the cmake step.
|
|
# $CHROOT/build/kodi-git/src/kodi-build/build/download
|
|
#
|
|
# https://github.com/xbmc/FFmpeg/tags
|
|
# https://github.com/xbmc/libdvdcss/tags
|
|
# https://github.com/xbmc/libdvdnav/tags
|
|
# https://github.com/xbmc/libdvdread/tags
|
|
#
|
|
# fmt and crossguid can be found http://mirrors.kodi.tv/build-deps/sources/
|
|
#
|
|
_libdvdcss_version="1.4.2-$_codename-Beta-5"
|
|
_libdvdnav_version="6.0.0-$_codename-Alpha-3"
|
|
_libdvdread_version="6.0.0-$_codename-Alpha-3"
|
|
_ffmpeg_version="4.3.1-Matrix-Beta1"
|
|
_fmt_version="6.1.2"
|
|
_crossguid_version="8f399e8bd4"
|
|
_fstrcmp_version="0.7.D001"
|
|
_flatbuffers_version="1.11.0"
|
|
_spdlog_version="1.5.0"
|
|
source=(
|
|
# popcornmix gbm branch
|
|
"xbmc-$pkgver.tar.gz::https://github.com/popcornmix/xbmc/archive/$_commit.tar.gz"
|
|
kodi.service
|
|
99-kodi.rules
|
|
polkit.rules
|
|
kodi.config.txt
|
|
appliance.xml
|
|
"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"
|
|
sysusers.conf
|
|
tmpfiles.conf
|
|
0000-use-mcpu-avoiding-march-and-mtune.patch
|
|
0001-mcpu-cortex-a72-for-RPi4-application-to-ffmpeg.patch
|
|
)
|
|
backup=(boot/kodi.config.txt)
|
|
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"
|
|
"crossguid-$_crossguid_version.tar.gz"
|
|
"fstrcmp-$_fstrcmp_version.tar.gz"
|
|
"flatbuffers-$_flatbuffers_version.tar.gz"
|
|
"spdlog-$_spdlog_version.tar.gz"
|
|
)
|
|
sha256sums=('561a6d316fffa6d6559f7172d96f19e7c9159e5a14f139b86014140b306e7adb'
|
|
'c37fe409b348e13eafad2745a5044dee5ea96c3a297921411b57953a8db966b2'
|
|
'61a0648d4a5086f560ceb4e020f82472d00b99398f2cacba94fad3e96c4c362a'
|
|
'5d38a895ee7b93689fab79124a3aad23a5e3e643abd08878d778d04066c8d26f'
|
|
'2a36ee05a8e023d2ba4bbe36f66768e5a9f3982582e0266103f95e117c1d684a'
|
|
'0154744086fd34bdf8c4210875783bd6dd8c57bc327257e49955caf1b7acc957'
|
|
'38816f8373e243bc5950449b4f3b18938c4e1c59348e3411e23f31db4072e40d'
|
|
'071e414e61b795f2ff9015b21a85fc009dde967f27780d23092643916538a57a'
|
|
'a30b6aa0aad0f2c505bc77948af2d5531a80b6e68112addb4c123fca24d5d3bf'
|
|
'0b209a9b15f2335e516bf2ad1249fffc6b55425145f17c9674dc430abf6a67ad'
|
|
'1cafc80701b746085dddf41bd9193e6d35089e1c6ec1940e037fcb9c98f62365'
|
|
'3d77d09a5df0de510aeeb940df4cb534787ddff3bb1828779753f5dfa1229d10'
|
|
'e4018e850f80700acee8da296e56e15b1eef711ab15157e542e7d7e1237c3476'
|
|
'1789b97e790da8f2cb5ff827d15580878c8629fd889f5f038d7524dca43eacc9'
|
|
'b38e0bbef7faac2b82fed550a0c19b0d4e7f6737d5321d4fd8f216b80f8aee8a'
|
|
'f521b98232e5035b7cada46cf03975b8d753e93d0802bf22913fceed769f9d96'
|
|
'9c5e79ed8719cd032a3b17dac585aeff28a198e37af1da9af68ef1b86bab4d18'
|
|
'39a54a2d9c429c27ed2a369568043a1e3c86e2fe6bf931932984a0ce7aee7391'
|
|
'05a140fa6da5ba0576611e31f2ed2e5d56255c480e58be4854db154d611b29da')
|
|
prepare() {
|
|
cd "xbmc-$_commit"
|
|
|
|
[[ -d kodi-build ]] && rm -rf kodi-build
|
|
mkdir "$srcdir"/kodi-build
|
|
|
|
# put patch in source tree so kodi build system can pick it up
|
|
cp ../0000-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-a72-for-RPi4-application-to-ffmpeg.patch
|
|
}
|
|
|
|
build() {
|
|
cd kodi-build
|
|
# the build system expects to find /usr/include/drm/drm_fourcc.h however we provide this
|
|
# in /usr/lib/modules/x.y.z-1-ARCH/build/include/uapi/drm/drm_fourcc.h
|
|
#
|
|
# credit to Kevin for the following hack:
|
|
|
|
_kernel_release="$(pacman -Q linux-raspberrypi4-headers | grep -Eo "[^\ ]+$")-ARCH"
|
|
mkdir -p "$srcdir/uapi/drm"
|
|
ln -s /usr/lib/modules/${_kernel_release/.rc/-rc}/build/include/uapi/drm/drm_fourcc.h "$srcdir/uapi/drm"
|
|
export CPPFLAGS+=" -I$srcdir/uapi"
|
|
|
|
# -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 -mtune=cortex-a72"
|
|
CXXFLAGS="${CFLAGS}"
|
|
|
|
if [[ $CARCH = "armv7h" ]]; then
|
|
export CFLAGS+=" -mcpu=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard"
|
|
export CXXFLAGS="${CFLAGS}"
|
|
elif [[ $CARCH = "aarch64" ]]; then
|
|
export CFLAGS+=" -mcpu=cortex-a72+crc"
|
|
export CXXFLAGS="${CFLAGS}"
|
|
fi
|
|
|
|
_args=(
|
|
-DCMAKE_INSTALL_PREFIX=/usr
|
|
-DCMAKE_INSTALL_LIBDIR=/usr/lib
|
|
-DVERBOSE=ON
|
|
-DENABLE_EVENTCLIENTS=ON
|
|
-DENABLE_INTERNAL_FFMPEG=ON
|
|
-DENABLE_INTERNAL_FMT=ON
|
|
-DENABLE_INTERNAL_CROSSGUID=ON
|
|
-DENABLE_INTERNAL_FSTRCMP=ON
|
|
-DENABLE_INTERNAL_FLATBUFFERS=ON
|
|
-DENABLE_INTERNAL_SPDLOG=ON
|
|
-DCORE_PLATFORM_NAME=gbm
|
|
-DAPP_RENDER_SYSTEM=gles
|
|
-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"
|
|
-DCROSSGUID_URL="$srcdir/crossguid-$_crossguid_version.tar.gz"
|
|
-DFSTRCMP_URL="$srcdir/fstrcmp-$_fstrcmp_version.tar.gz"
|
|
-DFLATBUFFERS_URL="$srcdir/flatbuffers-$_flatbuffers_version.tar.gz"
|
|
-DSPDLOG_URL="$srcdir/spdlog-$_spdlog_version.tar.gz"
|
|
)
|
|
|
|
if [[ $CARCH = "armv7h" ]]; then
|
|
# this is only needed if the kernel version is <5.10.0
|
|
# can be removed once 5.10.y goes gold
|
|
_args+=(
|
|
-DCMAKE_EXE_LINKER_FLAGS_INIT="-L/opt/vc/lib -lvcsm"
|
|
-DCMAKE_EXE_LINKER_FLAGS="-L/opt/vc/lib -lvcsm"
|
|
-DCMAKE_CXX_FLAGS="-Wl,-L/opt/vc/lib -Wl,-lvcsm"
|
|
)
|
|
fi
|
|
|
|
cmake "${_args[@]}" ../"xbmc-$_commit"
|
|
make
|
|
make preinstall
|
|
}
|
|
|
|
package_kodi-rpi-git() {
|
|
pkgdesc="Media player and entertainment hub for Raspberry Pi 4, gbm fork"
|
|
depends=(
|
|
'desktop-file-utils' 'hicolor-icon-theme' 'mesa' 'python-pycryptodomex'
|
|
'python-pillow' 'python-simplejson' 'xorg-xdpyinfo'
|
|
'bluez-libs' 'curl' 'lcms2' 'libass' 'libbluray' 'libcdio' 'libcec-rpi'
|
|
'libinput' 'libmicrohttpd' 'libnfs' 'libpulse' 'libva' 'libxkbcommon'
|
|
'libxslt' 'lirc' 'mariadb-libs' 'python2' 'smbclient' 'taglib'
|
|
'tinyxml' 'polkit' 'linux>=5.4.35' 'shairplay' 'dav1d' 'libplist'
|
|
)
|
|
optdepends=(
|
|
'afpfs-ng: Apple shares support'
|
|
'bluez: Blutooth support'
|
|
'python-pybluez: Bluetooth support'
|
|
'lsb-release: log distro information in crashlog'
|
|
)
|
|
install='kodi.install'
|
|
provides=('xbmc' "kodi=${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')
|
|
|
|
export PATH="$srcdir/path:$PATH"
|
|
|
|
cd kodi-build
|
|
for _cmp in ${_components[@]}; do
|
|
DESTDIR="$pkgdir" /usr/bin/cmake \
|
|
-DCMAKE_INSTALL_COMPONENT="$_cmp" \
|
|
-P cmake_install.cmake
|
|
done
|
|
|
|
cd "$pkgdir"
|
|
|
|
# fix permissions necessary for accelerated video playback
|
|
install -Dm0644 "$srcdir/99-kodi.rules" "$pkgdir/etc/udev/rules.d/99-kodi.rules"
|
|
|
|
# systemd manages kodi user
|
|
install -Dm644 "$srcdir"/sysusers.conf "$pkgdir/usr/lib/sysusers.d/kodi.conf"
|
|
install -Dm644 "$srcdir"/tmpfiles.conf "$pkgdir/usr/lib/tmpfiles.d/kodi.conf"
|
|
|
|
# systemd service and polkit rules
|
|
install -Dm0644 "$srcdir/kodi.service" "$pkgdir/usr/lib/systemd/system/kodi.service"
|
|
install -Dm0644 "$srcdir/polkit.rules" "$pkgdir/usr/share/polkit-1/rules.d/10-kodi.rules"
|
|
chmod 0750 "$pkgdir/usr/share/polkit-1/rules.d/"
|
|
|
|
# setup video drivers for kodi-gbm on RPi4
|
|
install -Dm0644 "$srcdir/kodi.config.txt" "$pkgdir/boot/kodi.config.txt"
|
|
|
|
# enable hw accel decoding by default
|
|
# https://github.com/xbmc/xbmc/pull/18534
|
|
# https://github.com/LibreELEC/LibreELEC.tv/pull/4628/commits/60fe9069082d08bd94ec23b99e8d0721a1eaa80c
|
|
install -Dm0644 "$srcdir"/appliance.xml "$pkgdir/usr/share/kodi/system/settings/appliance.xml"
|
|
}
|
|
|
|
package_kodi-rpi-git-eventclients() {
|
|
pkgdesc="Kodi Event Clients for Raspberry Pi 4, gbm fork"
|
|
provides=("kodi-eventclients=${pkgver}")
|
|
replaces=('kodi-eventclients-rbp4-git')
|
|
conflicts=('kodi-eventclients' 'kodi-eventclients-rbp4-git' 'kodi-rpi-eventclients' 'kodi-rpi-legacy-eventclients')
|
|
optdepends=('python: most eventclients are implemented in python')
|
|
|
|
_components=(
|
|
'kodi-eventclients-common'
|
|
'kodi-eventclients-ps3'
|
|
'kodi-eventclients-kodi-send'
|
|
)
|
|
|
|
export PATH="$srcdir/path:$PATH"
|
|
|
|
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 4, gbm fork"
|
|
depends=('libpng' 'giflib' 'libjpeg-turbo' 'lzo')
|
|
replaces=('kodi-tools-texturepacker-rbp4-git')
|
|
conflicts=('kodi-tools-texturepacker' 'kodi-tools-texturepacker-rbp4-git' 'kodi-rpi-tools-texturepacker' 'kodi-rpi-legacy-tools-texturepacker')
|
|
_components=('kodi-tools-texturepacker')
|
|
|
|
export PATH="$srcdir/path:$PATH"
|
|
|
|
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 4, gbm fork"
|
|
depends=('kodi')
|
|
replaces=('kodi-dev-rbp4-git')
|
|
conflicts=('kodi-dev-rbp4-git' 'kodi-rpi-dev' 'kodi-rpi-legacy-dev')
|
|
provides=("kodi-dev=${pkgver}")
|
|
|
|
_components=('kodi-addon-dev'
|
|
'kodi-audio-dev'
|
|
'kodi-eventclients-dev'
|
|
'kodi-game-dev'
|
|
'kodi-inputstream-dev'
|
|
'kodi-peripheral-dev'
|
|
'kodi-pvr-dev'
|
|
'kodi-screensaver-dev'
|
|
'kodi-visualization-dev')
|
|
|
|
export PATH="$srcdir/path:$PATH"
|
|
|
|
cd kodi-build
|
|
for _cmp in ${_components[@]}; do
|
|
DESTDIR="$pkgdir" /usr/bin/cmake \
|
|
-DCMAKE_INSTALL_COMPONENT="$_cmp" \
|
|
-P cmake_install.cmake
|
|
done
|
|
}
|