gnu: python-dbusmock: Update to 0.18.3.
[jackhill/guix/guix.git] / gnu / packages / telephony.scm
index b5c1414..5b6c578 100644 (file)
@@ -12,6 +12,7 @@
 ;;; Copyright © 2018 Jovany Leandro G.C <bit4bit@riseup.net>
 ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -243,13 +244,14 @@ internet.")
     (name "libsrtp")
     (version "2.2.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/cisco/libsrtp/archive/v"
-                                  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/cisco/libsrtp")
+                     (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "02x5l5h2nq6f9gq1bmgz5v9jmnqaab51p8aldglng1z7pjbp9za4"))))
+                "1ac7xs1djb03j131f1gmqyfmrplblid9qqyxahs0shdy707r5ll6"))))
     (native-inputs
      `(("psmisc" ,psmisc)               ;some tests require 'killall'
        ("procps" ,procps)))
@@ -284,7 +286,7 @@ supporting cryptographic kernel.")
     (home-page "https://www.linphone.org")
     (synopsis "Utilities library for linphone software")
     (description "BCtoolbox is a utilities library used by Belledonne
-Communications softwares like linphone.")
+Communications software like linphone.")
     (license license:gpl2+)))
 
 (define-public ortp
@@ -464,7 +466,7 @@ address of one of the participants.")
                          (find-files "release/plugins" "\\.so$"))))))))
     (inputs
      `(("avahi" ,avahi)
-       ("protobuf" ,protobuf)
+       ("protobuf" ,protobuf-3.5)
        ("openssl" ,openssl)
        ("libsndfile" ,libsndfile)
        ("boost" ,boost)
@@ -491,28 +493,24 @@ Mumble consists of two applications for separate usage:
                    license:bsd-2))))
 
 (define-public twinkle
-  (let ((commit "02e1d1538af3337134bd7381dcd95f8d7775b30f")
-        (revision "1"))
   (package
-   (name "twinkle")
-   (version (git-version "1.10.1" revision commit))
-   (source (origin
-             (method git-fetch)
-             (uri (git-reference
-                   (url "https://github.com/LubosD/twinkle")
-                   (commit commit)))
-             (patches
-              (search-patches "twinkle-include-qregexpvalidator.patch"))
-             (file-name (git-file-name name version))
-             (sha256
-              (base32
-               "0ds4rp4vr1wagn4m4m7ldqbsx5vgmgbfcqqgyhn1wf6s1dm0020z"))))
-   (build-system cmake-build-system)
-   (arguments
-    `(#:tests? #f ; no test target
-      #:configure-flags '("-DWITH_SPEEX=On")
-      #:phases
-      (modify-phases %standard-phases
+    (name "twinkle")
+    (version "1.10.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/LubosD/twinkle")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0s0gi03xwvzp02ah4q6j33r9jx9nbayr6dxlg2ck9pwbay1nq1hx"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                                ; no test target
+       #:configure-flags '("-DWITH_SPEEX=On")
+       #:phases
+       (modify-phases %standard-phases
          (add-after 'install 'wrap-executable
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
@@ -528,57 +526,60 @@ Mumble consists of two applications for separate usage:
                                           "/lib/qt5/qml"))
                          '("qtdeclarative" "qtquickcontrols"))))
                #t))))))
-   (native-inputs
-    `(("bison" ,bison)
-      ("flex" ,flex)
-      ("readline" ,readline)
-      ("file" ,file)
-      ("ucommon" ,ucommon)
-      ("ccrtp" ,ccrtp)
-      ("libxml2" ,libxml2)
-      ("speex" ,speex)
-      ("speexdsp" ,speexdsp)
-      ("libsndfile" ,libsndfile)
-      ("alsa-lib" ,alsa-lib)
-      ("qttools" ,qttools)))
-   (inputs
-    `(("qtbase" ,qtbase)
-      ("qtdeclarative" ,qtdeclarative)
-      ("qtquickcontrols" ,qtquickcontrols)))
-   (home-page "http://twinkle.dolezel.info/")
-   (synopsis "Softphone for voice over IP and instant messaging")
-   (description "Twinkle is a softphone for your voice over IP and instant
+    (native-inputs
+     `(("bison" ,bison)
+       ("flex" ,flex)
+       ("readline" ,readline)
+       ("file" ,file)
+       ("ucommon" ,ucommon)
+       ("ccrtp" ,ccrtp)
+       ("libxml2" ,libxml2)
+       ("speex" ,speex)
+       ("speexdsp" ,speexdsp)
+       ("libsndfile" ,libsndfile)
+       ("alsa-lib" ,alsa-lib)
+       ("qttools" ,qttools)))
+    (inputs
+     `(("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtquickcontrols" ,qtquickcontrols)))
+    (home-page "http://twinkle.dolezel.info/")
+    (synopsis "Softphone for voice over IP and instant messaging")
+    (description "Twinkle is a softphone for your voice over IP and instant
 messaging communcations using the SIP protocol.  You can use it for direct IP
 phone to IP phone communication or in a network using a SIP proxy to route your
 calls and messages")
-   (license license:gpl2+))))
+    (license license:gpl2+)))
 
 (define-public pjproject
   (package
     (name "pjproject")
-    (version "2.7.2")
+    (version "2.9")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append
-             "http://www.pjsip.org/release/" ;
-             version "/" name "-" version ".tar.bz2"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pjsip/pjproject.git")
+             (commit "5dfa75be7d69047387f9b0436dd9492bbbf03fe4")))
        (modules '((guix build utils)))
        (snippet
         '(begin
            (let ((third-party-directories
-                  (list "BaseClasses" "bdsound" "bin" "g7221" "gsm"
-                        "ilbc" "lib" "milenage" "mp3" "speex" "srtp"
-                        "resample"
+                  ;; Things we don't need:
+                  ;; BaseClasses - contains libraries from Windows SDK
+                  ;; we don't need it, at least not now.
+                  (list "BaseClasses" "g7221" "ilbc" "milenage"
+                        "speex" "threademulation" "yuv" "bdsound"
+                        "gsm" "mp3" "resample" "srtp" "webrtc"
                         ;; Keep only resample, build and README.txt.
                         "build/baseclasses" "build/g7221" "build/gsm"
-                        "build/ilbc" "build/milenage" "build/samplerate"
-                        "build/speex" "build/srtp"
-                        "build/resample" "build/yuv")))
+                        "build/ilbc" "build/milenage" "build/resample"
+                        "build/samplerate" "build/speex" "build/srtp"
+                        "build/webrtc" "build/yuv")))
              ;; Keep only Makefiles related to resample.
-             (for-each (lambda (file)
+             (for-each (lambda (directory)
                          (delete-file-recursively
-                          (string-append "third_party/" file)))
+                          (string-append "third_party/" directory)))
                        third-party-directories)
              #t)
            (let ((third-party-dirs
@@ -589,9 +590,10 @@ calls and messages")
                 (substitute* "third_party/build/os-linux.mak"
                   (((string-append "DIRS += " dirs)) "")))
               third-party-dirs))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0wiph6g51wanzwjjrpwsz63amgvly8g08jz033gnwqmppa584b4w"))))
+         "1ayj6n7zd5wvd1nzj2k9s57fb4ckc2fv92k5sjvhd87yg69k3393"))))
     (build-system gnu-build-system)
     (inputs
      `(("portaudio" ,portaudio)))
@@ -601,6 +603,7 @@ calls and messages")
      `(("speex" ,speex)
        ("libsrtp" ,libsrtp)
        ("gnutls" ,gnutls)
+       ("resample", resample)
        ("util-linux" ,util-linux)))
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -618,7 +621,7 @@ calls and messages")
            (lambda _ (invoke "make" "dep")))
          (add-before 'patch-source-shebangs 'autoconf
            (lambda _
-             (invoke "autoconf" "-vfi" "-o"
+             (invoke "autoconf" "-v" "-f" "-i" "-o"
                      "aconfigure" "aconfigure.ac")))
          (add-before 'autoconf 'disable-some-tests
            ;; Three of the six test programs fail due to missing network
@@ -634,12 +637,12 @@ calls and messages")
 Initiation Protocol (SIP) and a multimedia framework.")
     (license license:gpl2+)))
 
-(define %jami-version "20190319.4.a16a99f")
+(define %jami-version "20191101.3.67671e7")
 
 (define* (jami-source #:key without-daemon)
   (origin
     (method url-fetch)
-    (uri (string-append "http://dl.jami.net/ring-release/tarballs/ring_"
+    (uri (string-append "https://dl.jami.net/ring-release/tarballs/ring_"
                         %jami-version
                         ".tar.gz"))
     (modules '((guix build utils)))
@@ -650,7 +653,7 @@ Initiation Protocol (SIP) and a multimedia framework.")
        #f))
     (sha256
      (base32
-      "1c6n6sm7skw83v25g33g4jzbragz9j4przbzaz7asxw54jy33dwl"))))
+      "0kw172w2ccyz438kf5xqw14nhfm4xk6a2libnzib9j2wvhlpf4q0"))))
 
 (define-public pjproject-jami
   (package
@@ -683,35 +686,49 @@ Initiation Protocol (SIP) and a multimedia framework.")
              "--disable-openh264"
              "--disable-resample"
              "--disable-libwebrtc"
-             ;; "-fPIC" is required for libring.  Bug?
-             "CFLAGS=-fPIC -DPJ_ENABLE_EXTRA_CHECK=1 -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=1024 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000 -DPJ_ICE_ST_MAX_CAND=32"
-             "CXXFLAGS=-fPIC -DPJ_ENABLE_EXTRA_CHECK=1 -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=1024 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000 -DPJ_ICE_ST_MAX_CAND=32"
-             ;; Now deviating from the rules.mak file.
-             "--enable-ssl=gnutls"
-             "--with-external-srtp")
+             "--with-gnutls"
+             "--with-external-srtp"
+             ;; We need -fPIC or else we get the following error when linking
+             ;; against pjproject-jami:
+             ;;   relocation R_X86_64_32S against `.rodata' can not be used when
+             ;;   making a shared object;
+             "CFLAGS=-fPIC"
+             "CXXFLAGS=-fPIC")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
          (add-after 'unpack 'apply-patches
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches")
                    ;; Comes from
                    ;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
                    ;; WARNING: These amount for huge changes in pjproject.
-                   ;; Particularly, they add support for GnuTLS.
                    (savoir-faire-linux-patches
-                    '("gnutls"
+                    '("fix_turn_alloc_failure"
                       "rfc2466"
                       "ipv6"
-                      "ice_config"
                       "multiple_listeners"
                       "pj_ice_sess"
                       "fix_turn_fallback"
                       "fix_ioqueue_ipv6_sendto"
                       "add_dtls_transport"
-                      "rfc6062")))
+                      "rfc6544"
+                      "ice_config"
+                      "sip_config"
+                      "fix_first_packet_turn_tcp"
+                      "fix_ebusy_turn"
+                      "ignore_ipv6_on_transport_check"
+                      "fix_turn_connection_failure"
+                      ;; "uwp_vs" ; for windows
+                      "disable_local_resolution")))
                (mkdir-p savoir-faire-linux-patches-directory)
                (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches")
-                       "-C" savoir-faire-linux-patches-directory "--strip-components=5" "ring-project/daemon/contrib/src/pjproject")
+                       "-C" savoir-faire-linux-patches-directory
+                       "--strip-components=5"
+                       "ring-project/daemon/contrib/src/pjproject")
                (for-each
                 (lambda (file)
                   (invoke "patch" "--force" "-p1" "-i"
@@ -775,8 +792,9 @@ Initiation Protocol (SIP) and a multimedia framework.")
        ("libsecp256k1" ,libsecp256k1)
        ("python" ,python)
        ("python-wrapper" ,python-wrapper)
-       ("restbed" ,restbed)
+       ("restinio" ,restinio)
        ("libx11" ,libx11)
+       ("asio" ,asio)
        ;; TODO: Upstream seems to rely on a custom pjproject (a.k.a. pjsip) version.
        ;; See https://git.jami.net/savoirfairelinux/ring-daemon/issues/24.
        ("pjproject" ,pjproject-jami)))
@@ -847,10 +865,10 @@ This package provides a library common to all Jami clients.")
     (home-page "https://jami.net")
     (license license:gpl3+)))
 
-(define-public jami-client-gnome
+(define-public jami
   (package
     (inherit libring)
-    (name "jami-client-gnome")
+    (name "jami")
     (build-system cmake-build-system)
     (inputs
      `(("libringclient" ,libringclient)
@@ -879,7 +897,7 @@ This package provides a library common to all Jami clients.")
        ("glib:bin" ,glib "bin")
        ("doxygen" ,doxygen)))
     (propagated-inputs
-     `(("libring" ,libring)             ; Contains `dring', the daemon, which is automatically by d-bus.
+     `(("libring" ,libring) ; Contains `dring', the daemon, which is automatically by d-bus.
        ("adwaita-icon-theme" ,adwaita-icon-theme)
        ("evolution-data-server" ,evolution-data-server)))
     (arguments
@@ -894,10 +912,10 @@ This package provides a library common to all Jami clients.")
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (path (string-append (assoc-ref inputs "sqlite") "/lib")))
-               (wrap-program (string-append out "/bin/gnome-ring")
+               (wrap-program (string-append out "/bin/jami-gnome")
                  `("LD_LIBRARY_PATH" ":" prefix (,path))))
              #t)))))
-    (synopsis "Distributed multimedia communications platform")
+    (synopsis "Distributed, privacy-respecting communication program")
     (description "Jami (formerly GNU Ring) is a secure and distributed voice,
 video and chat communication platform that requires no centralized server and
 leaves the power of privacy in the hands of the user.  It supports the SIP and
@@ -906,3 +924,6 @@ IAX protocols, as well as decentralized calling using P2P-DHT.
 This package provides the Jami client for the GNOME desktop.")
     (home-page "https://jami.net")
     (license license:gpl3+)))
+
+(define-public jami-client-gnome
+  (deprecated-package "jami-client-gnome" jami))