Commit | Line | Data |
---|---|---|
34f5618b DT |
1 | ;;; GNU Guix --- Functional package management for GNU |
2 | ;;; Copyright © 2015 David Thompson <davet@gnu.org> | |
b165fe61 | 3 | ;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com> |
72df48db | 4 | ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com> |
cf0ea815 | 5 | ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> |
988b78ba | 6 | ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il> |
34f5618b DT |
7 | ;;; |
8 | ;;; This file is part of GNU Guix. | |
9 | ;;; | |
10 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
11 | ;;; under the terms of the GNU General Public License as published by | |
12 | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
13 | ;;; your option) any later version. | |
14 | ;;; | |
15 | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
16 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 | ;;; GNU General Public License for more details. | |
19 | ;;; | |
20 | ;;; You should have received a copy of the GNU General Public License | |
21 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
22 | ||
23 | (define-module (gnu packages kodi) | |
24 | #:use-module ((guix licenses) #:prefix license:) | |
25 | #:use-module (guix utils) | |
26 | #:use-module (guix packages) | |
27 | #:use-module (guix download) | |
1e3fbf3c | 28 | #:use-module (guix git-download) |
f69e2034 | 29 | #:use-module (guix build-system cmake) |
34f5618b | 30 | #:use-module (guix build-system gnu) |
72df48db | 31 | #:use-module (guix build-system trivial) |
39ad752c | 32 | #:use-module (gnu packages) |
34f5618b DT |
33 | #:use-module (gnu packages algebra) |
34 | #:use-module (gnu packages audio) | |
35 | #:use-module (gnu packages autotools) | |
36 | #:use-module (gnu packages avahi) | |
37 | #:use-module (gnu packages base) | |
72df48db | 38 | #:use-module (gnu packages bash) |
34f5618b DT |
39 | #:use-module (gnu packages cdrom) |
40 | #:use-module (gnu packages cmake) | |
41 | #:use-module (gnu packages compression) | |
42 | #:use-module (gnu packages curl) | |
43 | #:use-module (gnu packages databases) | |
99828fa7 | 44 | #:use-module (gnu packages documentation) |
34f5618b | 45 | #:use-module (gnu packages fontutils) |
b165fe61 | 46 | #:use-module (gnu packages freedesktop) |
34f5618b DT |
47 | #:use-module (gnu packages fribidi) |
48 | #:use-module (gnu packages gettext) | |
49 | #:use-module (gnu packages ghostscript) | |
50 | #:use-module (gnu packages gawk) | |
51 | #:use-module (gnu packages gl) | |
52 | #:use-module (gnu packages glib) | |
53 | #:use-module (gnu packages gperf) | |
988b78ba | 54 | #:use-module (gnu packages groff) |
34f5618b DT |
55 | #:use-module (gnu packages gnunet) |
56 | #:use-module (gnu packages gnupg) | |
57 | #:use-module (gnu packages image) | |
58 | #:use-module (gnu packages java) | |
59 | #:use-module (gnu packages libusb) | |
60 | #:use-module (gnu packages linux) | |
61 | #:use-module (gnu packages mp3) | |
62 | #:use-module (gnu packages pcre) | |
63 | #:use-module (gnu packages pkg-config) | |
f69e2034 | 64 | #:use-module (gnu packages pretty-print) |
34f5618b DT |
65 | #:use-module (gnu packages pulseaudio) |
66 | #:use-module (gnu packages python) | |
67 | #:use-module (gnu packages samba) | |
68 | #:use-module (gnu packages sdl) | |
e3407254 | 69 | #:use-module (gnu packages serialization) |
cd0322a3 | 70 | #:use-module (gnu packages sqlite) |
34f5618b DT |
71 | #:use-module (gnu packages ssh) |
72 | #:use-module (gnu packages swig) | |
73 | #:use-module (gnu packages textutils) | |
74 | #:use-module (gnu packages tls) | |
75 | #:use-module (gnu packages video) | |
76 | #:use-module (gnu packages web) | |
77 | #:use-module (gnu packages xdisorg) | |
78 | #:use-module (gnu packages xiph) | |
79 | #:use-module (gnu packages xml) | |
80 | #:use-module (gnu packages xorg) | |
148585c2 | 81 | #:use-module (gnu packages assembly)) |
34f5618b | 82 | |
1e3fbf3c | 83 | (define-public crossguid |
e3407254 EF |
84 | (let ((commit "fef89a4174a7bf8cd99fa9154864ce9e8e3bf989") |
85 | (revision "2")) | |
1e3fbf3c DT |
86 | (package |
87 | (name "crossguid") | |
e3407254 EF |
88 | (version (string-append "0.0-" revision "." (string-take commit 7))) |
89 | ;; This is the commit that Kodi wants. | |
1e3fbf3c DT |
90 | (source (origin |
91 | (method git-fetch) | |
92 | (uri (git-reference | |
93 | (url "https://github.com/graeme-hill/crossguid.git") | |
94 | (commit commit))) | |
7c776ddc | 95 | (file-name (string-append name "-" version "-checkout")) |
1e3fbf3c DT |
96 | (sha256 |
97 | (base32 | |
e3407254 | 98 | "1blrkc7zcqrqcr5msvhyhm98s2jvm9hr0isqs4288q2r4mdnrfq0")))) |
1e3fbf3c DT |
99 | (build-system gnu-build-system) |
100 | (arguments | |
101 | '(#:phases | |
102 | (modify-phases %standard-phases | |
2aa137e2 | 103 | (delete 'configure) ; no configure script |
1e3fbf3c DT |
104 | (replace 'build |
105 | (lambda _ | |
2aa137e2 TGR |
106 | (invoke "g++" "-c" "guid.cpp" "-o" "guid.o" |
107 | "-std=c++11" "-DGUID_LIBUUID") | |
108 | (invoke "ar" "rvs" "libcrossguid.a" "guid.o"))) | |
1e3fbf3c DT |
109 | (replace 'check |
110 | (lambda _ | |
2aa137e2 TGR |
111 | (invoke "g++" "-c" "test.cpp" "-o" "test.o" |
112 | "-std=c++11") | |
113 | (invoke "g++" "-c" "testmain.cpp" "-o" "testmain.o" | |
114 | "-std=c++11") | |
115 | (invoke "g++" "test.o" "guid.o" "testmain.o" | |
116 | "-o" "test" "-luuid") | |
117 | (invoke (string-append (getcwd) "/test")))) | |
1e3fbf3c DT |
118 | (replace 'install |
119 | (lambda* (#:key outputs #:allow-other-keys) | |
120 | (let ((out (assoc-ref outputs "out"))) | |
121 | (install-file "guid.h" (string-append out "/include")) | |
122 | (install-file "libcrossguid.a" | |
123 | (string-append out "/lib")) | |
124 | #t)))))) | |
125 | (inputs | |
126 | `(("util-linux" ,util-linux))) | |
127 | (synopsis "Lightweight universal identifier library") | |
7c49ab5b | 128 | (description "CrossGuid is a minimal GUID/UUID |
1e3fbf3c DT |
129 | generator library for C++.") |
130 | (home-page "https://github.com/graeme-hill/crossguid") | |
131 | (license license:expat)))) | |
132 | ||
f69e2034 MB |
133 | ;; Kodi requires using their own special forks of these libraries. |
134 | ;; In addition, it insists on downloading and building these as part | |
135 | ;; of the standard build process. To make things easier, we bootstrap | |
136 | ;; and patch shebangs here, so we don't have to worry about it later. | |
137 | (define libdvdnav/kodi | |
e3407254 | 138 | (let ((commit "6.0.0-Leia-Alpha-3")) |
f69e2034 MB |
139 | (package |
140 | (name "libdvdnav-bootstrapped") | |
141 | (version commit) | |
142 | (source (origin | |
143 | (method git-fetch) | |
144 | (uri (git-reference | |
145 | (url "https://github.com/xbmc/libdvdnav.git") | |
146 | (commit commit))) | |
147 | (file-name (string-append name "-" version "-checkout")) | |
148 | (sha256 | |
149 | (base32 | |
e3407254 | 150 | "0qwlf4lgahxqxk1r2pzl866mi03pbp7l1fc0rk522sc0ak2s9jhb")))) |
f69e2034 MB |
151 | (build-system gnu-build-system) |
152 | (arguments | |
153 | '(#:tests? #f | |
154 | #:phases | |
155 | (modify-phases %standard-phases | |
f69e2034 MB |
156 | (delete 'configure) |
157 | (delete 'build) | |
158 | (replace 'install | |
159 | (lambda* (#:key outputs #:allow-other-keys) | |
160 | (copy-recursively "." (assoc-ref outputs "out")) | |
161 | #t))))) | |
162 | (native-inputs | |
163 | `(("autoconf" ,autoconf) | |
164 | ("automake" ,automake) | |
165 | ("libtool" ,libtool) | |
166 | ("pkg-config" ,pkg-config))) | |
167 | (home-page "https://github.com/xbmc/libdvdnav") | |
168 | (synopsis (package-synopsis libdvdnav)) | |
169 | (description (package-description libdvdnav)) | |
170 | (license license:gpl2+)))) | |
171 | ||
172 | (define libdvdread/kodi | |
e3407254 | 173 | (let ((commit "6.0.0-Leia-Alpha-3")) |
f69e2034 MB |
174 | (package |
175 | (name "libdvdread-bootstrapped") | |
176 | (version commit) | |
177 | (source (origin | |
178 | (method git-fetch) | |
179 | (uri (git-reference | |
180 | (url "https://github.com/xbmc/libdvdread.git") | |
181 | (commit commit))) | |
182 | (file-name (string-append name "-" version "-checkout")) | |
183 | (sha256 | |
184 | (base32 | |
e3407254 | 185 | "1xxn01mhkdnp10cqdr357wx77vyzfb5glqpqyg8m0skyi75aii59")))) |
f69e2034 MB |
186 | (build-system gnu-build-system) |
187 | (arguments | |
188 | '(#:tests? #f | |
189 | #:phases | |
190 | (modify-phases %standard-phases | |
f69e2034 MB |
191 | (delete 'configure) |
192 | (delete 'build) | |
193 | (replace 'install | |
194 | (lambda* (#:key outputs #:allow-other-keys) | |
195 | (copy-recursively "." (assoc-ref outputs "out")) | |
196 | #t))))) | |
197 | (native-inputs | |
198 | `(("autoconf" ,autoconf) | |
199 | ("automake" ,automake) | |
200 | ("libtool" ,libtool) | |
201 | ("pkg-config" ,pkg-config))) | |
202 | (home-page "https://github.com/xbmc/libdvdread") | |
203 | (synopsis (package-synopsis libdvdread)) | |
204 | (description (package-description libdvdread)) | |
205 | (license (list license:gpl2+ license:lgpl2.1+))))) | |
206 | ||
207 | (define libdvdcss/kodi | |
e3407254 | 208 | (let ((commit "1.4.2-Leia-Beta-5")) |
f69e2034 MB |
209 | (package |
210 | (name "libdvdcss-bootstrapped") | |
211 | (version commit) | |
212 | (source (origin | |
213 | (method git-fetch) | |
214 | (uri (git-reference | |
215 | (url "https://github.com/xbmc/libdvdcss.git") | |
216 | (commit commit))) | |
217 | (file-name (string-append name "-" version "-checkout")) | |
218 | (sha256 | |
219 | (base32 | |
e3407254 | 220 | "0j41ydzx0imaix069s3z07xqw9q95k7llh06fc27dcn6f7b8ydyl")))) |
f69e2034 MB |
221 | (build-system gnu-build-system) |
222 | (arguments | |
223 | '(#:tests? #f | |
224 | #:phases | |
225 | (modify-phases %standard-phases | |
f69e2034 MB |
226 | (delete 'configure) |
227 | (delete 'build) | |
228 | (replace 'install | |
229 | (lambda* (#:key outputs #:allow-other-keys) | |
230 | (copy-recursively "." (assoc-ref outputs "out")) | |
231 | #t))))) | |
232 | (native-inputs | |
233 | `(("autoconf" ,autoconf) | |
234 | ("automake" ,automake) | |
235 | ("libtool" ,libtool) | |
236 | ("pkg-config" ,pkg-config))) | |
237 | (home-page "https://github.com/xbmc/libdvdcss") | |
238 | (synopsis (package-synopsis libdvdcss)) | |
239 | (description (package-description libdvdcss)) | |
240 | (license license:gpl2+)))) | |
241 | ||
988b78ba EF |
242 | (define-public fstrcmp |
243 | (package | |
244 | (name "fstrcmp") | |
245 | (version "0.7.D001") | |
246 | (source | |
247 | (origin | |
248 | (method url-fetch) | |
249 | (uri (string-append "http://fstrcmp.sourceforge.net/fstrcmp-" | |
250 | version ".tar.gz")) | |
251 | (sha256 | |
252 | (base32 | |
253 | "0xilghiy3mz78bjmfldi39qyy7jvw5b6wafsx370lw401y2qw0g4")))) | |
254 | (build-system gnu-build-system) | |
255 | (home-page "http://fstrcmp.sourceforge.net/") | |
256 | (arguments | |
257 | '(#:configure-flags '("SH=sh"))) | |
258 | (native-inputs | |
259 | `(("ghostscript" ,ghostscript) ; ps2pdf | |
260 | ("groff" ,groff) | |
261 | ("libtool" ,libtool) | |
262 | ("which" ,which))) | |
263 | (synopsis "fuzzy comparison of strings") | |
264 | (description | |
265 | "The fstrcmp project provides a library that is used to make fuzzy | |
266 | comparisons of strings and byte arrays, including multi-byte character strings. | |
267 | This can be useful in error messages, enabling the suggestion of likely valid | |
268 | alternatives. In compilers, this can reduce the cascade of secondary errors.") | |
269 | (license license:gpl3+))) | |
270 | ||
34f5618b DT |
271 | (define-public kodi |
272 | (package | |
273 | (name "kodi") | |
05e1534e | 274 | (version "18.2") |
34f5618b | 275 | (source (origin |
f69e2034 MB |
276 | (method git-fetch) |
277 | (uri (git-reference | |
278 | (url "https://github.com/xbmc/xbmc.git") | |
e3407254 | 279 | (commit (string-append version "-Leia")))) |
9d2749f6 | 280 | (file-name (git-file-name name version)) |
34f5618b DT |
281 | (sha256 |
282 | (base32 | |
05e1534e | 283 | "1yzi8171p1mnszyf80lqkl05ql25n73s5gn8pcgvv4jph4yvasnq")) |
3e4e74c1 CZ |
284 | (patches (search-patches "kodi-skip-test-449.patch" |
285 | "kodi-set-libcurl-ssl-parameters.patch")) | |
34f5618b | 286 | (snippet |
34f5618b DT |
287 | '(begin |
288 | (use-modules (guix build utils)) | |
f69e2034 | 289 | (for-each delete-file-recursively |
e3407254 | 290 | '("project/BuildDependencies/" |
f69e2034 MB |
291 | ;; TODO: Purge these jars. |
292 | ;;"tools/codegenerator/groovy" | |
293 | ;; And these sources: | |
294 | ;; "tools/depend/native/JsonSchemaBuilder" | |
295 | ;; "tools/depend/native/TexturePacker" | |
f69e2034 MB |
296 | ;; "lib/gtest" |
297 | ;; "lib/cpluff" | |
f69e2034 MB |
298 | ;; "lib/libUPnP" |
299 | "lib/libUPnP/Neptune/ThirdParty" | |
300 | "project/Win32BuildSetup/tools/7z")) | |
301 | #t)) | |
34f5618b | 302 | (modules '((guix build utils))))) |
f69e2034 | 303 | (build-system cmake-build-system) |
34f5618b | 304 | (arguments |
f69e2034 MB |
305 | '(#:modules ((srfi srfi-1) |
306 | (guix build cmake-build-system) | |
307 | (guix build utils)) | |
308 | #:configure-flags | |
309 | (list "-DENABLE_INTERNAL_FFMPEG=OFF" | |
310 | "-DENABLE_INTERNAL_CROSSGUID=OFF" | |
311 | (string-append "-Dlibdvdread_URL=" | |
312 | (assoc-ref %build-inputs "libdvdread-bootstrapped")) | |
313 | (string-append "-Dlibdvdnav_URL=" | |
314 | (assoc-ref %build-inputs "libdvdnav-bootstrapped")) | |
315 | (string-append "-Dlibdvdcss_URL=" | |
316 | (assoc-ref %build-inputs "libdvdcss-bootstrapped")) | |
4951d2f3 | 317 | (string-append "-DSYSTEM_LDFLAGS=-Wl,-rpath=" |
4ec1f82c | 318 | (assoc-ref %build-inputs "curl") "/lib")) |
34f5618b DT |
319 | #:phases |
320 | (modify-phases %standard-phases | |
f69e2034 MB |
321 | ;; The build system tries to bootstrap these bundled components |
322 | ;; during the regular build phase, which causes serious issues | |
34f5618b DT |
323 | ;; because there's no time for shebangs to be patched. So, we |
324 | ;; bootstrap it on our own instead. | |
f69e2034 MB |
325 | (add-after 'unpack 'bootstrap-bundled-software |
326 | (lambda _ | |
327 | (let ((dirs '("tools/depends/native/JsonSchemaBuilder/src" | |
328 | "lib/cpluff"))) | |
329 | (every (lambda (third-party) | |
330 | (with-directory-excursion third-party | |
93ab9a5d | 331 | (invoke "autoreconf" "-vif"))) |
f69e2034 MB |
332 | dirs)))) |
333 | (add-after 'bootstrap-bundled-software 'patch-stuff | |
8c011737 | 334 | (lambda* (#:key inputs #:allow-other-keys) |
f69e2034 MB |
335 | ;; Prevent the build scripts from calling autoreconf in the |
336 | ;; build stage. Otherwise, it would undo the bootstrapping | |
337 | ;; and shebang patching that we worked so hard for. | |
338 | (substitute* "cmake/modules/FindCpluff.cmake" | |
339 | (("autoreconf -vif") "true")) | |
340 | (substitute* "lib/cpluff/po/Makefile.in.in" | |
341 | (("/bin/sh") (which "sh"))) | |
342 | (substitute* "cmake/modules/FindLibDvd.cmake" | |
343 | ;; The libdvd* sources that we bootstrapped separately are | |
344 | ;; unpacked in the build phase. This is our best opportunity | |
345 | ;; to make them writable before the build process starts. | |
346 | (("autoreconf -vif") "chmod -R u+w .")) | |
347 | ||
9d2749f6 | 348 | (substitute* "xbmc/platform/linux/LinuxTimezone.cpp" |
8c011737 MB |
349 | (("/usr/share/zoneinfo") |
350 | (string-append (assoc-ref inputs "tzdata") | |
351 | "/share/zoneinfo"))) | |
352 | ||
cbb5d2e1 EF |
353 | ;; Don't phone home to check for updates. |
354 | (substitute* "system/addon-manifest.xml" | |
2c17bd7b EF |
355 | (("<addon optional=\\\"true\\\">service.xbmc.versioncheck</addon>") |
356 | "")) | |
357 | ||
f69e2034 MB |
358 | ;; Let's disable some tests that are known not to work here. |
359 | ;; Doing this later while in the cmake "../build" directory | |
360 | ;; is trickier. | |
34f5618b DT |
361 | (substitute* '("xbmc/utils/test/TestSystemInfo.cpp") |
362 | (("TEST_F\\(TestSystemInfo, GetOsPrettyNameWithVersion\\)") | |
363 | "TEST_F(TestSystemInfo, DISABLED_GetOsPrettyNameWithVersion)") | |
364 | (("TEST_F\\(TestSystemInfo, GetOsName\\)") | |
365 | "TEST_F(TestSystemInfo, DISABLED_GetOsName)") | |
366 | (("TEST_F\\(TestSystemInfo, GetOsVersion\\)") | |
f69e2034 | 367 | "TEST_F(TestSystemInfo, DISABLED_GetOsVersion)")) |
f69e2034 MB |
368 | #t)) |
369 | (add-before 'build 'set-build-environment | |
370 | (lambda _ | |
371 | ;; Some bundled build scripts fall back to /bin/sh | |
372 | ;; if this is not set. | |
373 | (setenv "CONFIG_SHELL" (which "sh")) | |
374 | #t)) | |
375 | (add-before 'check 'build-kodi-test | |
376 | (lambda _ | |
93ab9a5d | 377 | (invoke "make" "kodi-test")))))) |
34f5618b | 378 | ;; TODO: Add dependencies for: |
34f5618b | 379 | ;; - nfs |
f69e2034 MB |
380 | ;; - cec |
381 | ;; - plist | |
382 | ;; - shairplay | |
34f5618b DT |
383 | (native-inputs |
384 | `(("autoconf" ,autoconf) | |
385 | ("automake" ,automake) | |
b94a6ca0 | 386 | ("gettext" ,gettext-minimal) |
d2540f80 | 387 | ("icedtea" ,icedtea) ; needed at build-time only, mandatory |
f69e2034 MB |
388 | ("libdvdcss-bootstrapped" ,libdvdcss/kodi) |
389 | ("libdvdnav-bootstrapped" ,libdvdnav/kodi) | |
390 | ("libdvdread-bootstrapped" ,libdvdread/kodi) | |
34f5618b DT |
391 | ("libtool" ,libtool) |
392 | ("pkg-config" ,pkg-config) | |
393 | ("swig" ,swig) | |
34f5618b DT |
394 | ("yasm" ,yasm))) |
395 | (inputs | |
396 | `(("alsa-lib" ,alsa-lib) | |
397 | ("avahi" ,avahi) | |
398 | ("bluez" ,bluez) | |
9ced12de | 399 | ("crossguid" ,crossguid) |
34f5618b | 400 | ("curl" ,curl) |
9ced12de | 401 | ("dcadec" ,dcadec) |
34f5618b | 402 | ("dbus" ,dbus) |
34f5618b DT |
403 | ("eudev" ,eudev) |
404 | ("ffmpeg" ,ffmpeg) | |
405 | ("flac" ,flac) | |
e3407254 | 406 | ("flatbuffers" ,flatbuffers) |
f69e2034 | 407 | ("fmt" ,fmt) |
34f5618b DT |
408 | ("fontconfig" ,fontconfig) |
409 | ("freetype" ,freetype) | |
410 | ("fribidi" ,fribidi) | |
e3407254 | 411 | ("fstrcmp" ,fstrcmp) |
f69e2034 | 412 | ("giflib" ,giflib) |
34f5618b DT |
413 | ("glew" ,glew) |
414 | ("gnutls" ,gnutls) | |
34f5618b | 415 | ("lame" ,lame) |
f69e2034 | 416 | ("lcms" ,lcms) |
34f5618b DT |
417 | ("libass" ,libass) |
418 | ("libbluray" ,libbluray) | |
419 | ("libcap" ,libcap) | |
420 | ("libcdio" ,libcdio) | |
f69e2034 | 421 | ("libdrm" ,libdrm) |
34f5618b DT |
422 | ("libgcrypt" ,libgcrypt) |
423 | ("libjpeg" ,libjpeg) | |
424 | ("libltdl" ,libltdl) | |
425 | ("libmad" ,libmad) | |
426 | ("libmicrohttpd" ,libmicrohttpd) | |
34f5618b DT |
427 | ("libmpeg2" ,libmpeg2) |
428 | ("libogg" ,libogg) | |
429 | ("libpng" ,libpng) | |
34f5618b DT |
430 | ("libssh" ,libssh) |
431 | ("libtiff" ,libtiff) | |
432 | ("libva" ,libva) | |
433 | ("libvorbis" ,libvorbis) | |
434 | ("libxml2" ,libxml2) | |
34f5618b DT |
435 | ("libxrandr" ,libxrandr) |
436 | ("libxrender" ,libxrender) | |
437 | ("libxslt" ,libxslt) | |
34f5618b | 438 | ("lzo" ,lzo) |
66b9c643 | 439 | ("mariadb" ,mariadb) |
34f5618b DT |
440 | ("openssl" ,openssl) |
441 | ("pcre" ,pcre) | |
442 | ("pulseaudio" ,pulseaudio) | |
443 | ("python" ,python-2) | |
2513aac1 | 444 | ("rapidjson" ,rapidjson) |
34f5618b | 445 | ("samba" ,samba) |
34f5618b DT |
446 | ("sqlite" ,sqlite) |
447 | ("taglib" ,taglib) | |
448 | ("tinyxml" ,tinyxml) | |
8c011737 | 449 | ("tzdata" ,tzdata) |
9ced12de | 450 | ("util-linux" ,util-linux) |
34f5618b DT |
451 | ("zip" ,zip) |
452 | ("zlib" ,zlib))) | |
453 | (synopsis "Media center for home theater computers") | |
454 | (description "Kodi is a media center application for playing videos, | |
455 | music, games, etc. Kodi is highly customizable and features a theme and | |
456 | plug-in system.") | |
9d2749f6 | 457 | (home-page "https://kodi.tv") |
f69e2034 MB |
458 | ;; XBMC is largely GPL2+, with some library components as LGPL2.1+, but |
459 | ;; there are some other licenses spread throughout. | |
460 | (license (list license:gpl2+ license:lgpl2.1+ | |
461 | license:gpl3+ ;WiiRemote client | |
462 | license:expat ;cpluff, dbwrappers | |
463 | license:public-domain ;cpluff/examples | |
464 | license:bsd-3 ;misc, gtest | |
e3407254 | 465 | license:bsd-2)))) ;xbmc/freebsd |
72df48db | 466 | |
b165fe61 MB |
467 | (define-public kodi/wayland |
468 | (package/inherit kodi | |
469 | (name "kodi-wayland") | |
470 | (arguments | |
471 | (substitute-keyword-arguments (package-arguments kodi) | |
472 | ((#:configure-flags flags) | |
473 | `(append '("-DCORE_PLATFORM_NAME=wayland" | |
474 | "-DWAYLAND_RENDER_SYSTEM=gl") | |
475 | ,flags)))) | |
476 | (inputs | |
477 | `(("libinput" ,libinput) | |
478 | ("libxkbcommon" ,libxkbcommon) | |
479 | ("waylandpp" ,waylandpp) | |
480 | ("waylandp-protocols" ,wayland-protocols) | |
481 | ,@(package-inputs kodi))) | |
482 | (synopsis "Kodi with Wayland rendering backend"))) | |
483 | ||
72df48db OP |
484 | (define-public kodi-cli |
485 | (let ((commit "104dc23b2a993c8e6db8c46f4f8bec24b146549b") ; Add support for | |
486 | (revision "1")) ; `$HOME/.kodirc'. | |
487 | (package | |
488 | (name "kodi-cli") | |
489 | (version (string-append "1.1-" revision "." (string-take commit 7))) | |
490 | (source (origin | |
491 | (method git-fetch) | |
492 | (uri (git-reference (url "https://github.com/nawar/kodi-cli") | |
493 | (commit commit))) | |
494 | (sha256 | |
495 | (base32 | |
496 | "1xjhasc5gngfxpr1dlzy6q24w0wpdfjx12p43fanjppxw4i49n5p")) | |
497 | (file-name (string-append name "-" version "-checkout")))) | |
498 | (build-system trivial-build-system) | |
499 | (inputs | |
500 | `(("bash" ,bash) | |
501 | ("curl" ,curl) | |
502 | ("mps-youtube" ,mps-youtube))) | |
503 | (arguments | |
504 | `(#:modules ((guix build utils)) | |
505 | #:builder | |
506 | (begin | |
507 | (use-modules (guix build utils)) | |
508 | (copy-recursively (assoc-ref %build-inputs "source") ".") | |
509 | (substitute* "kodi-cli" | |
510 | (("/bin/bash") (string-append (assoc-ref %build-inputs "bash") | |
511 | "/bin/bash")) | |
512 | (("output=\\$\\((curl)" all curl) | |
513 | (string-append "output=$(" | |
514 | (assoc-ref %build-inputs "curl") | |
515 | "/bin/" curl)) | |
516 | (("play_youtube `(mpsyt)" all mpsyt) | |
517 | (string-append "play_youtube `" | |
518 | (assoc-ref %build-inputs "mps-youtube") | |
519 | "/bin/" mpsyt))) | |
520 | (install-file "kodi-cli" (string-append %output "/bin")) | |
521 | #t))) | |
522 | (home-page "https://github.com/nawar/kodi-cli") | |
523 | (synopsis "Control Kodi from the command line") | |
524 | (description "@code{kodi-cli} is a tool for sending commands to a Kodi | |
525 | server using JSON RPC. | |
526 | ||
527 | Features: | |
528 | ||
529 | @itemize | |
530 | @item Play, pause, stop the currently playing item. | |
531 | @item Skip forward or backward in the currently playing item. | |
532 | @item Play or queue to the currently list of YouTube videos. | |
533 | @item Interactive and noninteractive volume control. | |
534 | @item Interactive navigation. | |
535 | @item Send text to the Kodi keyboard. | |
536 | @item Toggle fullscreen. | |
537 | @item Update or clean Kodi libraries. | |
538 | @end itemize\n") | |
539 | (license license:gpl2+)))) |