projects/aports·blob master · refs

313 lines · 8.6 KiB

1# Contributor: Carlo Landmeter <[email protected]>
2maintainer="Achill Gilgenast <[email protected]>"
3pkgname=kodi
4pkgver=21.3
5_realname=Omega
6pkgrel=8
7_libdvdcss="1.4.3-Next-Nexus-Alpha2-2"
8_libdvdnav="6.1.1-Next-Nexus-Alpha2-2"
9_libdvdread="6.1.3-Next-Nexus-Alpha2-2"
10_crossguid="ca1bf4b810e2d188d04cb6286f957008ee1b7681"
11pkgdesc="Software media player and entertainment hub for digital media"
12url="https://kodi.tv/"
13# armhf: flatbuffers
14# loongarch64: clang is saying the triple-implied ABI is invalid
15arch="all !armhf !loongarch64"
16license="GPL-2.0-only"
17install="kodi-gbm.pre-install"
18depends="
19 curl
20 hicolor-icon-theme
21 py3-bluez
22 py3-pillow
23 py3-simplejson
24 python3
25 xdpyinfo
26 "
27# Required dependencies
28depends_dev="
29 curl-dev
30 ffmpeg6-dev
31 flatbuffers-dev
32 fmt-dev
33 freetype-dev
34 fribidi-dev
35 fstrcmp-dev
36 giflib-dev
37 glu-dev
38 gtest-dev
39 libass-dev
40 libcdio-dev
41 libdisplay-info-dev
42 libdrm-dev
43 libjpeg-turbo-dev
44 libunistring-dev
45 libvdpau-dev
46 lzo-dev
47 mesa-dev
48 openssl-dev>3
49 pcre-dev
50 rapidjson-dev
51 spdlog-dev
52 sqlite-dev
53 taglib-dev
54 tinyxml2-dev
55 tinyxml-dev
56 zlib-dev
57 "
58# Required for Wayland
59depends_dev="
60 $depends_dev
61 libxkbcommon-dev
62 waylandpp-dev
63 "
64# Required for gbm
65depends_dev="
66 $depends_dev
67 libinput-dev
68 "
69# Optional for extra features
70depends_dev="
71 $depends_dev
72 alsa-lib-dev
73 avahi-dev
74 bluez-dev
75 dav1d-dev
76 dbus-dev
77 eudev-dev
78 lcms2-dev
79 libbluray-dev
80 libcap-dev
81 libcec-dev
82 libmicrohttpd-dev
83 libnfs-dev
84 libplist-dev
85 libshairport-dev
86 libudfread-dev
87 libva-glx-dev
88 libva-glx-dev
89 libxslt-dev
90 libxslt-dev
91 mariadb-connector-c-dev
92 pipewire-dev
93 pulseaudio-dev
94 python3-dev
95 samba-dev
96 "
97makedepends="
98 $depends_dev
99 autoconf
100 automake
101 bash
102 clang
103 cmake
104 doxygen
105 graphviz
106 libtool
107 lld
108 llvm
109 nasm
110 samurai
111 swig
112 tar
113 wayland-protocols
114 xz
115 "
116subpackages="
117 $pkgname-dev
118 $pkgname-doc
119 $pkgname-openrc
120 $pkgname-x11
121 $pkgname-wayland
122 $pkgname-gbm
123 $pkgname-polkit::noarch
124 "
125# TODO: bring back the py3-kodi subpackage
126# currently doesn't seem to have any files
127# py3-$pkgname:py3
128replaces="xbmc"
129options="ldpath-recursive !check" # No testsuite
130source="https://github.com/xbmc/xbmc/archive/$pkgver-$_realname.tar.gz
131 crossguid-$_crossguid.tar.gz::https://mirrors.kodi.tv/build-deps/sources/crossguid-$_crossguid.tar.gz
132 libdvdcss-$_libdvdcss.tar.gz::https://github.com/xbmc/libdvdcss/archive/$_libdvdcss.tar.gz
133 libdvdnav-$_libdvdnav.tar.gz::https://github.com/xbmc/libdvdnav/archive/$_libdvdnav.tar.gz
134 libdvdread-$_libdvdread.tar.gz::https://github.com/xbmc/libdvdread/archive/$_libdvdread.tar.gz
135 fix-musl-incompability.patch
136 gcc13.patch
137 lfs64.patch
138 sse-build.patch
139 other-archs.patch
140 dyn-pagesize.patch
141 ppc-no-native-endian-swap.patch
142 gcc15-musl.patch
143 kodi.initd
144 60-kodi.rules
145 "
146builddir="$srcdir/xbmc-$pkgver-$_realname"
147
148# openjdk8 doesnt support riscv64, and openjdk21 doesnt support 32-bit
149# so use openjdk21 otherwise openjdk8
150case $CARCH in
151 armhf|armv7|x86) makedepends="$makedepends openjdk8-jre-base" ;;
152 *) makedepends="$makedepends openjdk21-jre-headless" ;;
153esac
154
155# secfixes:
156# 18.2-r0:
157# - CVE-2018-8831
158
159_build() {
160 local outdir="$1"
161 shift
162
163 cmake -B "$outdir" -G Ninja -Wno-dev \
164 -DCMAKE_BUILD_TYPE=Release \
165 -DCMAKE_INSTALL_PREFIX=/usr \
166 -DCMAKE_INSTALL_LIBDIR=lib \
167 -DENABLE_EGL=ON \
168 -DENABLE_EVENTCLIENTS=ON \
169 -DENABLE_INTERNAL_CROSSGUID=ON \
170 -DENABLE_INTERNAL_FLATBUFFERS=OFF \
171 -DENABLE_INTERNAL_RapidJSON=OFF \
172 -DENABLE_GOLD=OFF \
173 -DENABLE_VAAPI=ON \
174 -DENABLE_TESTING=OFF \
175 -DCROSSGUID_URL="$srcdir"/crossguid-$_crossguid.tar.gz \
176 -Dlibdvdcss_URL="$srcdir"/libdvdcss-$_libdvdcss.tar.gz \
177 -Dlibdvdnav_URL="$srcdir"/libdvdnav-$_libdvdnav.tar.gz \
178 -Dlibdvdread_URL="$srcdir"/libdvdread-$_libdvdread.tar.gz \
179 -DCORE_COMPILE_OPTIONS="" \
180 "$@"
181 # build output doesn't track libcrossguid.a, so ninja fails if we don't build this first
182 cmake --build "$outdir" --target crossguid
183 cmake --build "$outdir"
184}
185
186build() {
187 # use less memory on x86
188 [ "$CARCH" = "x86" ] && export LDFLAGS="$LDFLAGS -Wl,--no-keep-memory"
189
190 case "$CARCH" in
191 armv7)
192 # thinlto with >8 threads on armv7 doesn't work
193 export LDFLAGS="$LDFLAGS -Wl,--thinlto-jobs=8"
194 ;;
195 esac
196
197 export CC=clang
198 export CXX=clang++
199 export CFLAGS="$CFLAGS -flto=thin -I$PWD/crossguid-root/usr/include/crossguid"
200 export CXXFLAGS="$CXXFLAGS -flto=thin -I$PWD/crossguid-root/usr/include/crossguid"
201 export LDFLAGS="$LDFLAGS -fuse-ld=lld -Wl,-z,stack-size=2097152"
202 export NM=llvm-nm
203
204 case "$CARCH" in
205 arm*|aarch64)
206 # not implemented in clang here
207 export CFLAGS="${CFLAGS/-fstack-clash-protection/}"
208 export CXXFLAGS="${CXXFLAGS/-fstack-clash-protection/}"
209 ;;
210 esac
211
212 _build build-x11 -DCORE_PLATFORM_NAME=x11 -DAPP_RENDER_SYSTEM=gles
213 _build build-wayland -DCORE_PLATFORM_NAME=wayland -DAPP_RENDER_SYSTEM=gles
214 _build build-gbm -DCORE_PLATFORM_NAME=gbm -DAPP_RENDER_SYSTEM=gles
215}
216
217package() {
218 depends="$depends $pkgname-bin"
219
220 DESTDIR="$pkgdir" cmake --install build-x11
221
222 install -Dm755 "$srcdir"/kodi.initd "$pkgdir"/etc/init.d/kodi
223
224 mkdir -p "$pkgdir"/usr/lib/cmake
225 mv "$pkgdir"/usr/share/kodi/cmake "$pkgdir"/usr/lib/cmake/kodi
226 mv "$pkgdir"/usr/lib/kodi/cmake/* "$pkgdir"/usr/lib/cmake/kodi/
227 rmdir "$pkgdir"/usr/lib/kodi/cmake/
228
229 install -Dm644 "$srcdir"/60-kodi.rules \
230 "$pkgdir"/usr/share/polkit-1/rules.d/60-kodi.rules
231
232 install -Dm755 \
233 build-gbm/kodi-gbm \
234 build-wayland/kodi-wayland \
235 -t "$pkgdir"/usr/bin/
236}
237
238x11() {
239 pkgdesc="X11 Kodi binary"
240 depends="$pkgname=$pkgver-r$pkgrel"
241 provides="$pkgname-bin"
242 provider_priority=5
243
244 # the "kodi" is just a script that launches the x11 backend
245 amove \
246 usr/bin/kodi \
247 usr/lib/kodi/kodi-x11 \
248 usr/lib/kodi/kodi-xrandr \
249 usr/bin/kodi-standalone
250}
251
252wayland() {
253 pkgdesc="Wayland Kodi binary"
254 depends="$pkgname=$pkgver-r$pkgrel"
255 provides="$pkgname-bin"
256 provider_priority=4
257
258 amove usr/bin/kodi-wayland
259}
260
261gbm() {
262 pkgdesc="GBM Kodi binary"
263 depends="$pkgname=$pkgver-r$pkgrel"
264 provides="$pkgname-bin"
265 provider_priority=2
266
267 amove usr/bin/kodi-gbm
268}
269
270openrc() {
271 default_openrc
272 install_if="$pkgname-gbm=$pkgver-r$pkgrel openrc"
273}
274
275py3() {
276 pkgdesc="kodi python module"
277 depends="
278 glib
279 py3-avahi
280 py3-dbus
281 py3-gobject3
282 py3-udev
283 python3
284 "
285
286 amove usr/lib/python3*
287}
288
289polkit() {
290 pkgdesc="Polkit rules for Kodi in combination with GBM"
291 depends=""
292 install_if="$pkgname-gbm=$pkgver-r$pkgrel polkit"
293
294 amove usr/share/polkit-1/rules.d
295}
296
297sha512sums="
2984e344f7de95e7f47da413f7aeeef0656837befa89ef8924edf5409ac1c0c8c49e4023682ed236d19c3413e2ca5af8457899fdb13781f19a6208bfeddc69d7602 21.3-Omega.tar.gz
299f0a80d8e99b10473bcfdfde3d1c5fd7b766959819f0d1c0595ac84ce46db9007a5fbfde9a55aca60530c46cb7f8ef4c7e472c6191559ded92f868589c141ccaf crossguid-ca1bf4b810e2d188d04cb6286f957008ee1b7681.tar.gz
300d3be3bfc13c5ea56d8db745c2aab090c99760684fe4c8f62a13d266feb319e9180ceeecf8116bfd2ed90d9accba2c11dbbf93b61ad00f69a40812ebf4eabcdda libdvdcss-1.4.3-Next-Nexus-Alpha2-2.tar.gz
30151e6fc033121241354a5f0b3fc9a430577ae3ff6bb7f31445aa548ef4893037fb80eea3b2c6774c81e9ebaf9c45e9b490c98c2c65eb38f9f7daba84b236f7e1d libdvdnav-6.1.1-Next-Nexus-Alpha2-2.tar.gz
302629a41157d07b8ec0ea1fe89ae5ec48f63047472a862782b805c531ae31a0376fc4dc15175f8280c3ef91d7fa977bacebb1b51232640034a34bab2293210fc5e libdvdread-6.1.3-Next-Nexus-Alpha2-2.tar.gz
303a8394d27eb1f5edabad255ee2afa0a3fb727e7e067a11205395010566d3748e595f4c8237eea7c9e6d7330949c3bff4d9b2cd66c00c94438b11ec9d1dd5d57a7 fix-musl-incompability.patch
304f2cd6ec55e44f3a413e2eebeba8b1d591d9ee64b9099578466d19033b620deba8012134aab9017ccb23912518219f725f33b682abf681994c34e160ea07cfa6c gcc13.patch
3052aa75f17ecf65e59770746e436a807f2697ba43278158e5123761c543cba40c2b596c5f5c51cc7ca3a7c79bab81213f81017afa6c1228e51546fe14a8cff13de lfs64.patch
30682c73147c4f4cd369b413eb503e22b5ac0e4c6dc4c5558efb0b093bf9338da74510bf45141cf7a7b2b30c817eaaa0c7dab7d44960de58bfdcdff51b6e1e7652d sse-build.patch
307263b6a2c1ba8c461636e50f982c533c39aa06a9aada944f9baf96dfcaeedf264495d7567d0f8b5dcad9e510c567246aa32391e255f2c6b2068c5911f344483b2 other-archs.patch
308349e8a78508e2f3c2b6928067227540e68f41a0ce665a4f1593e98fa44ab21d235b105cd2f41bfb5678727b0083cb2b7c4572694b1c7b8ab6581f059302d0fc9 dyn-pagesize.patch
30980e2f7b271a9d9b0c72e21c799d02bb267d2851d9fc22f4526e6668f8c7466407f2524f0152409116450736b2b7cb2f5e3a13b331276e805429e232e795b82b1 ppc-no-native-endian-swap.patch
310f51dc104717fefb75e442fda7c8f8bb12a87b6f280ad87d77256ce11b19dc2b6caf1512c8563306780d181e0c9442d1c764ceb7a9bfcd12faea8d1ffa51d8dd7 gcc15-musl.patch
311c47e90b6bb011092c033705195c8f1e4fcb56be412f12133514f46f5cb52acda7075c8350d78c98b86e0808f3d373ac3735f0fae10e907610b5405ba623cebac kodi.initd
312465a2079d598bf909a458d8e9d0ddd2b2a41dff83ba736542cffec7811c044295d5af092928f20aaa6cd3bc8b13bb03ede5c7ded1783680f890464e103392787 60-kodi.rules
313"