aports/community/kodi/APKBUILD

314 lines
8.7 KiB
Text

# Contributor: Carlo Landmeter <clandmeter@alpinelinux.org>
maintainer="fossdd <fossdd@pwned.life>"
pkgname=kodi
pkgver=21.2
_realname=Omega
pkgrel=6
_libdvdcss="1.4.3-Next-Nexus-Alpha2-2"
_libdvdnav="6.1.1-Next-Nexus-Alpha2-2"
_libdvdread="6.1.3-Next-Nexus-Alpha2-2"
_crossguid="ca1bf4b810e2d188d04cb6286f957008ee1b7681"
pkgdesc="Software media player and entertainment hub for digital media"
url="https://kodi.tv/"
# armhf: flatbuffers
# loongarch64: clang is saying the triple-implied ABI is invalid
arch="all !armhf !loongarch64"
license="GPL-2.0-only"
install="kodi-gbm.pre-install"
depends="
curl
hicolor-icon-theme
py3-bluez
py3-pillow
py3-simplejson
python3
xdpyinfo
"
# Required dependencies
depends_dev="
curl-dev
ffmpeg-dev
flatbuffers-dev
fmt-dev
freetype-dev
fribidi-dev
fstrcmp-dev
giflib-dev
glu-dev
gtest-dev
libass-dev
libcdio-dev
libdisplay-info-dev
libdrm-dev
libjpeg-turbo-dev
libunistring-dev
libvdpau-dev
lzo-dev
mesa-dev
openssl-dev>3
pcre-dev
rapidjson-dev
spdlog-dev
sqlite-dev
taglib-dev
tinyxml2-dev
tinyxml-dev
zlib-dev
"
# Required for Wayland
depends_dev="
$depends_dev
libxkbcommon-dev
waylandpp-dev
"
# Required for gbm
depends_dev="
$depends_dev
libinput-dev
"
# Optional for extra features
depends_dev="
$depends_dev
alsa-lib-dev
avahi-dev
bluez-dev
dav1d-dev
dbus-dev
eudev-dev
lcms2-dev
libbluray-dev
libcap-dev
libcec4-dev
libmicrohttpd-dev
libnfs-dev
libplist-dev
libshairport-dev
libudfread-dev
libva-glx-dev
libva-glx-dev
libxslt-dev
libxslt-dev
mariadb-connector-c-dev
pipewire-dev
pulseaudio-dev
python3-dev
samba-dev
"
makedepends="
$depends_dev
autoconf
automake
bash
clang
cmake
doxygen
graphviz
libtool
lld
llvm
nasm
samurai
swig
tar
wayland-protocols
xz
"
subpackages="
$pkgname-dev
$pkgname-doc
$pkgname-openrc
$pkgname-x11
$pkgname-wayland
$pkgname-gbm
$pkgname-polkit::noarch
"
# TODO: bring back the py3-kodi subpackage
# currently doesn't seem to have any files
# py3-$pkgname:py3
replaces="xbmc"
options="ldpath-recursive !check" # No testsuite
source="https://github.com/xbmc/xbmc/archive/$pkgver-$_realname.tar.gz
crossguid-$_crossguid.tar.gz::https://mirrors.kodi.tv/build-deps/sources/crossguid-$_crossguid.tar.gz
libdvdcss-$_libdvdcss.tar.gz::https://github.com/xbmc/libdvdcss/archive/$_libdvdcss.tar.gz
libdvdnav-$_libdvdnav.tar.gz::https://github.com/xbmc/libdvdnav/archive/$_libdvdnav.tar.gz
libdvdread-$_libdvdread.tar.gz::https://github.com/xbmc/libdvdread/archive/$_libdvdread.tar.gz
fix-musl-incompability.patch
gcc13.patch
lfs64.patch
sse-build.patch
other-archs.patch
dyn-pagesize.patch
ppc-no-native-endian-swap.patch
pipewire-1.4.patch
pipewire-thread-loop-unlock-error.patch
kodi.initd
60-kodi.rules
"
builddir="$srcdir/xbmc-$pkgver-$_realname"
# openjdk8 doesnt support riscv64, and openjdk21 doesnt support 32-bit
# so use openjdk21 otherwise openjdk8
case $CARCH in
armhf|armv7|x86) makedepends="$makedepends openjdk8-jre-base" ;;
*) makedepends="$makedepends openjdk21-jre-headless" ;;
esac
# secfixes:
# 18.2-r0:
# - CVE-2018-8831
_build() {
local outdir="$1"
shift
cmake -B "$outdir" -G Ninja -Wno-dev \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DENABLE_EGL=ON \
-DENABLE_EVENTCLIENTS=ON \
-DENABLE_INTERNAL_CROSSGUID=ON \
-DENABLE_INTERNAL_FLATBUFFERS=OFF \
-DENABLE_INTERNAL_RapidJSON=OFF \
-DENABLE_GOLD=OFF \
-DENABLE_VAAPI=ON \
-DENABLE_TESTING=OFF \
-DCROSSGUID_URL="$srcdir"/crossguid-$_crossguid.tar.gz \
-Dlibdvdcss_URL="$srcdir"/libdvdcss-$_libdvdcss.tar.gz \
-Dlibdvdnav_URL="$srcdir"/libdvdnav-$_libdvdnav.tar.gz \
-Dlibdvdread_URL="$srcdir"/libdvdread-$_libdvdread.tar.gz \
-DCORE_COMPILE_OPTIONS="" \
"$@"
# build output doesn't track libcrossguid.a, so ninja fails if we don't build this first
cmake --build "$outdir" --target crossguid
cmake --build "$outdir"
}
build() {
# use less memory on x86
[ "$CARCH" = "x86" ] && export LDFLAGS="$LDFLAGS -Wl,--no-keep-memory"
case "$CARCH" in
armv7)
# thinlto with >8 threads on armv7 doesn't work
export LDFLAGS="$LDFLAGS -Wl,--thinlto-jobs=8"
;;
esac
export CC=clang
export CXX=clang++
export CFLAGS="$CFLAGS -flto=thin -I$PWD/crossguid-root/usr/include/crossguid"
export CXXFLAGS="$CXXFLAGS -flto=thin -I$PWD/crossguid-root/usr/include/crossguid"
export LDFLAGS="$LDFLAGS -fuse-ld=lld -Wl,-z,stack-size=2097152"
export NM=llvm-nm
case "$CARCH" in
arm*|aarch64)
# not implemented in clang here
export CFLAGS="${CFLAGS/-fstack-clash-protection/}"
export CXXFLAGS="${CXXFLAGS/-fstack-clash-protection/}"
;;
esac
_build build-x11 -DCORE_PLATFORM_NAME=x11 -DAPP_RENDER_SYSTEM=gles
_build build-wayland -DCORE_PLATFORM_NAME=wayland -DAPP_RENDER_SYSTEM=gles
_build build-gbm -DCORE_PLATFORM_NAME=gbm -DAPP_RENDER_SYSTEM=gles
}
package() {
depends="$depends $pkgname-bin"
DESTDIR="$pkgdir" cmake --install build-x11
install -Dm755 "$srcdir"/kodi.initd "$pkgdir"/etc/init.d/kodi
mkdir -p "$pkgdir"/usr/lib/cmake
mv "$pkgdir"/usr/share/kodi/cmake "$pkgdir"/usr/lib/cmake/kodi
mv "$pkgdir"/usr/lib/kodi/cmake/* "$pkgdir"/usr/lib/cmake/kodi/
rmdir "$pkgdir"/usr/lib/kodi/cmake/
install -Dm644 "$srcdir"/60-kodi.rules \
"$pkgdir"/usr/share/polkit-1/rules.d/60-kodi.rules
install -Dm755 \
build-gbm/kodi-gbm \
build-wayland/kodi-wayland \
-t "$pkgdir"/usr/bin/
}
x11() {
pkgdesc="X11 Kodi binary"
depends="$pkgname=$pkgver-r$pkgrel"
provides="$pkgname-bin"
provider_priority=5
# the "kodi" is just a script that launches the x11 backend
amove \
usr/bin/kodi \
usr/lib/kodi/kodi-x11 \
usr/lib/kodi/kodi-xrandr
}
wayland() {
pkgdesc="Wayland Kodi binary"
depends="$pkgname=$pkgver-r$pkgrel"
provides="$pkgname-bin"
provider_priority=4
amove usr/bin/kodi-wayland
}
gbm() {
pkgdesc="GBM Kodi binary"
depends="$pkgname=$pkgver-r$pkgrel"
provides="$pkgname-bin"
provider_priority=2
amove usr/bin/kodi-gbm
}
openrc() {
default_openrc
install_if="$pkgname-gbm=$pkgver-r$pkgrel openrc"
}
py3() {
pkgdesc="kodi python module"
depends="
glib
py3-avahi
py3-dbus
py3-gobject3
py3-udev
python3
"
amove usr/lib/python3*
}
polkit() {
pkgdesc="Polkit rules for Kodi in combination with GBM"
depends=""
install_if="$pkgname-gbm=$pkgver-r$pkgrel polkit"
amove usr/share/polkit-1/rules.d
}
sha512sums="
d49d74240b9c0aded3437dd81bc3324c03bea36834bca3920d5d26b4780275e3fea46efe1f3b33bb3e910d1ffe211ee17928bd8a441326a49713ac1120f083ea 21.2-Omega.tar.gz
f0a80d8e99b10473bcfdfde3d1c5fd7b766959819f0d1c0595ac84ce46db9007a5fbfde9a55aca60530c46cb7f8ef4c7e472c6191559ded92f868589c141ccaf crossguid-ca1bf4b810e2d188d04cb6286f957008ee1b7681.tar.gz
d3be3bfc13c5ea56d8db745c2aab090c99760684fe4c8f62a13d266feb319e9180ceeecf8116bfd2ed90d9accba2c11dbbf93b61ad00f69a40812ebf4eabcdda libdvdcss-1.4.3-Next-Nexus-Alpha2-2.tar.gz
51e6fc033121241354a5f0b3fc9a430577ae3ff6bb7f31445aa548ef4893037fb80eea3b2c6774c81e9ebaf9c45e9b490c98c2c65eb38f9f7daba84b236f7e1d libdvdnav-6.1.1-Next-Nexus-Alpha2-2.tar.gz
629a41157d07b8ec0ea1fe89ae5ec48f63047472a862782b805c531ae31a0376fc4dc15175f8280c3ef91d7fa977bacebb1b51232640034a34bab2293210fc5e libdvdread-6.1.3-Next-Nexus-Alpha2-2.tar.gz
a8394d27eb1f5edabad255ee2afa0a3fb727e7e067a11205395010566d3748e595f4c8237eea7c9e6d7330949c3bff4d9b2cd66c00c94438b11ec9d1dd5d57a7 fix-musl-incompability.patch
f2cd6ec55e44f3a413e2eebeba8b1d591d9ee64b9099578466d19033b620deba8012134aab9017ccb23912518219f725f33b682abf681994c34e160ea07cfa6c gcc13.patch
2aa75f17ecf65e59770746e436a807f2697ba43278158e5123761c543cba40c2b596c5f5c51cc7ca3a7c79bab81213f81017afa6c1228e51546fe14a8cff13de lfs64.patch
82c73147c4f4cd369b413eb503e22b5ac0e4c6dc4c5558efb0b093bf9338da74510bf45141cf7a7b2b30c817eaaa0c7dab7d44960de58bfdcdff51b6e1e7652d sse-build.patch
263b6a2c1ba8c461636e50f982c533c39aa06a9aada944f9baf96dfcaeedf264495d7567d0f8b5dcad9e510c567246aa32391e255f2c6b2068c5911f344483b2 other-archs.patch
349e8a78508e2f3c2b6928067227540e68f41a0ce665a4f1593e98fa44ab21d235b105cd2f41bfb5678727b0083cb2b7c4572694b1c7b8ab6581f059302d0fc9 dyn-pagesize.patch
80e2f7b271a9d9b0c72e21c799d02bb267d2851d9fc22f4526e6668f8c7466407f2524f0152409116450736b2b7cb2f5e3a13b331276e805429e232e795b82b1 ppc-no-native-endian-swap.patch
b05ed2fd18406d8c7a9fe05f201aff8fda526144c6d3af9a210f4ef0abd3acaeb095f0b2a99678507e52d8e2b39f76595abbc193e971f4d74ebc254e4a933b08 pipewire-1.4.patch
e637944379445da3c4f4bb6a130ecb833c2390fa45949681733d3f18285ee337268e95d5b9e58e90fbf0c5f194318846b6ec222dc61747a60ef51427e1ea32c7 pipewire-thread-loop-unlock-error.patch
c47e90b6bb011092c033705195c8f1e4fcb56be412f12133514f46f5cb52acda7075c8350d78c98b86e0808f3d373ac3735f0fae10e907610b5405ba623cebac kodi.initd
465a2079d598bf909a458d8e9d0ddd2b2a41dff83ba736542cffec7811c044295d5af092928f20aaa6cd3bc8b13bb03ede5c7ded1783680f890464e103392787 60-kodi.rules
"