aports/community/kodi/APKBUILD
2023-05-10 11:01:24 +02:00

286 lines
7.3 KiB
Plaintext

# Contributor: Carlo Landmeter <clandmeter@alpinelinux.org>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=kodi
pkgver=20.1
_realname=Nexus
pkgrel=7
_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/"
# kodi does not know of other archs
arch="x86 x86_64 aarch64 armv7"
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
ffmpeg4-dev
flatbuffers-dev
fmt-dev
freetype-dev
fribidi-dev
fstrcmp-dev
giflib-dev
glu-dev
gtest-dev
libass-dev
libcdio-dev
libdrm-dev
libjpeg-turbo-dev
lzo-dev
mesa-dev
openssl-dev>3
pcre-dev
rapidjson-dev
spdlog-dev
sqlite-dev
taglib-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
clang
cmake
doxygen
graphviz
libtool
lld
llvm
openjdk8-jre-base
samurai
swig
tar
wayland-protocols
xz
"
subpackages="
$pkgname-dev
$pkgname-doc
$pkgname-openrc
$pkgname-x11
$pkgname-wayland
$pkgname-gbm
py3-$pkgname:py3
$pkgname-polkit::noarch
"
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
sse-build.patch
kodi.initd
60-kodi.rules
"
builddir="$srcdir/xbmc-$pkgver-$_realname"
# secfixes:
# 18.2-r0:
# - CVE-2018-8831
_build() {
local outdir="$1"
shift
cmake -B "$outdir" -G Ninja -Wno-dev \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DENABLE_EGL=ON \
-DENABLE_EVENTCLIENTS=ON \
-DENABLE_INTERNAL_CROSSGUID=ON \
-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 \
"$@"
# link hacked libcrossguid from below
ln -sfv "$PWD"/crossguid-root/usr/lib/libcrossguid.a "$outdir"/build/lib/
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
# crossguid build has some hacks that don't track deps, so we have to build it ourselves first
# not using -G ninja also works, but who wants to increase build time
# by 20+% instead of just doing this?
cmake -B build-crossguid -G Ninja \
-S "$srcdir"/crossguid-$_crossguid \
-DCMAKE_BUILD_TYPE=None \
-DCMAKE_INSTALL_PREFIX=/usr
cmake --build build-crossguid
mkdir -p crossguid-root
DESTDIR="$PWD/crossguid-root" cmake --install build-crossguid
_build build-x11 -DCORE_PLATFORM_NAME=x11 -DAPP_RENDER_SYSTEM=gl
_build build-wayland -DCORE_PLATFORM_NAME=wayland -DAPP_RENDER_SYSTEM=gl
_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"
install_if="$pkgname-gbm polkit"
amove usr/share/polkit-1/rules.d
}
sha512sums="
648df0649a0443d884b9414f43be4253764f1aaf9072aa8111e5a8a217c8291024ce1f27c2f7f673ac24005b32cc7dd25d86e99fc68166e3d5a637ae36b20f02 20.1-Nexus.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
d3445c7f96eeab7cd2a2a67319fab09300ee2e8c03912d474e885d7e8a770b501abc59352972abb4dab6fab7f138b42fdb31b0113b9bb1a71b4f000fe1cdcbbb fix-musl-incompability.patch
82c73147c4f4cd369b413eb503e22b5ac0e4c6dc4c5558efb0b093bf9338da74510bf45141cf7a7b2b30c817eaaa0c7dab7d44960de58bfdcdff51b6e1e7652d sse-build.patch
c47e90b6bb011092c033705195c8f1e4fcb56be412f12133514f46f5cb52acda7075c8350d78c98b86e0808f3d373ac3735f0fae10e907610b5405ba623cebac kodi.initd
465a2079d598bf909a458d8e9d0ddd2b2a41dff83ba736542cffec7811c044295d5af092928f20aaa6cd3bc8b13bb03ede5c7ded1783680f890464e103392787 60-kodi.rules
"