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> |
6f09178d | 5 | ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> |
4ff20605 | 6 | ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> |
319ac02b | 7 | ;;; Copyright © 2016 Francesco Frassinelli <fraph24@gmail.com> |
bd9f8869 | 8 | ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> |
8fd3de0b JD |
9 | ;;; |
10 | ;;; This file is part of GNU Guix. | |
11 | ;;; | |
12 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
13 | ;;; under the terms of the GNU General Public License as published by | |
14 | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
15 | ;;; your option) any later version. | |
16 | ;;; | |
17 | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
18 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 | ;;; GNU General Public License for more details. | |
21 | ;;; | |
22 | ;;; You should have received a copy of the GNU General Public License | |
23 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
24 | ||
25 | (define-module (gnu packages telephony) | |
26 | #:use-module (gnu packages) | |
4ff20605 | 27 | #:use-module (gnu packages autotools) |
faa29e4b | 28 | #:use-module (gnu packages avahi) |
29 | #:use-module (gnu packages boost) | |
30 | #:use-module (gnu packages protobuf) | |
8fd3de0b | 31 | #:use-module (gnu packages gnupg) |
3c9e35cc | 32 | #:use-module (gnu packages linux) |
319ac02b FF |
33 | #:use-module (gnu packages multiprecision) |
34 | #:use-module (gnu packages ncurses) | |
8fd3de0b | 35 | #:use-module (gnu packages pkg-config) |
faa29e4b | 36 | #:use-module (gnu packages pulseaudio) |
37 | #:use-module (gnu packages qt) | |
38 | #:use-module (gnu packages speech) | |
99e6f9c8 | 39 | #:use-module (gnu packages tls) |
319ac02b | 40 | #:use-module (gnu packages xiph) |
faa29e4b | 41 | #:use-module (gnu packages xorg) |
974aaf71 | 42 | #:use-module ((guix licenses) #:prefix license:) |
8fd3de0b JD |
43 | #:use-module (guix packages) |
44 | #:use-module (guix download) | |
45 | #:use-module (guix build-system gnu)) | |
46 | ||
47 | (define-public commoncpp | |
48 | (package | |
49 | (name "commoncpp") | |
50 | (version "1.8.1") | |
51 | (source (origin | |
52 | (method url-fetch) | |
53 | (uri (string-append "mirror://gnu/" name "/commoncpp2-" | |
54 | version ".tar.gz")) | |
55 | (sha256 (base32 | |
56 | "0kmgr5w3b1qwzxnsnw94q6rqs0hr8nbv9clf07ca2a2fyypx9kjk")))) | |
57 | (arguments | |
58 | `(#:phases | |
59 | (alist-cons-before | |
60 | 'configure 'pre-configure | |
61 | (lambda _ | |
62 | (substitute* "src/applog.cpp" | |
63 | (("^// TODO sc.*") "#include <sys/types.h>\n#include <sys/stat.h>\n"))) | |
64 | %standard-phases))) | |
65 | (build-system gnu-build-system) | |
12bcf94a | 66 | (synopsis "(u)Common C++ framework for threaded applications") |
8fd3de0b JD |
67 | (description "GNU Common C++ is an portable, optimized class framework for |
68 | threaded applications, supporting concurrent synchronization, inter-process | |
69 | communications via sockets, and various methods for data handling, such as | |
70 | serialization and XML parsing. It includes the uCommon C++ library, a smaller | |
71 | reimplementation.") | |
974aaf71 | 72 | (license license:gpl2+) ; plus runtime exception |
6fd52309 | 73 | (home-page "https://www.gnu.org/software/commoncpp/"))) |
8fd3de0b JD |
74 | |
75 | (define-public ucommon | |
76 | (package | |
77 | (name "ucommon") | |
99e6f9c8 | 78 | (version "7.0.0") |
8fd3de0b JD |
79 | (source (origin |
80 | (method url-fetch) | |
81 | (uri (string-append "mirror://gnu/commoncpp/" name "-" | |
82 | version ".tar.gz")) | |
83 | (sha256 (base32 | |
99e6f9c8 | 84 | "1mv080rvrhyxyhgqiqr8r9jdqhg3xhfawjvfj5zgj47h59nggjba")))) |
8fd3de0b | 85 | (build-system gnu-build-system) |
99e6f9c8 | 86 | (inputs `(("gnutls" ,gnutls))) |
35b9e423 EB |
87 | (synopsis "Common C++ framework for threaded applications") |
88 | (description "GNU uCommon C++ is meant as a very light-weight C++ library | |
89 | to facilitate using C++ design patterns even for very deeply embedded | |
90 | applications, such as for systems using uclibc along with posix threading | |
91 | support.") | |
974aaf71 | 92 | (license license:gpl3+) |
6fd52309 | 93 | (home-page "https://www.gnu.org/software/commoncpp/") |
63e8bb12 | 94 | (properties '((ftp-directory . "/gnu/commoncpp"))))) |
8fd3de0b JD |
95 | |
96 | (define-public ccrtp | |
97 | (package | |
98 | (name "ccrtp") | |
9dc9053f | 99 | (version "2.1.2") |
8fd3de0b JD |
100 | (source (origin |
101 | (method url-fetch) | |
102 | (uri (string-append "mirror://gnu/ccrtp/ccrtp-" | |
103 | version ".tar.gz")) | |
104 | (sha256 (base32 | |
9dc9053f | 105 | "17ili8l7zqbbkzr1rcy4hlnazkf50mds41wg6n7bfdsx3c7cldgh")))) |
8fd3de0b JD |
106 | (build-system gnu-build-system) |
107 | (inputs `(("ucommon" ,ucommon) | |
108 | ("libgcrypt" ,libgcrypt))) | |
109 | (native-inputs `(("pkg-config" ,pkg-config))) | |
110 | (synopsis "Implementation of RTP (real-time transport protocol)") | |
111 | (description "GNU ccRTP is an implementation of RTP, the real-time transport | |
112 | protocol from the IETF. It is suitable both for high capacity servers and | |
113 | personal client applications. It is flexible in its design, allowing it to | |
114 | function as a framework for the framework, rather than just being a | |
115 | packet-manipulation library.") | |
974aaf71 | 116 | (license license:gpl2+) ; plus runtime exception |
6fd52309 | 117 | (home-page "https://www.gnu.org/software/ccrtp/"))) |
8fd3de0b JD |
118 | |
119 | ||
120 | (define-public osip | |
121 | (package | |
122 | (name "osip") | |
123 | (version "4.1.0") | |
124 | (source (origin | |
125 | (method url-fetch) | |
126 | (uri (string-append "mirror://gnu/osip/libosip2-" version ".tar.gz")) | |
127 | (sha256 (base32 | |
128 | "014503kqv7z63az6lgxr5fbajlrqylm5c4kgbf8p3a0n6cva0slr")))) | |
129 | (build-system gnu-build-system) | |
130 | ||
131 | (synopsis "Library implementing SIP (RFC-3261)") | |
132 | (description "GNU oSIP is an implementation of the SIP protocol. It is | |
133 | used to provide multimedia and telecom software developers with an interface | |
134 | to initiate and control SIP sessions.") | |
974aaf71 | 135 | (license license:lgpl2.1+) |
6fd52309 | 136 | (home-page "https://www.gnu.org/software/osip/"))) |
8fd3de0b JD |
137 | |
138 | ||
139 | (define-public exosip | |
140 | (package | |
141 | (name "exosip") | |
142 | (version "4.1.0") | |
143 | (source (origin | |
144 | (method url-fetch) | |
966a543b LC |
145 | (uri (string-append "mirror://savannah/exosip/libeXosip2-" |
146 | version ".tar.gz")) | |
8fd3de0b JD |
147 | (sha256 (base32 |
148 | "17cna8kpc8nk1si419vgr6r42k2lda0rdk50vlxrw8rzg0xp2xrw")))) | |
149 | (build-system gnu-build-system) | |
150 | (inputs `(("osip" ,osip))) | |
151 | (synopsis "Sip abstraction library") | |
152 | (description "EXosip is a library that hides the complexity of using the | |
e881752c | 153 | SIP protocol for multimedia session establishment. This protocol is mainly to |
8fd3de0b | 154 | be used by VoIP telephony applications (endpoints or conference server) but |
e881752c | 155 | might be also useful for any application that wish to establish sessions like |
8fd3de0b | 156 | multiplayer games.") |
974aaf71 | 157 | (license license:gpl2+) |
8fd3de0b JD |
158 | ;; (plus OpenSSL linking exception) |
159 | ;; http://git.savannah.gnu.org/cgit/exosip.git/plain/LICENSE.OpenSSL | |
160 | (home-page "http://savannah.nongnu.org/projects/exosip"))) | |
161 | ||
162 | (define-public sipwitch | |
163 | (package | |
164 | (name "sipwitch") | |
419fa59b | 165 | (version "1.9.15") |
8fd3de0b JD |
166 | (source (origin |
167 | (method url-fetch) | |
168 | (uri (string-append "mirror://gnu/sipwitch/sipwitch-" | |
169 | version ".tar.gz")) | |
170 | (sha256 (base32 | |
419fa59b | 171 | "10lli9c703d7qbarzc0lgmz963ppncvnrklwrnri0s1zcmmahyia")))) |
8fd3de0b | 172 | (build-system gnu-build-system) |
e881752c | 173 | ;; The configure.ac uses pkg-config but in a kludgy way which breaks when |
8fd3de0b JD |
174 | ;; cross-compiling. Among other issues there the program name "pkg-config" |
175 | ;; is hard coded instead of respecting the PKG_CONFIG environment variable. | |
e881752c AK |
176 | ;; Fortunately we can avoid the use of pkg-config and set the dependency |
177 | ;; flags ourselves. | |
178 | (arguments `(#:configure-flags | |
8fd3de0b | 179 | `("--without-pkg-config" |
e881752c | 180 | ,(string-append "UCOMMON_CFLAGS=-I" |
8fd3de0b JD |
181 | (assoc-ref %build-inputs "ucommon") "/include") |
182 | "UCOMMON_LIBS=-lusecure -lucommon -lrt -ldl -lpthread" | |
e881752c | 183 | ,(string-append "LIBOSIP2_CFLAGS=-I" |
8fd3de0b JD |
184 | (assoc-ref %build-inputs "osip") "/include") |
185 | "LIBOSIP2_LIBS=-losipparser2 -losip2" | |
e881752c | 186 | ,(string-append "--sysconfdir=" (assoc-ref %outputs "out") |
8fd3de0b JD |
187 | "/etc") |
188 | "EXOSIP2_LIBS=-leXosip2" | |
e881752c | 189 | ,(string-append "EXOSIP2_CFLAGS=-I" |
8fd3de0b JD |
190 | (assoc-ref %build-inputs "exosip") |
191 | "/include")))) | |
192 | (inputs `(("ucommon" ,ucommon) | |
193 | ("exosip" ,exosip) | |
194 | ("osip" ,osip))) | |
195 | (synopsis "Secure peer-to-peer VoIP server for the SIP protocol") | |
196 | (description "GNU SIP Witch is a peer-to-peer Voice-over-IP server that | |
197 | uses the SIP protocol. Calls can be made from behind NAT firewalls and | |
198 | without the need for a service provider. Its peer-to-peer design ensures that | |
199 | there is no central point for media intercept or capture and thus it can be | |
200 | used to construct a secure telephone system that operates over the public | |
201 | internet.") | |
974aaf71 | 202 | (license license:gpl3+) |
6fd52309 | 203 | (home-page "https://www.gnu.org/software/sipwitch/"))) |
8fd3de0b | 204 | |
3c9e35cc DH |
205 | (define-public libsrtp |
206 | (package | |
207 | (name "libsrtp") | |
8d9ac926 | 208 | (version "1.5.4") |
3c9e35cc DH |
209 | (source (origin |
210 | (method url-fetch) | |
211 | (uri (string-append "https://github.com/cisco/libsrtp/archive/v" | |
212 | version ".tar.gz")) | |
6f09178d | 213 | (file-name (string-append name "-" version ".tar.gz")) |
3c9e35cc DH |
214 | (sha256 |
215 | (base32 | |
8d9ac926 | 216 | "1w2g623qkd7gdyydglx2hr4s2y237lg0nszjmy7z8d2iq8hvb9sn")))) |
3c9e35cc | 217 | (native-inputs |
340f9b9f LC |
218 | `(("psmisc" ,psmisc) ;some tests require 'killall' |
219 | ("procps" ,procps))) | |
3c9e35cc DH |
220 | (build-system gnu-build-system) |
221 | (arguments | |
310248c6 EF |
222 | '(#:test-target "runtest" |
223 | #:phases | |
224 | (modify-phases %standard-phases | |
225 | (add-after 'unpack 'patch-mips-variable-in-testsuite | |
226 | ;; This comes from https://github.com/cisco/libsrtp/pull/151 | |
227 | (lambda _ | |
228 | (substitute* "test/srtp_driver.c" | |
229 | (("mips ") "mips_est ") | |
230 | (("mips\\)") "mips_est)")) | |
231 | #t)) | |
232 | (add-after 'unpack 'patch-dictionary-location | |
233 | ;; With the above changes, the rtpw_test.sh test finally runs, and fails | |
234 | (lambda _ | |
235 | (substitute* "test/rtpw.c" | |
236 | (("/usr/share/dict/words") | |
237 | (string-append (assoc-ref %build-inputs "procps") | |
340f9b9f LC |
238 | "/share/doc/procps-ng/FAQ")) |
239 | (("words.txt") "FAQ")) | |
310248c6 | 240 | #t))))) |
3c9e35cc DH |
241 | (synopsis "Secure RTP (SRTP) Reference Implementation") |
242 | (description "This package provides an implementation of the Secure | |
243 | Real-time Transport Protocol (SRTP), the Universal Security Transform (UST), | |
244 | and a supporting cryptographic kernel.") | |
245 | (home-page "https://github.com/cisco/libsrtp") | |
974aaf71 | 246 | (license license:bsd-3))) |
4ff20605 LG |
247 | |
248 | (define-public libiax2 | |
249 | (let ((commit "0e5980f1d78ce462e2d1ed6bc39ff35c8341f201")) | |
250 | ;; This is the commit used by the Ring Project. | |
251 | (package | |
252 | (name "libiax2") | |
253 | (version (string-append "0.0.0-1." (string-take commit 7))) | |
254 | (source | |
255 | (origin | |
256 | (method url-fetch) | |
257 | (uri | |
258 | (string-append | |
259 | "https://gitlab.savoirfairelinux.com/sflphone/libiax2/" | |
260 | "repository/archive.tar.gz?ref=" | |
261 | commit)) | |
262 | (file-name (string-append name "-" version ".tar.gz")) | |
263 | (sha256 | |
264 | (base32 | |
265 | "0cj5293bixp3k5x3hjwyd0iq7z8w5p7yavxvvkqk5817hjq386y2")))) | |
266 | (build-system gnu-build-system) | |
267 | (native-inputs | |
268 | `(("autoconf" ,autoconf) | |
269 | ("automake" ,automake) | |
270 | ("libtool" ,libtool))) | |
271 | (arguments | |
272 | `(#:phases (modify-phases %standard-phases | |
273 | (add-before 'configure 'autoconf | |
274 | (lambda _ | |
275 | (zero? (system* "autoreconf" "-vfi"))))))) | |
276 | (home-page "https://gitlab.savoirfairelinux.com/sflphone/libiax2") | |
277 | (synopsis "Inter-Asterisk-Protocol library") | |
278 | (description "LibIAX2 implements the Inter-Asterisk-Protocol for relaying | |
279 | Voice-over-IP (VoIP) communications.") | |
280 | ;; The file 'src/md5.c' is released into the public domain by RSA Data | |
281 | ;; Security. The files 'src/answer.h', 'src/miniphone.c', | |
282 | ;; 'src/options.c', 'src/options.h', 'src/ring10.h', 'src/winiphone.c' are | |
283 | ;; covered under the 'GPL'. | |
284 | ;; The package as a whole is distributed under the LGPL 2.0. | |
974aaf71 LG |
285 | (license (list license:lgpl2.0 |
286 | license:public-domain | |
287 | license:gpl2+))))) | |
319ac02b FF |
288 | |
289 | (define-public seren | |
290 | (package | |
291 | (name "seren") | |
292 | (version "0.0.21") | |
293 | (source (origin | |
294 | (method url-fetch) | |
295 | (uri (string-append "http://holdenc.altervista.org/" | |
296 | "seren/downloads/seren-" version | |
297 | ".tar.gz")) | |
298 | (sha256 | |
299 | (base32 | |
300 | "06mams6bng7ib7p2zpfq88kdr4ffril9svzc9lprkb0wjgmkglk9")))) | |
301 | (build-system gnu-build-system) | |
302 | (arguments '(#:tests? #f)) ; no "check" target | |
303 | (inputs | |
304 | `(("alsa-lib" ,alsa-lib) | |
305 | ("gmp" ,gmp) | |
306 | ("libogg" ,libogg) | |
307 | ("ncurses" ,ncurses) | |
308 | ("opus" ,opus))) | |
309 | (synopsis "Simple VoIP program to create conferences from the terminal") | |
310 | (description | |
311 | "Seren is a simple VoIP program based on the Opus codec that allows you | |
312 | to create a voice conference from the terminal, with up to 10 participants, | |
313 | without having to register accounts, exchange emails, or add people to contact | |
314 | lists. All you need to join an existing conference is the host name or IP | |
315 | address of one of the participants.") | |
316 | (home-page "http://holdenc.altervista.org/seren/") | |
974aaf71 | 317 | (license license:gpl3+))) |
faa29e4b | 318 | |
319 | (define-public mumble | |
320 | (package | |
321 | (name "mumble") | |
69ec0391 | 322 | (version "1.2.19") |
faa29e4b | 323 | (source (origin |
324 | (method url-fetch) | |
325 | (uri (string-append "https://mumble.info/snapshot/" | |
326 | name "-" version ".tar.gz")) | |
327 | (sha256 | |
328 | (base32 | |
69ec0391 | 329 | "1s60vaici3v034jzzi20x23hsj6mkjlc0glipjq4hffrg9qgnizh")) |
faa29e4b | 330 | (modules '((guix build utils))) |
331 | (snippet | |
332 | `(begin | |
333 | ;; Remove bundled software. | |
334 | (for-each delete-file-recursively '("3rdparty" | |
335 | "speex" | |
336 | "speexbuild" | |
337 | "opus-build" | |
338 | "opus-src" | |
339 | "sbcelt-helper-build" | |
340 | "sbcelt-lib-build" | |
341 | "sbcelt-src")) | |
342 | ;; TODO: Celt is still bundled. It has been merged into Opus | |
343 | ;; and will be removed after 1.3.0. | |
344 | ;; https://github.com/mumble-voip/mumble/issues/1999 | |
345 | #t)))) | |
346 | (build-system gnu-build-system) | |
347 | (arguments | |
348 | `(#:tests? #f ; no "check" target | |
349 | #:phases | |
350 | (modify-phases %standard-phases | |
351 | (replace 'configure | |
352 | (lambda* (#:key outputs #:allow-other-keys) | |
353 | (zero? (system* "qmake" "main.pro" "-recursive" | |
354 | (string-append "CONFIG+=" | |
355 | (string-join | |
356 | (list "no-update" | |
bd9f8869 | 357 | "no-ice" |
faa29e4b | 358 | "no-embed-qt-translations" |
359 | "no-bundled-speex" | |
360 | "pch" | |
361 | "no-bundled-opus" | |
362 | "no-celt" | |
363 | "no-alsa" | |
364 | "no-oss" | |
365 | "no-portaudio" | |
366 | "speechd" | |
367 | "no-g15" | |
368 | "no-bonjour" | |
369 | "release"))) | |
370 | (string-append "DEFINES+=" | |
371 | "PLUGIN_PATH=" | |
372 | (assoc-ref outputs "out") | |
373 | "/lib/mumble"))))) | |
374 | (add-before 'configure 'fix-libspeechd-include | |
375 | (lambda _ | |
376 | (substitute* "src/mumble/TextToSpeech_unix.cpp" | |
377 | (("libspeechd.h") "speech-dispatcher/libspeechd.h")))) | |
378 | (replace 'install ; install phase does not exist | |
379 | (lambda* (#:key inputs outputs #:allow-other-keys) | |
380 | (let* ((out (assoc-ref outputs "out")) | |
bd9f8869 | 381 | (etc (string-append out "/etc/murmur")) |
382 | (dbus (string-append out "/etc/dbus-1/system.d/")) | |
faa29e4b | 383 | (bin (string-append out "/bin")) |
384 | (services (string-append out "/share/services")) | |
385 | (applications (string-append out "/share/applications")) | |
386 | (icons (string-append out "/share/icons/hicolor/scalable/apps")) | |
387 | (man (string-append out "/share/man/man1")) | |
388 | (lib (string-append out "/lib/mumble"))) | |
389 | (install-file "release/mumble" bin) | |
390 | (install-file "scripts/mumble-overlay" bin) | |
391 | (install-file "scripts/mumble.protocol" services) | |
392 | (install-file "scripts/mumble.desktop" applications) | |
393 | (install-file "icons/mumble.svg" icons) | |
394 | (install-file "man/mumble-overlay.1" man) | |
395 | (install-file "man/mumble.1" man) | |
bd9f8869 | 396 | (install-file "release/murmurd" bin) |
397 | (install-file "scripts/murmur.ini.system" etc) | |
398 | (rename-file (string-append etc "/murmur.ini.system") | |
399 | (string-append etc "/murmur.ini")) | |
400 | (install-file "scripts/murmur.conf" dbus) | |
401 | (install-file "man/murmurd.1" man) | |
faa29e4b | 402 | (for-each (lambda (file) (install-file file lib)) |
403 | (find-files "." "\\.so\\.")) | |
404 | (for-each (lambda (file) (install-file file lib)) | |
405 | (find-files "release/plugins" "\\.so$")))))))) | |
406 | (inputs | |
407 | `(("avahi" ,avahi) | |
408 | ("protobuf" ,protobuf) | |
409 | ("openssl" ,openssl) | |
410 | ("libsndfile" ,libsndfile) | |
411 | ("boost" ,boost) | |
412 | ("opus" ,opus) | |
413 | ("speex" ,speex) | |
414 | ("speech-dispatcher" ,speech-dispatcher) | |
415 | ("libx11" ,libx11) | |
416 | ("libxi" ,libxi) | |
417 | ("qt-4" ,qt-4) | |
418 | ("alsa-lib" ,alsa-lib) | |
419 | ("pulseaudio" ,pulseaudio))) | |
420 | (native-inputs | |
421 | `(("pkg-config" ,pkg-config))) | |
422 | (synopsis "Low-latency, high quality voice chat software") | |
423 | (description | |
424 | "Mumble is an low-latency, high quality voice chat | |
bd9f8869 | 425 | software primarily intended for use while gaming. |
426 | Mumble consists of two applications for separate usage: | |
427 | @code{mumble} for the client, and @code{murmur} for the server.") | |
faa29e4b | 428 | (home-page "https://wiki.mumble.info/wiki/Main_Page") |
429 | (license (list license:bsd-3 | |
430 | ;; The bundled celt is bsd-2. Remove after 1.3.0. | |
431 | license:bsd-2)))) |