gnu: emacs-svg-icon: Fix grammar.
[jackhill/guix/guix.git] / gnu / packages / jami.scm
CommitLineData
15c6e426
JW
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
3;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
4;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
3d913c1e 5;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
15c6e426
JW
6;;;
7;;; This file is part of GNU Guix.
8;;;
9;;; GNU Guix is free software; you can redistribute it and/or modify it
10;;; under the terms of the GNU General Public License as published by
11;;; the Free Software Foundation; either version 3 of the License, or (at
12;;; your option) any later version.
13;;;
14;;; GNU Guix is distributed in the hope that it will be useful, but
15;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;;; GNU General Public License for more details.
18;;;
19;;; You should have received a copy of the GNU General Public License
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22(define-module (gnu packages jami)
23 #:use-module ((guix licenses) #:prefix license:)
24 #:use-module (gnu packages aidc)
25 #:use-module (gnu packages audio)
26 #:use-module (gnu packages autotools)
1c15d305 27 #:use-module (gnu packages backup)
15c6e426 28 #:use-module (gnu packages base)
15c6e426
JW
29 #:use-module (gnu packages crypto)
30 #:use-module (gnu packages documentation)
60e64e28 31 #:use-module (gnu packages freedesktop)
2cfd4770 32 #:use-module (gnu packages gcc)
15c6e426
JW
33 #:use-module (gnu packages gettext)
34 #:use-module (gnu packages glib)
35 #:use-module (gnu packages gnome)
e6b447cf 36 #:use-module (gnu packages graphviz)
15c6e426
JW
37 #:use-module (gnu packages gtk)
38 #:use-module (gnu packages libcanberra)
39 #:use-module (gnu packages linux)
15c6e426 40 #:use-module (gnu packages networking)
15c6e426
JW
41 #:use-module (gnu packages perl)
42 #:use-module (gnu packages pkg-config)
43 #:use-module (gnu packages pulseaudio)
44 #:use-module (gnu packages python)
45 #:use-module (gnu packages qt)
46 #:use-module (gnu packages serialization)
47 #:use-module (gnu packages sqlite)
48 #:use-module (gnu packages telephony)
49 #:use-module (gnu packages tls)
50 #:use-module (gnu packages upnp)
2cfd4770 51 #:use-module (gnu packages version-control)
15c6e426
JW
52 #:use-module (gnu packages video)
53 #:use-module (gnu packages webkit)
54 #:use-module (gnu packages xiph)
55 #:use-module (gnu packages xorg)
56 #:use-module (gnu packages)
57 #:use-module (guix build-system cmake)
58 #:use-module (guix build-system gnu)
e6b447cf 59 #:use-module (guix build-system qt)
15c6e426
JW
60 #:use-module (guix download)
61 #:use-module (guix git-download)
62 #:use-module (guix packages)
2cfd4770 63 #:use-module (guix utils))
15c6e426 64
3d913c1e 65(define %jami-version "20210326.1.cfba013")
15c6e426 66
0531ea98
MC
67(define* (jami-source #:key keep-contrib-patches?)
68 "Return an origin object of the tarball release sources archive of Jami.
69When KEEP-CONTRIB-PATCHES? is #t, do not completely remove the contrib
70subdirectory, which contains patches to be applied to some of the dependencies
71of Jami."
15c6e426
JW
72 (origin
73 (method url-fetch)
aaa199ca 74 (uri (string-append "https://dl.jami.net/release/tarballs/jami_"
15c6e426
JW
75 %jami-version
76 ".tar.gz"))
77 (modules '((guix build utils)))
78 (snippet
0531ea98 79 `(begin
3d913c1e 80 ;; Delete multiple MiBs of bundled tarballs. The contrib directory
0531ea98
MC
81 ;; contains the custom patches for pjproject and other libraries used
82 ;; by Savoir-faire Linux.
83 (if ,keep-contrib-patches?
84 (delete-file-recursively "daemon/contrib/tarballs")
15c6e426 85 (delete-file-recursively "daemon/contrib"))
0531ea98
MC
86 ;; Remove code from unused Jami clients.
87 (for-each delete-file-recursively '("client-android"
3d913c1e
MC
88 "client-electron"
89 "client-ios"
0531ea98 90 "client-macosx"
3d913c1e 91 "client-uwp"))))
15c6e426
JW
92 (sha256
93 (base32
3d913c1e 94 "1h0avma8bdzyznkz39crjyv2888bii4f49md15jg7970dyp5pdyz"))))
15c6e426 95
0531ea98
MC
96(define %sfl-patches (jami-source #:keep-contrib-patches? #t))
97
98(define %jami-sources (jami-source))
99
3d913c1e
MC
100;; Savoir-faire Linux maintains a set of patches for some key dependencies
101;; (currently pjproject and ffmpeg) of Jami that haven't yet been integrated
102;; upstream. This procedure simplifies the process of applying these patches.x
f60699af
JW
103(define jami-apply-dependency-patches
104 '(lambda* (#:key inputs dep-name patches)
105 (let ((patches-directory "sfl-patches"))
106 (mkdir-p patches-directory)
107 (invoke "tar" "-xvf" (assoc-ref inputs "sfl-patches")
108 "-C" patches-directory
109 "--strip-components=5"
110 (string-append "ring-project/daemon/contrib/src/"
111 dep-name))
112 (for-each
113 (lambda (file)
3d913c1e 114 (invoke "patch" "--force" "--ignore-whitespace" "-p1" "-i"
f60699af
JW
115 (string-append patches-directory "/"
116 file ".patch")))
117 patches))))
118
3d913c1e
MC
119;;; Jami maintains pjproject patches that add the ability to do ICE over TCP,
120;;; among other things. The patches are currently based on pjproject 2.10.
15c6e426
JW
121(define-public pjproject-jami
122 (package
123 (inherit pjproject)
124 (name "pjproject-jami")
3d913c1e
MC
125 (version "2.10")
126 (source (origin
127 (method git-fetch)
128 (uri (git-reference
129 (url "https://github.com/pjsip/pjproject")
130 (commit version)))
131 (file-name (git-file-name name version))
132 (sha256
133 (base32
134 "1aklicpgwc88578k03i5d5cm5h8mfm7hmx8vfprchbmaa2p8f4z0"))
135 (patches (search-patches
136 "pjproject-correct-the-cflags-field.patch"
137 "pjproject-fix-pkg-config-ldflags.patch"))))
15c6e426 138 (native-inputs
0531ea98 139 `(("sfl-patches" ,%sfl-patches)
15c6e426
JW
140 ,@(package-native-inputs pjproject)))
141 (arguments
a5b44d99
MC
142 (substitute-keyword-arguments (package-arguments pjproject)
143 ((#:phases phases '%standard-phases)
144 `(modify-phases ,phases
145 (add-after 'make-source-files-writable 'apply-patches
146 (lambda* (#:key inputs #:allow-other-keys)
147 (,jami-apply-dependency-patches
f60699af
JW
148 #:inputs inputs
149 #:dep-name "pjproject"
150 #:patches
2ff4e549
JW
151 '("0001-rfc6544"
152 "0002-rfc2466"
153 "0003-add-tcp-keep-alive"
154 "0004-multiple_listeners"
155 "0005-fix_ebusy_turn"
156 "0006-ignore_ipv6_on_transport_check"
3d913c1e 157 "0007-upnp-srflx-nat-assisted-cand"
2ff4e549 158 "0008-fix_ioqueue_ipv6_sendto"
1c15d305 159 "0009-add-config-site"
3d913c1e
MC
160 ;; Already taken care of via the origin patches.
161 ;;"0010-fix-pkgconfig"
1c15d305 162 "0011-fix-tcp-death-detection"
3d913c1e
MC
163 "0012-fix-turn-shutdown-crash"
164 "0013-Assign-unique-local-preferences-for-candidates-with-"
165 "0014-Add-new-compile-time-setting-PJ_ICE_ST_USE_TURN_PERM"
166 "0015-update-local-preference-for-peer-reflexive-candidate"
167 "0016-use-addrinfo-instead-CFHOST"
168 "0017-CVE-2020-15260"
169 "0018-CVE-2021-21375"))))))))))
15c6e426 170
da358e8c
JW
171;; The following variables are configure flags used by ffmpeg-jami. They're
172;; from the ring-project/daemon/contrib/src/ffmpeg/rules.mak file. We try to
173;; keep it as close to the official Jami package as possible, to provide all
174;; the codecs and extra features that are expected.
175;;
176;; See:
177;; https://review.jami.net/plugins/gitiles/ring-daemon/+/refs/heads/master/contrib/src/ffmpeg/rules.mak
178
179(define %ffmpeg-default-configure-flags
180 '("--disable-everything"
181 "--enable-zlib"
182 "--enable-gpl"
183 "--enable-swscale"
184 "--enable-bsfs"
185 "--disable-filters"
186 "--disable-programs"
187 "--disable-postproc"
188 "--disable-protocols"
189 "--enable-protocol=crypto"
190 "--enable-protocol=file"
191 "--enable-protocol=rtp"
192 "--enable-protocol=srtp"
193 "--enable-protocol=tcp"
194 "--enable-protocol=udp"
195 "--enable-protocol=unix"
196 "--enable-protocol=pipe"
197
198 ;; enable muxers/demuxers
199 "--disable-demuxers"
200 "--disable-muxers"
201 "--enable-muxer=rtp"
202 "--enable-muxer=g722"
203 "--enable-muxer=h263"
204 "--enable-muxer=h264"
205 "--enable-muxer=hevc"
206 "--enable-muxer=webm"
207 "--enable-muxer=ogg"
208 "--enable-muxer=pcm_s16be"
209 "--enable-muxer=pcm_s16le"
210 "--enable-demuxer=rtp"
211 "--enable-demuxer=mjpeg"
212 "--enable-demuxer=mjpeg_2000"
213 "--enable-demuxer=mpegvideo"
214 "--enable-demuxer=gif"
215 "--enable-demuxer=image_jpeg_pipe"
216 "--enable-demuxer=image_png_pipe"
217 "--enable-demuxer=image_webp_pipe"
218 "--enable-demuxer=matroska"
219 "--enable-demuxer=m4v"
220 "--enable-demuxer=mp3"
221 "--enable-demuxer=ogg"
222 "--enable-demuxer=flac"
223 "--enable-demuxer=wav"
224 "--enable-demuxer=ac3"
225 "--enable-demuxer=g722"
226 "--enable-demuxer=pcm_mulaw"
227 "--enable-demuxer=pcm_alaw"
228 "--enable-demuxer=pcm_s16be"
229 "--enable-demuxer=pcm_s16le"
230 "--enable-demuxer=h263"
231 "--enable-demuxer=h264"
232 "--enable-demuxer=hevc"
233
234 ;; enable parsers
235 "--enable-parser=h263"
236 "--enable-parser=h264"
237 "--enable-parser=hevc"
238 "--enable-parser=mpeg4video"
239 "--enable-parser=vp8"
240 "--enable-parser=vp9"
241 "--enable-parser=opus"
242
243 ;; encoders/decoders
244 "--enable-encoder=adpcm_g722"
245 "--enable-decoder=adpcm_g722"
246 "--enable-encoder=rawvideo"
247 "--enable-decoder=rawvideo"
248 "--enable-encoder=libx264"
249 "--enable-decoder=h264"
250 "--enable-encoder=pcm_alaw"
251 "--enable-decoder=pcm_alaw"
252 "--enable-encoder=pcm_mulaw"
253 "--enable-decoder=pcm_mulaw"
254 "--enable-encoder=mpeg4"
255 "--enable-decoder=mpeg4"
256 "--enable-encoder=libvpx_vp8"
257 "--enable-decoder=vp8"
258 "--enable-decoder=vp9"
259 "--enable-encoder=h263"
260 "--enable-encoder=h263p"
261 "--enable-decoder=h263"
262 "--enable-encoder=mjpeg"
263 "--enable-decoder=mjpeg"
264 "--enable-decoder=mjpegb"
265 "--enable-libspeex"
266 "--enable-libopus"
267 "--enable-libvpx"
268 "--enable-libx264"
269 "--enable-encoder=libspeex"
270 "--enable-decoder=libspeex"
271 "--enable-encoder=libopus"
272 "--enable-decoder=libopus"
273
274 ;; decoders for ringtones and audio streaming
275 "--enable-decoder=flac"
276 "--enable-decoder=vorbis"
277 "--enable-decoder=aac"
278 "--enable-decoder=ac3"
279 "--enable-decoder=eac3"
280 "--enable-decoder=mp3"
281 "--enable-decoder=pcm_u24be"
282 "--enable-decoder=pcm_u24le"
283 "--enable-decoder=pcm_u32be"
284 "--enable-decoder=pcm_u32le"
285 "--enable-decoder=pcm_u8"
286 "--enable-decoder=pcm_f16le"
287 "--enable-decoder=pcm_f24le"
288 "--enable-decoder=pcm_f32be"
289 "--enable-decoder=pcm_f32le"
290 "--enable-decoder=pcm_f64be"
291 "--enable-decoder=pcm_f64le"
292 "--enable-decoder=pcm_s16be"
293 "--enable-decoder=pcm_s16be_planar"
294 "--enable-decoder=pcm_s16le"
295 "--enable-decoder=pcm_s16le_planar"
296 "--enable-decoder=pcm_s24be"
297 "--enable-decoder=pcm_s24le"
298 "--enable-decoder=pcm_s24le_planar"
299 "--enable-decoder=pcm_s32be"
300 "--enable-decoder=pcm_s32le"
301 "--enable-decoder=pcm_s32le_planar"
302 "--enable-decoder=pcm_s64be"
303 "--enable-decoder=pcm_s64le"
304 "--enable-decoder=pcm_s8"
305 "--enable-decoder=pcm_s8_planar"
306 "--enable-decoder=pcm_u16be"
307 "--enable-decoder=pcm_u16le"
308
309 ;; encoders/decoders for images
310 "--enable-encoder=gif"
311 "--enable-decoder=gif"
312 "--enable-encoder=jpegls"
313 "--enable-decoder=jpegls"
314 "--enable-encoder=ljpeg"
315 "--enable-decoder=jpeg2000"
316 "--enable-encoder=png"
317 "--enable-decoder=png"
318 "--enable-encoder=bmp"
319 "--enable-decoder=bmp"
320 "--enable-encoder=tiff"
321 "--enable-decoder=tiff"
322
323 ;; filters
324 "--enable-filter=scale"
325 "--enable-filter=overlay"
326 "--enable-filter=amix"
327 "--enable-filter=amerge"
328 "--enable-filter=aresample"
329 "--enable-filter=format"
330 "--enable-filter=aformat"
331 "--enable-filter=fps"
332 "--enable-filter=transpose"
333 "--enable-filter=pad"))
334
335(define %ffmpeg-linux-configure-flags
336 '("--enable-pic"
337 "--extra-cxxflags=-fPIC"
338 "--extra-cflags=-fPIC"
339 "--target-os=linux"
340 "--enable-indev=v4l2"
341 "--enable-indev=xcbgrab"
342 "--enable-vdpau"
343 "--enable-hwaccel=h264_vdpau"
344 "--enable-hwaccel=mpeg4_vdpau"
345 "--enable-vaapi"
346 "--enable-hwaccel=h264_vaapi"
347 "--enable-hwaccel=mpeg4_vaapi"
348 "--enable-hwaccel=h263_vaapi"
349 "--enable-hwaccel=vp8_vaapi"
350 "--enable-hwaccel=mjpeg_vaapi"
351 "--enable-hwaccel=hevc_vaapi"
352 "--enable-encoder=h264_vaapi"
353 "--enable-encoder=vp8_vaapi"
354 "--enable-encoder=mjpeg_vaapi"
355 "--enable-encoder=hevc_vaapi"))
356
357;; ffnvcodec is not supported on ARM then we enable it here for i386 and
358;; x86_64 architectures.
359(define %ffmpeg-linux-x86-configure-flags
360 '("--arch=x86"
361 "--enable-cuvid"
362 "--enable-ffnvcodec"
363 "--enable-nvdec"
364 "--enable-nvenc"
365 "--enable-hwaccel=h264_nvdec"
366 "--enable-hwaccel=hevc_nvdec"
367 "--enable-hwaccel=vp8_nvdec"
368 "--enable-hwaccel=mjpeg_nvdec"
369 "--enable-encoder=h264_nvenc"
370 "--enable-encoder=hevc_nvenc"))
371
372;; This procedure composes the configure flags list for ffmpeg-jami.
373(define (ffmpeg-compose-configure-flags)
374 (define (system=? s)
375 (string-prefix? s (%current-system)))
376
377 `(,@%ffmpeg-default-configure-flags
378 ,@(if (string-contains (%current-system) "linux")
379 (if (or (system=? "i686")
380 (system=? "x86_64"))
381 (append %ffmpeg-linux-configure-flags
382 %ffmpeg-linux-x86-configure-flags)
383 %ffmpeg-linux-configure-flags)
384 '())))
385
386(define-public ffmpeg-jami
1a265842 387 (package/inherit ffmpeg
da358e8c
JW
388 (name "ffmpeg-jami")
389 (native-inputs
0531ea98 390 `(("sfl-patches" ,%sfl-patches)
da358e8c
JW
391 ("libiconv" ,libiconv)
392 ,@(package-native-inputs ffmpeg)))
393 (supported-systems '("x86_64-linux" "i686-linux"
394 "aarch64-linux" "armhf-linux"))
395 (arguments
396 (append
397 '(#:tests? #f)
398 (substitute-keyword-arguments (package-arguments ffmpeg)
399 ((#:configure-flags '())
400 (ffmpeg-compose-configure-flags))
401 ((#:phases phases)
402 `(modify-phases ,phases
403 (add-after 'unpack 'make-git-checkout-writable
404 (lambda _
3f742c77 405 (for-each make-file-writable (find-files "."))))
da358e8c
JW
406 (add-after 'unpack 'apply-patches
407 (lambda* (#:key inputs #:allow-other-keys)
408 (let ((jami-apply-dependency-patches
409 ,jami-apply-dependency-patches))
410 ;; These patches come from:
411 ;; "ring-project/daemon/contrib/src/ffmpeg/rules.mak".
3f742c77
MC
412 (jami-apply-dependency-patches
413 #:inputs inputs
414 #:dep-name "ffmpeg"
415 #:patches
416 '("remove-mjpeg-log"
417 "change-RTCP-ratio"
418 "rtp_ext_abs_send_time"
419 "libopusdec-enable-FEC"
420 "libopusenc-enable-FEC"))))))))))))
da358e8c 421
15c6e426
JW
422(define-public libring
423 (package
424 (name "libring")
425 (version %jami-version)
0531ea98 426 (source %jami-sources)
15c6e426 427 (build-system gnu-build-system)
591c9303 428 (outputs '("out" "debug"))
15c6e426 429 (inputs
15c6e426 430 `(("alsa-lib" ,alsa-lib)
2cfd4770 431 ("asio" ,asio)
15c6e426
JW
432 ("dbus-c++" ,dbus-c++)
433 ("eudev" ,eudev)
da358e8c 434 ("ffmpeg" ,ffmpeg-jami)
15c6e426
JW
435 ("jack" ,jack-1)
436 ("jsoncpp" ,jsoncpp)
1c15d305 437 ("libarchive" ,libarchive)
2cfd4770 438 ("libgit2" ,libgit2)
63e6f1cd 439 ("libnatpmp" ,libnatpmp)
2cfd4770
MC
440 ("libsecp256k1" ,libsecp256k1)
441 ("libupnp" ,libupnp)
15c6e426 442 ("opendht" ,opendht)
2cfd4770
MC
443 ("openssl" ,openssl)
444 ("pjproject" ,pjproject-jami)
15c6e426 445 ("pulseaudio" ,pulseaudio)
15c6e426
JW
446 ("speex" ,speex)
447 ("speexdsp" ,speexdsp)
2cfd4770
MC
448 ("webrtc-audio-processing" ,webrtc-audio-processing)
449 ("yaml-cpp" ,yaml-cpp)))
15c6e426
JW
450 (native-inputs
451 `(("autoconf" ,autoconf)
452 ("automake" ,automake)
2cfd4770 453 ("gcc" ,gcc-8) ;charconv requires GCC 8.1+
15c6e426 454 ("libtool" ,libtool)
2cfd4770 455 ("perl" ,perl) ;to generate manpages with pod2man
15c6e426 456 ("pkg-config" ,pkg-config)
2cfd4770 457 ("which" ,which)))
15c6e426
JW
458 (arguments
459 `(#:tests? #f ; The tests fail to compile due to missing headers.
2cfd4770 460 #:make-flags '("V=1") ;build verbosely
15c6e426
JW
461 #:phases
462 (modify-phases %standard-phases
463 (add-after 'unpack 'change-directory
464 (lambda _
2cfd4770 465 (chdir "daemon")))
15c6e426
JW
466 (add-before 'build 'add-lib-dir
467 (lambda _
2cfd4770
MC
468 (mkdir-p "src/lib"))))))
469 (synopsis "Jami core library and daemon")
470 (description "This package provides a library and daemon implementing the
471Jami core functionality. Jami is a secure and distributed voice, video and
472chat communication platform that requires no centralized server and leaves the
473power of privacy in the hands of the user. It supports the SIP and IAX
474protocols, as well as decentralized calling using P2P-DHT.")
15c6e426
JW
475 (home-page "https://jami.net/")
476 (license license:gpl3+)))
477
478(define-public libringclient
479 (package
15c6e426 480 (name "libringclient")
40a5f790
MC
481 (version %jami-version)
482 (source %jami-sources)
15c6e426 483 (build-system cmake-build-system)
591c9303 484 (outputs '("out" "debug"))
40a5f790
MC
485 (inputs
486 `(("libring" ,libring)
487 ("network-manager" ,network-manager)))
15c6e426 488 (propagated-inputs
40a5f790 489 `(("qtbase" ,qtbase))) ; Qt is included in several installed headers.
15c6e426
JW
490 (arguments
491 `(#:tests? #f ; There is no testsuite.
492 #:configure-flags
40a5f790
MC
493 (let ((libring (assoc-ref %build-inputs "libring")))
494 (list (string-append "-DRING_XML_INTERFACES_DIR="
495 libring "/share/dbus-1/interfaces")
496 (string-append "-DRING_BUILD_DIR=" libring "/include")
497 ;; Use LIBWRAP, which removes the requirement on DBus. Qt
498 ;; links with the dbus library in Guix, which expects to find
499 ;; its configuration under /etc rather than /usr/share/dbus-1,
500 ;; which is perhaps the reason the auto-launching of dring
501 ;; doesn't work on foreign distributions.
532c0e74
MC
502
503 ;; FIXME: Disabled for now, as it causes a segfault when
504 ;; attempting video calls (see:
505 ;; https://git.jami.net/savoirfairelinux/ring-lrc/-/issues/466).
506 "-DENABLE_LIBWRAP=false"))
15c6e426
JW
507 #:phases
508 (modify-phases %standard-phases
509 (add-after 'unpack 'change-directory
510 (lambda _
40a5f790
MC
511 (chdir "lrc"))))))
512 (synopsis "Jami client library")
513 (description "This package provides a library common to all Jami clients.
514Jami is a secure and distributed voice, video and chat communication platform
515that requires no centralized server and leaves the power of privacy in the
516hands of the user. It supports the SIP and IAX protocols, as well as
517decentralized calling using P2P-DHT.")
15c6e426
JW
518 (home-page "https://jami.net")
519 (license license:gpl3+)))
520
60e64e28 521(define-public jami-gnome
15c6e426 522 (package
60e64e28
MC
523 (name "jami-gnome")
524 (version %jami-version)
525 (source %jami-sources)
15c6e426 526 (build-system cmake-build-system)
591c9303 527 (outputs '("out" "debug"))
15c6e426 528 (inputs
60e64e28 529 `(("clutter" ,clutter)
15c6e426 530 ("clutter-gtk" ,clutter-gtk)
60e64e28 531 ("gtk+" ,gtk+)
15c6e426 532 ("libcanberra" ,libcanberra)
60e64e28
MC
533 ("libappindicator" ,libappindicator)
534 ("libnotify" ,libnotify)
535 ("libringclient" ,libringclient)
536 ("network-manager" ,network-manager)
537 ("qrencode" ,qrencode)
538 ("sqlite" ,sqlite)
539 ("webkitgtk" ,webkitgtk)))
15c6e426
JW
540 (native-inputs
541 `(("pkg-config" ,pkg-config)
f06eefa3 542 ("gettext" ,gettext-minimal)
60e64e28 543 ("glib:bin" ,glib "bin"))) ;for glib-compile-resources
15c6e426 544 (propagated-inputs
60e64e28
MC
545 `(("libring" ,libring) ; Contains 'dring', the daemon, which is
546 ; automatically started by DBus.
547 ("adwaita-icon-theme" ,adwaita-icon-theme)))
15c6e426
JW
548 (arguments
549 `(#:tests? #f ; There is no testsuite.
550 #:phases
551 (modify-phases %standard-phases
552 (add-after 'unpack 'change-directory
553 (lambda _
60e64e28
MC
554 (chdir "client-gnome"))))))
555 (synopsis "Jami client for GNOME")
556 (description "This package provides a Jami client for the GNOME desktop.
557Jami is a secure and distributed voice, video and chat communication platform
558that requires no centralized server and leaves the power of privacy in the
559hands of the user. It supports the SIP and IAX protocols, as well as
560decentralized calling using P2P-DHT.")
15c6e426
JW
561 (home-page "https://jami.net")
562 (license license:gpl3+)))
60e64e28
MC
563
564;;; Keep this until the Qt client matures enough to become the
565;;; main 'jami' client.
566(define-public jami
567 (deprecated-package "jami" jami-gnome))
e6b447cf
MC
568
569(define-public jami-qt
570 (package
571 (name "jami-qt") ;to be renamed 'jami' at some point
572 (version %jami-version)
573 ;; The Qt client code is not yet part of the release tarball; fetch it
574 ;; from git for now.
575 (source (origin
576 (method git-fetch)
577 (uri (git-reference
578 (url "https://git.jami.net/savoirfairelinux/jami-client-qt.git")
579 (commit "ae21c17da5e8f730ae3895ccbc4da8047e3be1eb")))
580 (file-name (git-file-name name version))
581 (sha256
582 (base32
583 "1rf3lpk8c4qc12pi6pn4rdp7i8b83xv64yqr0q47rzv9s518qyjp"))))
584 (build-system qt-build-system)
591c9303 585 (outputs '("out" "debug"))
e6b447cf
MC
586 (arguments
587 `(#:tests? #f ;no test suite
59134f1e
MC
588 ;; TODO: Uncomment after switching back to the tarball source.
589 ;; #:phases
590 ;; (modify-phases %standard-phases
591 ;; (add-after 'unpack 'change-directory
592 ;; (lambda _
593 ;; (chdir "client-qt"))))
594 ))
e6b447cf
MC
595 (native-inputs
596 `(("pkg-config" ,pkg-config)
597 ("qttools" ,qttools)
598 ("doxygen" ,doxygen)
599 ("graphviz" ,graphviz)))
600 (inputs
601 `(("libringclient" ,libringclient)
602 ("network-manager" ,network-manager)
603 ("qrencode" ,qrencode)
604 ("qtsvg" ,qtsvg)
605 ("qtwebengine" ,qtwebengine)
606 ("qtwebchannel" ,qtwebchannel)
607 ("qtmultimedia" ,qtmultimedia)
608 ("qtdeclarative" ,qtdeclarative)
609 ("qtgraphicaleffects" ,qtgraphicaleffects)
610 ("qtquickcontrols" ,qtquickcontrols)
611 ("qtquickcontrols2" ,qtquickcontrols2)))
612 (propagated-inputs
613 `(("libring" ,libring))) ;for dring
614 (home-page "https://jami.net")
615 (synopsis "Qt Jami client")
616 (description "This package provides the Jami Qt client. Jami is a secure
617and distributed voice, video and chat communication platform that requires no
618centralized server and leaves the power of privacy in the hands of the user.
619It supports the SIP and IAX protocols, as well as decentralized calling using
620P2P-DHT.")
621 (license license:gpl3+)))