Commit | Line | Data |
---|---|---|
8fd3de0b | 1 | ;;; GNU Guix --- Functional package management for GNU |
63af948f AE |
2 | ;;; Copyright © 2014 John Darrington <jmd@gnu.org> |
3 | ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> | |
3c9e35cc | 4 | ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com> |
6439c340 | 5 | ;;; Copyright © 2015, 2016, 2020 Efraim Flashner <efraim@flashner.co.il> |
4ff20605 | 6 | ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> |
319ac02b | 7 | ;;; Copyright © 2016 Francesco Frassinelli <fraph24@gmail.com> |
47956fa0 | 8 | ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> |
5a103bb8 | 9 | ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net> |
7616d75f | 10 | ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> |
bd4b6f41 | 11 | ;;; Copyright © 2017 Adonay Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info> |
b61cb244 | 12 | ;;; Copyright © 2018 Jovany Leandro G.C <bit4bit@riseup.net> |
bd4b6f41 PN |
13 | ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de> |
14 | ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> | |
fbcd60dd | 15 | ;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl> |
a21d9b8d | 16 | ;;; Copyright © 2019 Ivan Vilata i Balaguer <ivan@selidor.net> |
494135d5 | 17 | ;;; Copyright © 2020 Brett Gilio <brettg@gnu.org> |
ba726ebc | 18 | ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> |
d82539d3 RG |
19 | ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org> |
20 | ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> | |
28c0a2d4 | 21 | ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> |
8fd3de0b JD |
22 | ;;; |
23 | ;;; This file is part of GNU Guix. | |
24 | ;;; | |
25 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
26 | ;;; under the terms of the GNU General Public License as published by | |
27 | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
28 | ;;; your option) any later version. | |
29 | ;;; | |
30 | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
31 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
32 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
33 | ;;; GNU General Public License for more details. | |
34 | ;;; | |
35 | ;;; You should have received a copy of the GNU General Public License | |
36 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
37 | ||
38 | (define-module (gnu packages telephony) | |
39 | #:use-module (gnu packages) | |
d82539d3 | 40 | #:use-module (gnu packages admin) |
c771b799 | 41 | #:use-module (gnu packages aidc) |
d82539d3 | 42 | #:use-module (gnu packages algebra) |
4ff20605 | 43 | #:use-module (gnu packages autotools) |
faa29e4b | 44 | #:use-module (gnu packages avahi) |
bd4b6f41 PN |
45 | #:use-module (gnu packages audio) |
46 | #:use-module (gnu packages base) | |
faa29e4b | 47 | #:use-module (gnu packages boost) |
80e2524c | 48 | #:use-module (gnu packages check) |
bd4b6f41 PN |
49 | #:use-module (gnu packages compression) |
50 | #:use-module (gnu packages crypto) | |
266ad5d7 | 51 | #:use-module (gnu packages databases) |
d82539d3 | 52 | #:use-module (gnu packages docbook) |
c771b799 | 53 | #:use-module (gnu packages documentation) |
b61cb244 | 54 | #:use-module (gnu packages file) |
faa29e4b | 55 | #:use-module (gnu packages protobuf) |
c771b799 | 56 | #:use-module (gnu packages gettext) |
a21d9b8d | 57 | #:use-module (gnu packages gl) |
bd4b6f41 | 58 | #:use-module (gnu packages glib) |
c771b799 | 59 | #:use-module (gnu packages gnome) |
8fd3de0b | 60 | #:use-module (gnu packages gnupg) |
c771b799 | 61 | #:use-module (gnu packages gtk) |
d82539d3 | 62 | #:use-module (gnu packages image) |
c771b799 | 63 | #:use-module (gnu packages libcanberra) |
e5463baf | 64 | #:use-module (gnu packages linphone) |
3c9e35cc | 65 | #:use-module (gnu packages linux) |
319ac02b FF |
66 | #:use-module (gnu packages multiprecision) |
67 | #:use-module (gnu packages ncurses) | |
d82539d3 | 68 | #:use-module (gnu packages netpbm) |
bd4b6f41 PN |
69 | #:use-module (gnu packages networking) |
70 | #:use-module (gnu packages pcre) | |
71 | #:use-module (gnu packages perl) | |
8fd3de0b | 72 | #:use-module (gnu packages pkg-config) |
faa29e4b | 73 | #:use-module (gnu packages pulseaudio) |
bd4b6f41 | 74 | #:use-module (gnu packages python) |
faa29e4b | 75 | #:use-module (gnu packages qt) |
bd4b6f41 | 76 | #:use-module (gnu packages serialization) |
faa29e4b | 77 | #:use-module (gnu packages speech) |
99e6f9c8 | 78 | #:use-module (gnu packages tls) |
bd4b6f41 PN |
79 | #:use-module (gnu packages upnp) |
80 | #:use-module (gnu packages video) | |
c771b799 | 81 | #:use-module (gnu packages webkit) |
319ac02b | 82 | #:use-module (gnu packages xiph) |
faa29e4b | 83 | #:use-module (gnu packages xorg) |
b61cb244 JL |
84 | #:use-module (gnu packages xml) |
85 | #:use-module (gnu packages readline) | |
86 | #:use-module (gnu packages bison) | |
87 | #:use-module (gnu packages flex) | |
974aaf71 | 88 | #:use-module ((guix licenses) #:prefix license:) |
8fd3de0b JD |
89 | #:use-module (guix packages) |
90 | #:use-module (guix download) | |
b61cb244 JL |
91 | #:use-module (guix git-download) |
92 | #:use-module (guix build-system cmake) | |
a21d9b8d IVB |
93 | #:use-module (guix build-system gnu) |
94 | #:use-module (guix build-system qt)) | |
8fd3de0b | 95 | |
82058bf3 RG |
96 | (define-public libilbc |
97 | (package | |
98 | (name "libilbc") | |
99 | (version "2.0.2") | |
100 | (source | |
101 | (origin | |
102 | (method git-fetch) | |
103 | (uri | |
104 | (git-reference | |
105 | (url "https://github.com/TimothyGu/libilbc.git") | |
106 | (commit | |
107 | (string-append "v" version)))) | |
108 | (file-name | |
109 | (git-file-name name version)) | |
110 | (sha256 | |
111 | (base32 | |
112 | "1j1pn1w1198qvdiq2hgv9hkyq2nqcvmfnwlgppac633idkjnjrqx")))) | |
113 | (build-system cmake-build-system) | |
114 | (arguments | |
115 | `(#:tests? #f)) ; No target | |
116 | (native-inputs | |
117 | `(("pkg-config" ,pkg-config))) | |
118 | (synopsis "Libre iLBC codec") | |
119 | (description "LibiLBC is a packaging friendly copy of the iLBC codec from | |
120 | the WebRTC project. It provides a base for distribution packages and can be | |
121 | used as drop-in replacement for the non-free code from RFC 3591.") | |
122 | (home-page "https://github.com/TimothyGu/libilbc") | |
123 | (license license:bsd-3))) | |
124 | ||
d82539d3 RG |
125 | (define-public spandsp |
126 | (package | |
127 | (name "spandsp") | |
128 | (version "0.0.6") | |
129 | (source | |
130 | (origin | |
131 | (method url-fetch) | |
132 | (uri | |
133 | ;; The original upstream has been down since the end of March 2020. | |
134 | (string-append "https://web.archive.org/web/20180626203108/" | |
135 | "https://www.soft-switch.org/downloads/" name "/" | |
136 | name "-" version ".tar.gz")) | |
137 | (sha256 | |
138 | (base32 "0rclrkyspzk575v8fslzjpgp4y2s4x7xk3r55ycvpi4agv33l1fc")))) | |
139 | (build-system gnu-build-system) | |
140 | (outputs '("out" "doc" "static")) ;doc contains HTML documentation | |
141 | (arguments | |
142 | `(#:configure-flags '("--enable-doc=yes" "--enable-tests=yes") | |
e8a1c5af | 143 | #:parallel-build? #f ;non-deterministic build failures may occur otherwise |
d82539d3 RG |
144 | #:parallel-tests? #f ;fails removing the same the files twice otherwise |
145 | #:phases (modify-phases %standard-phases | |
146 | (add-after 'unpack 'patch-configure.ac | |
147 | (lambda _ | |
148 | ;; spandsp looks at hard coded locations of the FHS to | |
149 | ;; find libxml2. | |
150 | (substitute* "configure.ac" | |
151 | (("AC_MSG_CHECKING\\(for libxml/xmlmemory\\.h.*" all) | |
152 | (string-append all | |
153 | "PKG_CHECK_MODULES(XML2, libxml-2.0)\n" | |
154 | "CPPFLAGS+=\" $XML2_CFLAGS\"\n"))) | |
155 | ;; Force a regeneration of the autotools build system. | |
156 | (delete-file "autogen.sh") | |
157 | (delete-file "configure") | |
158 | #t)) | |
159 | (add-after 'unpack 'do-not-install-data-files | |
160 | ;; The .tiff images produced for tests are not | |
161 | ;; reproducible and it is not desirable to have those | |
162 | ;; distributed. | |
163 | (lambda _ | |
164 | (substitute* '("test-data/itu/fax/Makefile.am" | |
165 | "test-data/etsi/fax/Makefile.am") | |
166 | (("nobase_data_DATA") | |
167 | "noinst_DATA")) | |
168 | #t)) | |
169 | (add-after 'install 'install-doc | |
170 | (lambda* (#:key outputs #:allow-other-keys) | |
171 | (let ((doc (string-append (assoc-ref outputs "doc") | |
172 | "/share/doc/" ,name "-" ,version))) | |
173 | (copy-recursively "doc/t38_manual" doc) | |
174 | #t))) | |
175 | (add-after 'install 'move-static-libraries | |
176 | (lambda* (#:key outputs #:allow-other-keys) | |
177 | (let ((out (assoc-ref outputs "out")) | |
178 | (static (assoc-ref outputs "static"))) | |
179 | (mkdir-p (string-append static "/lib")) | |
180 | (with-directory-excursion out | |
181 | (for-each (lambda (file) | |
182 | (rename-file file | |
183 | (string-append static "/" | |
184 | file))) | |
185 | (find-files "lib" "\\.a$"))) | |
186 | #t)))))) | |
187 | (native-inputs | |
188 | `(("autoconf" ,autoconf) | |
189 | ("automake" ,automake) | |
190 | ("libtool" ,libtool) | |
191 | ("pkg-config" ,pkg-config) | |
192 | ;; For the tests | |
193 | ("fftw" ,fftw) | |
194 | ("libpcap" ,libpcap) | |
195 | ("libsndfile" ,libsndfile) | |
e66d5d6e | 196 | ("libjpeg" ,libjpeg-turbo) ;XXX: should be propagated from libtiff |
d82539d3 RG |
197 | ("libtiff" ,libtiff) |
198 | ("netpbm" ,netpbm) | |
199 | ("sox" ,sox) | |
200 | ;; For the documentation | |
201 | ("docbook-xml" ,docbook-xml-4.3) | |
202 | ("docbook-xsl" ,docbook-xsl) | |
203 | ("doxygen" ,doxygen) | |
204 | ("libxml2" ,libxml2) | |
205 | ("libxslt" ,libxslt))) | |
206 | (synopsis "DSP library for telephony") | |
207 | (description "SpanDSP is a library of DSP functions for telephony, in the | |
208 | 8000 sample per second world of E1s, T1s, and higher order PCM channels. It | |
209 | contains low level functions, such as basic filters. It also contains higher | |
210 | level functions, such as cadenced supervisory tone detection, and a complete | |
211 | software FAX machine.") | |
212 | (home-page "https://web.archive.org/web/20180626203108/\ | |
213 | https://www.soft-switch.org/index.html") | |
214 | (license (list license:lgpl2.1+ ;for the library | |
215 | license:gpl2+)))) ;for the test suites and support programs | |
216 | ||
8fd3de0b JD |
217 | (define-public commoncpp |
218 | (package | |
219 | (name "commoncpp") | |
220 | (version "1.8.1") | |
221 | (source (origin | |
222 | (method url-fetch) | |
223 | (uri (string-append "mirror://gnu/" name "/commoncpp2-" | |
224 | version ".tar.gz")) | |
225 | (sha256 (base32 | |
226 | "0kmgr5w3b1qwzxnsnw94q6rqs0hr8nbv9clf07ca2a2fyypx9kjk")))) | |
227 | (arguments | |
228 | `(#:phases | |
dc1d3cde KK |
229 | (modify-phases %standard-phases |
230 | (add-before 'configure 'pre-configure | |
231 | (lambda _ | |
232 | (substitute* "src/applog.cpp" | |
233 | (("^// TODO sc.*") "#include <sys/types.h>\n#include <sys/stat.h>\n")) | |
234 | #t))))) | |
8fd3de0b | 235 | (build-system gnu-build-system) |
12bcf94a | 236 | (synopsis "(u)Common C++ framework for threaded applications") |
8fd3de0b JD |
237 | (description "GNU Common C++ is an portable, optimized class framework for |
238 | threaded applications, supporting concurrent synchronization, inter-process | |
239 | communications via sockets, and various methods for data handling, such as | |
240 | serialization and XML parsing. It includes the uCommon C++ library, a smaller | |
241 | reimplementation.") | |
974aaf71 | 242 | (license license:gpl2+) ; plus runtime exception |
c9508c43 EF |
243 | (properties '((ftp-directory . "/gnu/commoncpp") |
244 | (upstream-name . "commoncpp2"))) | |
6fd52309 | 245 | (home-page "https://www.gnu.org/software/commoncpp/"))) |
8fd3de0b JD |
246 | |
247 | (define-public ucommon | |
248 | (package | |
249 | (name "ucommon") | |
99e6f9c8 | 250 | (version "7.0.0") |
8fd3de0b JD |
251 | (source (origin |
252 | (method url-fetch) | |
253 | (uri (string-append "mirror://gnu/commoncpp/" name "-" | |
254 | version ".tar.gz")) | |
255 | (sha256 (base32 | |
99e6f9c8 | 256 | "1mv080rvrhyxyhgqiqr8r9jdqhg3xhfawjvfj5zgj47h59nggjba")))) |
8fd3de0b | 257 | (build-system gnu-build-system) |
99e6f9c8 | 258 | (inputs `(("gnutls" ,gnutls))) |
35b9e423 EB |
259 | (synopsis "Common C++ framework for threaded applications") |
260 | (description "GNU uCommon C++ is meant as a very light-weight C++ library | |
261 | to facilitate using C++ design patterns even for very deeply embedded | |
262 | applications, such as for systems using uclibc along with posix threading | |
263 | support.") | |
974aaf71 | 264 | (license license:gpl3+) |
6fd52309 | 265 | (home-page "https://www.gnu.org/software/commoncpp/") |
63e8bb12 | 266 | (properties '((ftp-directory . "/gnu/commoncpp"))))) |
8fd3de0b JD |
267 | |
268 | (define-public ccrtp | |
269 | (package | |
270 | (name "ccrtp") | |
9dc9053f | 271 | (version "2.1.2") |
8fd3de0b JD |
272 | (source (origin |
273 | (method url-fetch) | |
274 | (uri (string-append "mirror://gnu/ccrtp/ccrtp-" | |
275 | version ".tar.gz")) | |
276 | (sha256 (base32 | |
9dc9053f | 277 | "17ili8l7zqbbkzr1rcy4hlnazkf50mds41wg6n7bfdsx3c7cldgh")))) |
8fd3de0b JD |
278 | (build-system gnu-build-system) |
279 | (inputs `(("ucommon" ,ucommon) | |
280 | ("libgcrypt" ,libgcrypt))) | |
281 | (native-inputs `(("pkg-config" ,pkg-config))) | |
282 | (synopsis "Implementation of RTP (real-time transport protocol)") | |
283 | (description "GNU ccRTP is an implementation of RTP, the real-time transport | |
284 | protocol from the IETF. It is suitable both for high capacity servers and | |
285 | personal client applications. It is flexible in its design, allowing it to | |
286 | function as a framework for the framework, rather than just being a | |
287 | packet-manipulation library.") | |
974aaf71 | 288 | (license license:gpl2+) ; plus runtime exception |
6fd52309 | 289 | (home-page "https://www.gnu.org/software/ccrtp/"))) |
8fd3de0b | 290 | |
266ad5d7 RG |
291 | (define-public zrtpcpp |
292 | (package | |
293 | (name "zrtpcpp") | |
294 | (version "4.6.6") | |
295 | (source | |
296 | (origin | |
297 | (method git-fetch) | |
298 | (uri | |
299 | (git-reference | |
300 | (url "https://github.com/wernerd/ZRTPCPP.git") | |
301 | (commit | |
302 | (string-append "V" version)))) | |
303 | (file-name | |
304 | (git-file-name name version)) | |
305 | (sha256 | |
306 | (base32 | |
307 | "06vphvh4dgi7ah5qkq53wqvswv8l273x0xwbc447qmgvamm0x1vs")))) | |
308 | (build-system cmake-build-system) | |
309 | (arguments | |
310 | `(#:tests? #f)) ; No target | |
311 | (native-inputs | |
312 | `(("pkg-config" ,pkg-config))) | |
313 | (inputs | |
314 | `(("ccrtp" ,ccrtp) | |
315 | ("ucommon" ,ucommon))) | |
316 | (synopsis "C++ Implementation of ZRTP protocol") | |
317 | (description "GNU ZRTP C++ provides a library that adds ZRTP support to the | |
318 | GNU ccRTP stack and serves as library for other RTP stacks | |
319 | (PJSIP, GStreamer).") | |
320 | (home-page "https://www.gnu.org/software/ccrtp/zrtp") | |
321 | (license license:lgpl3+))) | |
8fd3de0b JD |
322 | |
323 | (define-public osip | |
324 | (package | |
325 | (name "osip") | |
6ecce471 | 326 | (version "5.1.1") |
8fd3de0b JD |
327 | (source (origin |
328 | (method url-fetch) | |
329 | (uri (string-append "mirror://gnu/osip/libosip2-" version ".tar.gz")) | |
75072795 | 330 | (patches (search-patches "osip-CVE-2017-7853.patch")) |
6dfbbd2c LF |
331 | (sha256 |
332 | (base32 | |
6ecce471 | 333 | "0kgnxgzf968kbl6rx3hjsfb3jsg4ydgrsf35gzj319i1f8qjifv1")))) |
8fd3de0b JD |
334 | (build-system gnu-build-system) |
335 | ||
336 | (synopsis "Library implementing SIP (RFC-3261)") | |
337 | (description "GNU oSIP is an implementation of the SIP protocol. It is | |
338 | used to provide multimedia and telecom software developers with an interface | |
339 | to initiate and control SIP sessions.") | |
974aaf71 | 340 | (license license:lgpl2.1+) |
6439c340 EF |
341 | (properties '((ftp-directory . "/gnu/osip") |
342 | (upstream-name . "libosip2"))) | |
6fd52309 | 343 | (home-page "https://www.gnu.org/software/osip/"))) |
8fd3de0b JD |
344 | |
345 | ||
346 | (define-public exosip | |
347 | (package | |
348 | (name "exosip") | |
349 | (version "4.1.0") | |
350 | (source (origin | |
351 | (method url-fetch) | |
966a543b LC |
352 | (uri (string-append "mirror://savannah/exosip/libeXosip2-" |
353 | version ".tar.gz")) | |
8fd3de0b JD |
354 | (sha256 (base32 |
355 | "17cna8kpc8nk1si419vgr6r42k2lda0rdk50vlxrw8rzg0xp2xrw")))) | |
356 | (build-system gnu-build-system) | |
357 | (inputs `(("osip" ,osip))) | |
358 | (synopsis "Sip abstraction library") | |
359 | (description "EXosip is a library that hides the complexity of using the | |
e881752c | 360 | SIP protocol for multimedia session establishment. This protocol is mainly to |
8fd3de0b | 361 | be used by VoIP telephony applications (endpoints or conference server) but |
e881752c | 362 | might be also useful for any application that wish to establish sessions like |
8fd3de0b | 363 | multiplayer games.") |
974aaf71 | 364 | (license license:gpl2+) |
8fd3de0b JD |
365 | ;; (plus OpenSSL linking exception) |
366 | ;; http://git.savannah.gnu.org/cgit/exosip.git/plain/LICENSE.OpenSSL | |
340978d7 | 367 | (home-page "https://savannah.nongnu.org/projects/exosip"))) |
8fd3de0b JD |
368 | |
369 | (define-public sipwitch | |
370 | (package | |
371 | (name "sipwitch") | |
419fa59b | 372 | (version "1.9.15") |
8fd3de0b JD |
373 | (source (origin |
374 | (method url-fetch) | |
375 | (uri (string-append "mirror://gnu/sipwitch/sipwitch-" | |
376 | version ".tar.gz")) | |
377 | (sha256 (base32 | |
419fa59b | 378 | "10lli9c703d7qbarzc0lgmz963ppncvnrklwrnri0s1zcmmahyia")))) |
8fd3de0b | 379 | (build-system gnu-build-system) |
e881752c | 380 | ;; The configure.ac uses pkg-config but in a kludgy way which breaks when |
8fd3de0b JD |
381 | ;; cross-compiling. Among other issues there the program name "pkg-config" |
382 | ;; is hard coded instead of respecting the PKG_CONFIG environment variable. | |
e881752c AK |
383 | ;; Fortunately we can avoid the use of pkg-config and set the dependency |
384 | ;; flags ourselves. | |
385 | (arguments `(#:configure-flags | |
8fd3de0b | 386 | `("--without-pkg-config" |
e881752c | 387 | ,(string-append "UCOMMON_CFLAGS=-I" |
8fd3de0b JD |
388 | (assoc-ref %build-inputs "ucommon") "/include") |
389 | "UCOMMON_LIBS=-lusecure -lucommon -lrt -ldl -lpthread" | |
e881752c | 390 | ,(string-append "LIBOSIP2_CFLAGS=-I" |
8fd3de0b JD |
391 | (assoc-ref %build-inputs "osip") "/include") |
392 | "LIBOSIP2_LIBS=-losipparser2 -losip2" | |
e881752c | 393 | ,(string-append "--sysconfdir=" (assoc-ref %outputs "out") |
8fd3de0b JD |
394 | "/etc") |
395 | "EXOSIP2_LIBS=-leXosip2" | |
e881752c | 396 | ,(string-append "EXOSIP2_CFLAGS=-I" |
8fd3de0b JD |
397 | (assoc-ref %build-inputs "exosip") |
398 | "/include")))) | |
399 | (inputs `(("ucommon" ,ucommon) | |
400 | ("exosip" ,exosip) | |
401 | ("osip" ,osip))) | |
402 | (synopsis "Secure peer-to-peer VoIP server for the SIP protocol") | |
403 | (description "GNU SIP Witch is a peer-to-peer Voice-over-IP server that | |
404 | uses the SIP protocol. Calls can be made from behind NAT firewalls and | |
405 | without the need for a service provider. Its peer-to-peer design ensures that | |
406 | there is no central point for media intercept or capture and thus it can be | |
407 | used to construct a secure telephone system that operates over the public | |
408 | internet.") | |
974aaf71 | 409 | (license license:gpl3+) |
6fd52309 | 410 | (home-page "https://www.gnu.org/software/sipwitch/"))) |
8fd3de0b | 411 | |
3c9e35cc DH |
412 | (define-public libsrtp |
413 | (package | |
414 | (name "libsrtp") | |
80af75ab | 415 | (version "2.3.0") |
3c9e35cc | 416 | (source (origin |
1c956faa EF |
417 | (method git-fetch) |
418 | (uri (git-reference | |
419 | (url "https://github.com/cisco/libsrtp") | |
420 | (commit (string-append "v" version)))) | |
421 | (file-name (git-file-name name version)) | |
b0c7e053 TGR |
422 | (sha256 |
423 | (base32 | |
80af75ab | 424 | "1f7i3jdh1wzdv7zjlz7gs3xw5jqig9zw8z9awsqqcp54f94xdpvd")))) |
3c9e35cc | 425 | (native-inputs |
b0c7e053 | 426 | `(("psmisc" ,psmisc) ;some tests require 'killall' |
340f9b9f | 427 | ("procps" ,procps))) |
3c9e35cc DH |
428 | (build-system gnu-build-system) |
429 | (arguments | |
d18116d9 MB |
430 | '(#:test-target "runtest" |
431 | #:phases (modify-phases %standard-phases | |
432 | (add-after 'build 'build-shared | |
433 | (lambda* (#:key (make-flags '()) #:allow-other-keys) | |
434 | ;; Build the shared library separately because | |
435 | ;; the test runner requires a static build. | |
436 | (apply invoke "make" "shared_library" make-flags) | |
437 | #t)) | |
438 | (add-after 'install 'remove-static-library | |
439 | (lambda* (#:key outputs #:allow-other-keys) | |
440 | (delete-file (string-append (assoc-ref outputs "out") | |
441 | "/lib/libsrtp2.a")) | |
442 | #t))))) | |
3c9e35cc | 443 | (synopsis "Secure RTP (SRTP) Reference Implementation") |
6c0b0887 TGR |
444 | (description |
445 | "This package provides an implementation of the Secure Real-time Transport | |
446 | Protocol (@dfn{SRTP}), the Universal Security Transform (@dfn{UST}), and a | |
447 | supporting cryptographic kernel.") | |
3c9e35cc | 448 | (home-page "https://github.com/cisco/libsrtp") |
974aaf71 | 449 | (license license:bsd-3))) |
4ff20605 LG |
450 | |
451 | (define-public libiax2 | |
452 | (let ((commit "0e5980f1d78ce462e2d1ed6bc39ff35c8341f201")) | |
453 | ;; This is the commit used by the Ring Project. | |
454 | (package | |
455 | (name "libiax2") | |
456 | (version (string-append "0.0.0-1." (string-take commit 7))) | |
457 | (source | |
458 | (origin | |
cd1f661e RW |
459 | (method git-fetch) |
460 | (uri (git-reference | |
461 | (url "https://gitlab.savoirfairelinux.com/sflphone/libiax2.git") | |
462 | (commit commit))) | |
463 | (file-name (git-file-name name version)) | |
4ff20605 LG |
464 | (sha256 |
465 | (base32 | |
cd1f661e | 466 | "0d269474kk1933c55hx4azw3sak5ycfrxkw6ida0sb2cm00kfich")))) |
4ff20605 LG |
467 | (build-system gnu-build-system) |
468 | (native-inputs | |
469 | `(("autoconf" ,autoconf) | |
470 | ("automake" ,automake) | |
471 | ("libtool" ,libtool))) | |
4ff20605 LG |
472 | (home-page "https://gitlab.savoirfairelinux.com/sflphone/libiax2") |
473 | (synopsis "Inter-Asterisk-Protocol library") | |
474 | (description "LibIAX2 implements the Inter-Asterisk-Protocol for relaying | |
475 | Voice-over-IP (VoIP) communications.") | |
476 | ;; The file 'src/md5.c' is released into the public domain by RSA Data | |
477 | ;; Security. The files 'src/answer.h', 'src/miniphone.c', | |
478 | ;; 'src/options.c', 'src/options.h', 'src/ring10.h', 'src/winiphone.c' are | |
479 | ;; covered under the 'GPL'. | |
480 | ;; The package as a whole is distributed under the LGPL 2.0. | |
974aaf71 LG |
481 | (license (list license:lgpl2.0 |
482 | license:public-domain | |
483 | license:gpl2+))))) | |
319ac02b FF |
484 | |
485 | (define-public seren | |
486 | (package | |
487 | (name "seren") | |
488 | (version "0.0.21") | |
489 | (source (origin | |
490 | (method url-fetch) | |
491 | (uri (string-append "http://holdenc.altervista.org/" | |
492 | "seren/downloads/seren-" version | |
493 | ".tar.gz")) | |
494 | (sha256 | |
495 | (base32 | |
496 | "06mams6bng7ib7p2zpfq88kdr4ffril9svzc9lprkb0wjgmkglk9")))) | |
497 | (build-system gnu-build-system) | |
498 | (arguments '(#:tests? #f)) ; no "check" target | |
499 | (inputs | |
500 | `(("alsa-lib" ,alsa-lib) | |
501 | ("gmp" ,gmp) | |
502 | ("libogg" ,libogg) | |
503 | ("ncurses" ,ncurses) | |
504 | ("opus" ,opus))) | |
505 | (synopsis "Simple VoIP program to create conferences from the terminal") | |
506 | (description | |
507 | "Seren is a simple VoIP program based on the Opus codec that allows you | |
508 | to create a voice conference from the terminal, with up to 10 participants, | |
509 | without having to register accounts, exchange emails, or add people to contact | |
510 | lists. All you need to join an existing conference is the host name or IP | |
511 | address of one of the participants.") | |
512 | (home-page "http://holdenc.altervista.org/seren/") | |
974aaf71 | 513 | (license license:gpl3+))) |
faa29e4b | 514 | |
515 | (define-public mumble | |
516 | (package | |
517 | (name "mumble") | |
a21d9b8d | 518 | (version "1.3.0") |
faa29e4b | 519 | (source (origin |
520 | (method url-fetch) | |
521 | (uri (string-append "https://mumble.info/snapshot/" | |
522 | name "-" version ".tar.gz")) | |
523 | (sha256 | |
524 | (base32 | |
a21d9b8d | 525 | "03dqg5yf6d7ilc1wydpshnv1ndssppcbadqcq20jm5j4fdaf53cs")) |
faa29e4b | 526 | (modules '((guix build utils))) |
527 | (snippet | |
528 | `(begin | |
a21d9b8d IVB |
529 | ;; Remove bundled software. Keep arc4random, celt-0.7.0, |
530 | ;; celt-0.11.0, qqbonjour, rnnoise, smallft. | |
531 | (for-each | |
532 | delete-file-recursively | |
533 | '("3rdparty/GL" ; in mesa | |
534 | "3rdparty/mach-override-build" ; for macx | |
535 | "3rdparty/mach-override-src" | |
536 | "3rdparty/minhook-build" ; for win32 | |
537 | "3rdparty/minhook-src" | |
538 | "3rdparty/opus-build" ; in opus | |
539 | "3rdparty/opus-src" | |
540 | "3rdparty/sbcelt-helper-build" ; not enabled | |
541 | "3rdparty/sbcelt-lib-build" | |
542 | "3rdparty/sbcelt-src" | |
543 | "3rdparty/speex-build" ; in speex | |
544 | "3rdparty/speex-src" | |
545 | "3rdparty/speexdsp-src" ; in speexdsp | |
546 | "3rdparty/xinputcheck-build" ; for win32 | |
547 | "3rdparty/xinputcheck-src")) | |
faa29e4b | 548 | #t)))) |
a21d9b8d | 549 | (build-system qt-build-system) |
faa29e4b | 550 | (arguments |
551 | `(#:tests? #f ; no "check" target | |
552 | #:phases | |
2b583cdd | 553 | (modify-phases %standard-phases |
faa29e4b | 554 | (replace 'configure |
a21d9b8d IVB |
555 | (lambda* (#:key inputs outputs #:allow-other-keys) |
556 | (invoke "qmake" "main.pro" "QMAKE_LRELEASE=lrelease" | |
557 | (string-append "MUMBLE_PYTHON=" | |
558 | (string-append (assoc-ref inputs "python") | |
559 | "/bin/python3")) | |
7616d75f TGR |
560 | (string-append "CONFIG+=" |
561 | (string-join | |
a21d9b8d IVB |
562 | ;; Options used are listed in the same order |
563 | ;; as in the "INSTALL" file | |
564 | ;; (plus the final "packaged" and "release"). | |
565 | (list "no-bundled-speex" ; in speex | |
566 | "no-bundled-opus" ; in opus | |
567 | "no-g15" ; not packaged | |
568 | "no-jackaudio" ; use pulse | |
569 | "no-oss" ; use pulse | |
570 | "no-alsa" ; use pulse | |
571 | "no-update" | |
7616d75f | 572 | "no-embed-qt-translations" |
a21d9b8d IVB |
573 | "no-ice" ; not packaged |
574 | "packaged" | |
7616d75f TGR |
575 | "release"))) |
576 | (string-append "DEFINES+=" | |
577 | "PLUGIN_PATH=" | |
578 | (assoc-ref outputs "out") | |
579 | "/lib/mumble")))) | |
faa29e4b | 580 | (add-before 'configure 'fix-libspeechd-include |
581 | (lambda _ | |
582 | (substitute* "src/mumble/TextToSpeech_unix.cpp" | |
a21d9b8d IVB |
583 | (("libspeechd.h") "speech-dispatcher/libspeechd.h")) |
584 | #t)) | |
ba726ebc MR |
585 | ;; disable statistic gathering by default. see <https://bugs.gnu.org/25201> |
586 | (add-before 'configure 'fix-statistic-gathering-default | |
587 | (lambda _ | |
588 | (substitute* "src/mumble/Settings.cpp" | |
589 | (("bUsage = true;") "bUsage = false;")) | |
590 | #t)) | |
a21d9b8d IVB |
591 | (add-before 'install 'disable-murmur-ice |
592 | (lambda _ | |
593 | (substitute* "scripts/murmur.ini.system" | |
594 | (("^ice=") ";ice=")) | |
595 | #t)) | |
faa29e4b | 596 | (replace 'install ; install phase does not exist |
597 | (lambda* (#:key inputs outputs #:allow-other-keys) | |
598 | (let* ((out (assoc-ref outputs "out")) | |
bd9f8869 | 599 | (etc (string-append out "/etc/murmur")) |
600 | (dbus (string-append out "/etc/dbus-1/system.d/")) | |
faa29e4b | 601 | (bin (string-append out "/bin")) |
602 | (services (string-append out "/share/services")) | |
603 | (applications (string-append out "/share/applications")) | |
604 | (icons (string-append out "/share/icons/hicolor/scalable/apps")) | |
605 | (man (string-append out "/share/man/man1")) | |
606 | (lib (string-append out "/lib/mumble"))) | |
607 | (install-file "release/mumble" bin) | |
608 | (install-file "scripts/mumble-overlay" bin) | |
609 | (install-file "scripts/mumble.protocol" services) | |
610 | (install-file "scripts/mumble.desktop" applications) | |
611 | (install-file "icons/mumble.svg" icons) | |
612 | (install-file "man/mumble-overlay.1" man) | |
613 | (install-file "man/mumble.1" man) | |
bd9f8869 | 614 | (install-file "release/murmurd" bin) |
615 | (install-file "scripts/murmur.ini.system" etc) | |
616 | (rename-file (string-append etc "/murmur.ini.system") | |
617 | (string-append etc "/murmur.ini")) | |
618 | (install-file "scripts/murmur.conf" dbus) | |
619 | (install-file "man/murmurd.1" man) | |
faa29e4b | 620 | (for-each (lambda (file) (install-file file lib)) |
621 | (find-files "." "\\.so\\.")) | |
622 | (for-each (lambda (file) (install-file file lib)) | |
623 | (find-files "release/plugins" "\\.so$")))))))) | |
624 | (inputs | |
625 | `(("avahi" ,avahi) | |
faa29e4b | 626 | ("boost" ,boost) |
a21d9b8d | 627 | ("libsndfile" ,libsndfile) |
faa29e4b | 628 | ("libxi" ,libxi) |
a21d9b8d IVB |
629 | ("mesa" ,mesa) ; avoid bundled |
630 | ("openssl" ,openssl) | |
631 | ("opus" ,opus) ; avoid bundled | |
632 | ("protobuf" ,protobuf) | |
633 | ("pulseaudio" ,pulseaudio) | |
634 | ("qtbase" ,qtbase) | |
635 | ("qtsvg" ,qtsvg) | |
636 | ("speech-dispatcher" ,speech-dispatcher) | |
637 | ("speex" ,speex) ; avoid bundled | |
638 | ("speexdsp" ,speexdsp))) ; avoid bundled | |
faa29e4b | 639 | (native-inputs |
a21d9b8d IVB |
640 | `(("pkg-config" ,pkg-config) |
641 | ("python" ,python) | |
642 | ("qttools" ,qttools))) | |
faa29e4b | 643 | (synopsis "Low-latency, high quality voice chat software") |
644 | (description | |
645 | "Mumble is an low-latency, high quality voice chat | |
bd9f8869 | 646 | software primarily intended for use while gaming. |
647 | Mumble consists of two applications for separate usage: | |
648 | @code{mumble} for the client, and @code{murmur} for the server.") | |
faa29e4b | 649 | (home-page "https://wiki.mumble.info/wiki/Main_Page") |
a21d9b8d IVB |
650 | (license (list license:bsd-3 ; mumble celt-0.7.0 qqbonjour rnnoise smallft |
651 | license:bsd-2 ; celt-0.11.0 | |
652 | license:isc)))) ; arc4random | |
b61cb244 JL |
653 | |
654 | (define-public twinkle | |
b61cb244 | 655 | (package |
f1371daa JL |
656 | (name "twinkle") |
657 | (version "1.10.2") | |
e5463baf RG |
658 | (source |
659 | (origin | |
660 | (method git-fetch) | |
661 | (uri | |
662 | (git-reference | |
663 | (url "https://github.com/LubosD/twinkle") | |
664 | (commit | |
665 | (string-append "v" version)))) | |
666 | (file-name | |
667 | (git-file-name name version)) | |
668 | (patches | |
669 | (search-patches "twinkle-bcg729.patch")) ; To support new BCG729 API. | |
670 | (sha256 | |
671 | (base32 | |
672 | "0s0gi03xwvzp02ah4q6j33r9jx9nbayr6dxlg2ck9pwbay1nq1hx")))) | |
673 | (build-system qt-build-system) | |
f1371daa | 674 | (arguments |
e5463baf RG |
675 | `(#:tests? #f ; no test target |
676 | #:configure-flags | |
677 | (list | |
678 | ;; FIX-ME: Make Twinkle compatible with libre version of iLBC. | |
679 | ;; "-DWITH_ILBC=On" ; For iLBC Codec Support | |
680 | "-DWITH_ZRTP=On" ; For ZRTP Support | |
681 | "-DWITH_G729=On" ; For G729 Codec Support | |
682 | "-DWITH_SPEEX=On"))) ; For Speex Codec Support | |
f1371daa JL |
683 | (native-inputs |
684 | `(("bison" ,bison) | |
685 | ("flex" ,flex) | |
e5463baf RG |
686 | ("qttools" ,qttools))) |
687 | (inputs | |
688 | `(("alsa-lib" ,alsa-lib) | |
689 | ("bcg729" ,bcg729) | |
690 | ("zrtpcpp" ,zrtpcpp) | |
f1371daa | 691 | ("ccrtp" ,ccrtp) |
e5463baf RG |
692 | ("file" ,file) |
693 | ("libilbc" ,libilbc) | |
694 | ("libsndfile" ,libsndfile) | |
f1371daa | 695 | ("libxml2" ,libxml2) |
e5463baf RG |
696 | ("qtbase" ,qtbase) |
697 | ("qtdeclarative" ,qtdeclarative) | |
698 | ("qtquickcontrols" ,qtquickcontrols) | |
699 | ("readline" ,readline) | |
f1371daa JL |
700 | ("speex" ,speex) |
701 | ("speexdsp" ,speexdsp) | |
e5463baf | 702 | ("ucommon" ,ucommon))) |
f1371daa JL |
703 | (synopsis "Softphone for voice over IP and instant messaging") |
704 | (description "Twinkle is a softphone for your voice over IP and instant | |
e5463baf RG |
705 | messaging communcations using the SIP protocol. You can use it for direct |
706 | IP phone to IP phone communication or in a network using a SIP proxy to route | |
707 | your calls and messages.") | |
708 | (home-page "http://twinkle.dolezel.info/") | |
f1371daa | 709 | (license license:gpl2+))) |
bd4b6f41 PN |
710 | |
711 | (define-public pjproject | |
712 | (package | |
713 | (name "pjproject") | |
2ff4e549 | 714 | (version "2.10") |
bd4b6f41 PN |
715 | (source |
716 | (origin | |
5dc8cad5 PN |
717 | (method git-fetch) |
718 | (uri (git-reference | |
719 | (url "https://github.com/pjsip/pjproject.git") | |
2ff4e549 JW |
720 | (commit version))) |
721 | (file-name (git-file-name name version)) | |
722 | (sha256 | |
723 | (base32 | |
724 | "1aklicpgwc88578k03i5d5cm5h8mfm7hmx8vfprchbmaa2p8f4z0")) | |
bd4b6f41 PN |
725 | (modules '((guix build utils))) |
726 | (snippet | |
727 | '(begin | |
728 | (let ((third-party-directories | |
5dc8cad5 PN |
729 | ;; Things we don't need: |
730 | ;; BaseClasses - contains libraries from Windows SDK | |
731 | ;; we don't need it, at least not now. | |
732 | (list "BaseClasses" "g7221" "ilbc" "milenage" | |
733 | "speex" "threademulation" "yuv" "bdsound" | |
734 | "gsm" "mp3" "resample" "srtp" "webrtc" | |
bd4b6f41 PN |
735 | ;; Keep only resample, build and README.txt. |
736 | "build/baseclasses" "build/g7221" "build/gsm" | |
5dc8cad5 PN |
737 | "build/ilbc" "build/milenage" "build/resample" |
738 | "build/samplerate" "build/speex" "build/srtp" | |
739 | "build/webrtc" "build/yuv"))) | |
bd4b6f41 | 740 | ;; Keep only Makefiles related to resample. |
5dc8cad5 | 741 | (for-each (lambda (directory) |
bd4b6f41 | 742 | (delete-file-recursively |
5dc8cad5 | 743 | (string-append "third_party/" directory))) |
bd4b6f41 PN |
744 | third-party-directories) |
745 | #t) | |
746 | (let ((third-party-dirs | |
747 | (list "gsm" "ilbc" "speex" "g7221" "srtp" | |
748 | "portaudio" "resample"))) | |
749 | (for-each | |
750 | (lambda (dirs) | |
751 | (substitute* "third_party/build/os-linux.mak" | |
752 | (((string-append "DIRS += " dirs)) ""))) | |
2ff4e549 | 753 | third-party-dirs)))))) |
bd4b6f41 PN |
754 | (build-system gnu-build-system) |
755 | (inputs | |
756 | `(("portaudio" ,portaudio))) | |
757 | (propagated-inputs | |
758 | ;; These packages are referenced in the Libs field of the pkg-config | |
759 | ;; file that will be installed by pjproject. | |
760 | `(("speex" ,speex) | |
761 | ("libsrtp" ,libsrtp) | |
762 | ("gnutls" ,gnutls) | |
5dc8cad5 | 763 | ("resample", resample) |
bb93042c | 764 | ("util-linux" ,util-linux "lib"))) |
bd4b6f41 PN |
765 | (native-inputs |
766 | `(("autoconf" ,autoconf) | |
767 | ("automake" ,automake) | |
768 | ("pkg-config" ,pkg-config) | |
769 | ("libtool" ,libtool))) | |
770 | (arguments | |
771 | `(;; FIXME make: No rule to make target | |
772 | ;; 'pjlib-test-unknown-[something]-gnu'. | |
773 | #:tests? #f | |
774 | ;; #:test-target "selftest" | |
775 | #:phases | |
776 | (modify-phases %standard-phases | |
777 | (add-before 'build 'build-dep | |
778 | (lambda _ (invoke "make" "dep"))) | |
779 | (add-before 'patch-source-shebangs 'autoconf | |
780 | (lambda _ | |
5dc8cad5 | 781 | (invoke "autoconf" "-v" "-f" "-i" "-o" |
bd4b6f41 PN |
782 | "aconfigure" "aconfigure.ac"))) |
783 | (add-before 'autoconf 'disable-some-tests | |
784 | ;; Three of the six test programs fail due to missing network | |
785 | ;; access. | |
786 | (lambda _ | |
787 | (substitute* "Makefile" | |
788 | (("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test") | |
789 | "selftest: pjlib-test pjlib-util-test pjmedia-test")) | |
790 | #t))))) | |
791 | (home-page "https://www.pjsip.org") | |
792 | (synopsis "Session Initiation Protocol (SIP) stack") | |
793 | (description "PJProject provides an implementation of the Session | |
794 | Initiation Protocol (SIP) and a multimedia framework.") | |
795 | (license license:gpl2+))) | |
915829e6 | 796 | |
494135d5 BG |
797 | (define-public libtgvoip |
798 | (package | |
799 | (name "libtgvoip") | |
5a0d7391 | 800 | (version "2.4.4") |
494135d5 BG |
801 | (source |
802 | (origin | |
803 | (method git-fetch) | |
804 | (uri (git-reference | |
5a0d7391 | 805 | (url "https://github.com/grishka/libtgvoip.git") |
494135d5 BG |
806 | (commit version))) |
807 | (file-name (git-file-name name version)) | |
1792a706 BG |
808 | ;; Fix compilation on i686-linux architecture. |
809 | ;; NOTE: Applying these patches is order-dependent! | |
810 | ;; The patch for WebRTC /must/ precede the patch for SSE2. | |
811 | (patches | |
812 | (search-patches "libtgvoip-disable-webrtc.patch" | |
813 | "libtgvoip-disable-sse2.patch")) | |
494135d5 BG |
814 | (sha256 |
815 | (base32 | |
5a0d7391 | 816 | "122kn3jx6v0kkldlzlpzvlwqxgp6pmzxsjhrhcxw12bx9c08sar5")))) |
494135d5 BG |
817 | (build-system gnu-build-system) |
818 | (inputs | |
5a0d7391 BG |
819 | `(("alsa-lib" ,alsa-lib) |
820 | ("libopusenc" ,libopusenc) | |
821 | ("openssl" ,openssl) | |
822 | ("pulseaudio" ,pulseaudio))) | |
494135d5 BG |
823 | (synopsis "VoIP library for Telegram clients") |
824 | (description "A collection of libraries and header files for implementing | |
825 | telephony functionality into custom Telegram clients.") | |
826 | (home-page "https://github.com/zevlg/libtgvoip") | |
827 | (license license:unlicense))) |