mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-28 22:57:37 +00:00
fb51dc97f0
Technically this is not 20.0 due to some the addition of some recent commits post-20.0 but since popcornmix added some additional features to gbm_nexus since then, it's more important to me to provide these than it is to honor the official commit of 20.0 in our packages.
306 lines
11 KiB
Bash
306 lines
11 KiB
Bash
# Contributor graysky <therealgraysky AT proton DOT me>
|
|
# 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>
|
|
|
|
pkgbase=kodi-rpi
|
|
pkgname=(
|
|
'kodi-rpi'
|
|
'kodi-rpi-eventclients' 'kodi-rpi-tools-texturepacker' 'kodi-rpi-dev'
|
|
)
|
|
|
|
_commitnumber=62053
|
|
_commit=dd09514b36168ba8ec6df0482110b61301a0f78a
|
|
|
|
# set this to anything to build with clang
|
|
# recommend manually setting -DUSE_LTO=OFF to -DUSE_LTO=$(nproc) in build()
|
|
_clangbuild=
|
|
|
|
pkgver=20.0
|
|
pkgrel=8
|
|
arch=('aarch64' 'armv7h')
|
|
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' 'fmt' 'libaacs' 'libass'
|
|
'libbluray' 'libcdio' 'libcec-rpi' 'libgl' 'mariadb-libs' 'libmicrohttpd'
|
|
'libmodplug' 'libmpeg2' 'libnfs' 'libplist' 'libpulse'
|
|
'libxrandr' 'libxslt' 'lirc' 'lzo' 'mesa' 'nasm'
|
|
'pipewire' 'python-pycryptodomex' 'python-pillow' 'python-pybluez'
|
|
'python-simplejson' 'shairplay' 'smbclient' 'sndio' 'spdlog' 'taglib'
|
|
'tinyxml' 'swig' 'upower' 'giflib' 'rapidjson' 'ghostscript' 'meson' 'gtest'
|
|
'graphviz' 'libinput' 'libxkbcommon'
|
|
)
|
|
[[ -n "$_clangbuild" ]] && makedepends+=('clang' 'lld' 'llvm')
|
|
|
|
_codename=Nexus
|
|
_init_version=1.136
|
|
_libdvdcss_version="1.4.3-Next-Nexus-Alpha2-2"
|
|
_libdvdnav_version="6.1.1-Next-Nexus-Alpha2-2"
|
|
_libdvdread_version="6.1.3-Next-Nexus-Alpha2-2"
|
|
_ffmpeg_version="4.4.1-Nexus-Alpha1"
|
|
_crossguid_version="ca1bf4b810e2d188d04cb6286f957008ee1b7681"
|
|
_fstrcmp_version="0.7.D001"
|
|
_flatbuffers_version="2.0.0"
|
|
_libudfread_version="1.1.2"
|
|
source=(
|
|
"xbmc-$pkgver.${_commit:0:10}.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"
|
|
"https://mirrors.kodi.tv/build-deps/sources/crossguid-$_crossguid_version.tar.gz"
|
|
"https://mirrors.kodi.tv/build-deps/sources/fstrcmp-$_fstrcmp_version.tar.gz"
|
|
"https://mirrors.kodi.tv/build-deps/sources/flatbuffers-$_flatbuffers_version.tar.gz"
|
|
"https://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
|
|
"https://github.com/xbmc/xbmc/pull/22714.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"
|
|
"crossguid-$_crossguid_version.tar.gz"
|
|
"fstrcmp-$_fstrcmp_version.tar.gz"
|
|
"flatbuffers-$_flatbuffers_version.tar.gz"
|
|
"libudfread-$_libudfread_version.tar.gz"
|
|
)
|
|
sha256sums=('4aeec099e4566daf0d7856662c2bf1cc1ac56cf82f46c6da616ee2adf446dd2e'
|
|
'f38c4a4e7a4f4da6d8e83b8852489aa3bb6588a915dc41f5ee89d9aad305a06e'
|
|
'584f62a3896794408d46368e2ecf2c6217ab9c676ce85921b2d68b8961f49dfc'
|
|
'719130091e3adc9725ba72df808f24a14737a009dca5a4c38c601c0c76449b62'
|
|
'abbce62231baffe237e412689c71ffe01bfc83135afd375f1e538caae87729ed'
|
|
'6be27e0b3a4907f0cd3cfadec255ee1b925569e1bd06e67a4d2f4267299b69c4'
|
|
'e4018e850f80700acee8da296e56e15b1eef711ab15157e542e7d7e1237c3476'
|
|
'9ddb9031798f4f8754d00fca2f1a68ecf9d0f83dfac7239af1311e4fd9a565c4'
|
|
'2bf16726ac98d093156195bb049a663e07d3323e079c26912546f4e05c77bac5'
|
|
'b94c70baa45e30346224ceecfab031dd183e09303b1f97d6522f9941da9b0067'
|
|
'9ce6051a2157e6b677090f201d98870a33db6c90c91dc0d480a87fb7ab84e3e5'
|
|
'677745404a2b000674c74eefe1ce345331260906d3bc449c6fe79c8f4c014845')
|
|
|
|
prepare() {
|
|
[[ -d kodi-build ]] && rm -rf kodi-build
|
|
mkdir "$srcdir/kodi-build"
|
|
cd "xbmc-$_commit"
|
|
|
|
# fix nfsv4 lockout
|
|
patch -p1 -i ../22714.patch
|
|
}
|
|
|
|
build() {
|
|
cd 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
|
|
|
|
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
|
|
CFLAGS="-mcpu=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard"
|
|
elif [[ $CARCH = "aarch64" ]]; then
|
|
# note that we use a value of cortex-a53 here to allow RPi3 and RPi4 to use the same package
|
|
# consistent with rationale of previous comment
|
|
CFLAGS="-mcpu=cortex-a53"
|
|
fi
|
|
|
|
CFLAGS+=" -O2 -pipe -fstack-protector-strong -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection"
|
|
CXXFLAGS+="${CFLAGS} -Wp,-D_GLIBCXX_ASSERTIONS"
|
|
|
|
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
|
|
-DVERBOSE=ON
|
|
-DENABLE_LDGOLD=OFF
|
|
-DENABLE_AIRTUNES=ON
|
|
-DENABLE_AVAHI=ON
|
|
-DENABLE_BLURAY=ON
|
|
-DENABLE_CEC=ON
|
|
-DENABLE_DBUS=ON
|
|
-DENABLE_DVDCSS=ON
|
|
-DENABLE_EVENTCLIENTS=ON
|
|
-DENABLE_MICROHTTPD=ON
|
|
-DENABLE_MYSQLCLIENT=ON
|
|
-DENABLE_NFS=ON
|
|
-DENABLE_OPTICAL=ON
|
|
-DENABLE_SMBCLIENT=ON
|
|
-DENABLE_UDEV=ON
|
|
-DENABLE_UPNP=ON
|
|
-DENABLE_VAAPI=OFF
|
|
-DENABLE_VDPAU=OFF
|
|
-DENABLE_XSLT=ON
|
|
-DENABLE_LIRCCLIENT=ON
|
|
-DENABLE_INTERNAL_FFMPEG=ON
|
|
-DENABLE_INTERNAL_CROSSGUID=ON
|
|
-DENABLE_INTERNAL_FSTRCMP=ON
|
|
-DENABLE_INTERNAL_FLATBUFFERS=ON
|
|
-DENABLE_INTERNAL_UDFREAD=ON
|
|
-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"
|
|
-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"
|
|
-DAPP_RENDER_SYSTEM=gles
|
|
-DCORE_PLATFORM_NAME="x11 gbm"
|
|
)
|
|
|
|
# https://github.com/google/flatbuffers/issues/7404
|
|
CXXFLAGS+=' -Wno-error=restrict'
|
|
|
|
echo "building kodi"
|
|
cmake "${_args[@]}" ../"xbmc-$_commit"
|
|
make
|
|
}
|
|
|
|
package_kodi-rpi() {
|
|
pkgdesc="Media player and entertainment hub with hw accel for RPi 3/4/400, gbm_nexus fork"
|
|
depends=(
|
|
'bluez-libs' 'curl' 'dav1d' 'desktop-file-utils' 'hicolor-icon-theme' 'fmt'
|
|
'lcms2' 'libass' 'libbluray' 'libcdio' 'libcec-rpi' 'libmicrohttpd' 'libnfs'
|
|
'libplist' 'libpulse' 'libxslt' 'lirc' 'mariadb-libs'
|
|
'mesa' 'libpipewire' 'python-pillow' 'python-pycryptodomex'
|
|
'python-simplejson' 'shairplay' 'smbclient' 'sndio' 'spdlog' 'sqlite'
|
|
'taglib' 'tinyxml' 'libxkbcommon' 'polkit' 'linux>=5.4.35' 'lzo' 'libinput'
|
|
'pcre'
|
|
)
|
|
[[ -n "$_clangbuild" ]] && depends+=('glu')
|
|
|
|
optdepends=(
|
|
'afpfs-ng: Apple shares support'
|
|
'bluez: Blutooth support'
|
|
'linux-rpi: HW accelerated decoding'
|
|
'python-pybluez: Bluetooth support'
|
|
'pulseaudio: PulseAudio support'
|
|
'pipewire: PipeWire support'
|
|
)
|
|
install='kodi.install'
|
|
provides=('xbmc' "kodi=${pkgver}" "kodi-common=${pkgver}")
|
|
conflicts=('xbmc' 'kodi' 'arm-mem-git' 'shairplay-git' 'kodi-rbp' 'kodi-rbp3' 'kodi-rbp4' 'kodi-rpi-legacy')
|
|
replaces=('xbmc-rbp-git' 'kodi-rbp4')
|
|
|
|
_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 ... might be a problem or rpi3?
|
|
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"
|
|
|
|
# avoid error <general>: GetDirectory - Error getting /usr/lib/kodi/addons
|
|
# https://bugs.archlinux.org/task/77366
|
|
mkdir -p "$pkgdir"/usr/lib/kodi/addons
|
|
}
|
|
|
|
package_kodi-rpi-eventclients() {
|
|
pkgdesc="Kodi Event Clients"
|
|
provides=("kodi-eventclients=${pkgver}")
|
|
conflicts=('kodi-rbp-eventclients' 'kodi-rbp3-eventclients' 'kodi-rbp4-eventclients' 'kodi-rpi-legacy-eventclients')
|
|
replaces=('kodi-rbp4-eventclients')
|
|
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-tools-texturepacker() {
|
|
pkgdesc="Kodi Texturepacker Tool"
|
|
depends=('libpng' 'giflib' 'libjpeg-turbo' 'lzo')
|
|
conflicts=('kodi-rbp-tools-texturepacker' 'kodi-rbp3-tools-texturepacker' 'kodi-rbp4-tools-texturepacker' 'kodi-rpi-legacy-tools-texturepacker')
|
|
replaces=('kodi-rbp4-tools-texturepacker')
|
|
|
|
_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-dev() {
|
|
pkgdesc="Kodi dev files"
|
|
depends=('kodi')
|
|
conflicts=('kodi-rbp-dev' 'kodi-rbp3-dev' 'kodi-rbp4-dev' 'kodi-rpi-legacy-dev')
|
|
replaces=('kodi-rbp4-dev')
|
|
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
|
|
}
|