Subject: [bug#47274] Linphone Packages

From: Raghav Gururajan <[email-masked]>
Date: Sat, 20 Mar 2021 00:26:42 -0400

Hello Guix!

The packages in linphone.scm has been severely outdated and posses risk, 
as upstream even removed the tarballs. So I have re-worked all the 
packages in linphone.scm, as fast as I could.

@Maxim: Thanks so much for offering to review.

Please find the attached patch-set.

I am still working on one component, linphone-desktop. The upgrade from 
v4.1.1 to v4.2.5, turns to be more complicated than I expected.

Regards,
RG.
From 81750f3c1b2d25ff116aa8effd4f760ce715474d Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Sat, 13 Mar 2021 17:08:57 -0500
Subject: [PATCH 01/50] gnu: Add libdecaf.

* gnu/packages/crypto.scm (libdecaf): New variable.
---
 gnu/packages/crypto.scm | 63 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 63 insertions(+)

diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 0000e7fbf2..3959464d56 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -47,9 +47,11 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crates-io)
   #:use-module (gnu packages cryptsetup)
+  #:use-module (gnu packages documentation)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages golang)
+  #:use-module (gnu packages graphviz)
   #:use-module (gnu packages image)
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages libbsd)
@@ -88,6 +90,67 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26))
 
+(define-public libdecaf
+  (package
+    (name "libdecaf")
+    (version "1.0.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "git://git.code.sf.net/p/ed448goldilocks/code")
+                    (commit
+                     (string-append "v" version))))
+              (file-name
+               (git-file-name name version))
+              (sha256
+               (base32 "1ajgmyvc6a4m1h2hg1g4wz7ibx10x1xys9m6ancnmmf1f2srlfly"))))
+    (build-system cmake-build-system)
+    (outputs '("out" "python" "doc"))
+    (arguments
+     `(#:configure-flags '("-DENABLE_STATIC=OFF")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-python-binding
+           (lambda _
+             (substitute* "python/setup.py"
+               (("gmake")
+                "make")
+               (("'\\.\\.', 'build', 'lib', 'libdecaf\\.so'")
+                "'..', '..', 'build', 'src', 'libdecaf.so'"))
+             #t))
+         (add-after 'install 'install-python-binding
+           (lambda* (#:key outputs #:allow-other-keys)
+             (with-directory-excursion "../source/python"
+               (invoke "python" "setup.py" "install"
+                       (string-append "--prefix=" (assoc-ref outputs "python"))
+                       "--root=/"))
+             #t))
+         (add-after 'install-python-binding 'install-documentation
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "make" "doc")
+             (let* ((doc (assoc-ref outputs "doc"))
+                    (dest (string-append doc "/share/doc")))
+               (copy-recursively "doc" dest))
+             #t)))))
+    (native-inputs
+     `(("dot" ,graphviz)
+       ("doxygen" ,doxygen)
+       ("python" ,python-wrapper)))
+    (inputs
+     `(("python2" ,python-2.7)
+       ("python3" ,python)))
+    (synopsis "Decaf Elliptic Curve Library")
+    (description "The libdecaf library is an implementation of elliptic curve
+cryptography using the Montgomery and Edwards curves Curve25519, Ed25519,
+Ed448-Goldilocks and Curve448, using the Decaf encoding.")
+    (home-page "http://ed448goldilocks.sourceforge.net/")
+    (license
+     (list
+      ;; Library.
+      license:expat
+      ;; Binding.
+      license:bsd-2))))
+
 (define-public libsodium
   (package
     (name "libsodium")
-- 
2.31.0

From c267e6cd6b7cb1756bc42dde95cb27f75691ce72 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Sat, 13 Mar 2021 12:04:37 -0500
Subject: [PATCH 02/50] gnu: bcunit: Update to 3.0.2-13.

* gnu/packages/linphone.scm (bcunit) [source]: Switch to git repository.
[version]: Update to 3.0.2-13.
[native-inputs]: Add perl.
---
 gnu/packages/linphone.scm | 30 ++++++++++++++++++------------
 1 file changed, 18 insertions(+), 12 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index afa542412f..6d243d2073 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -35,6 +35,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
@@ -57,28 +58,33 @@
   #:use-module (guix build-system gnu))
 
 (define-public bcunit
-  (package
-    (name "bcunit")
-    (version "3.0.2")
-    (source
-     (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/" name
-                       "/" name "-" version ".tar.gz"))
-       (sha256
-        (base32 "0ylchj8w98ic2fkqpxc6yk4s6s0h0ql2zsz5n49jd7126m4h8dqk"))))
+  (let ((commit "74021cc7cb20a4e177748dd2948173e1f9c270ae")
+        (revision "13"))
+    (package
+      (name "bcunit")
+      (version (git-version "3.0.2" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "git://git.linphone.org/bcunit")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "0npdwvanjkfg9vrqs5yi8vh6wliv50ycdli8pzavir84nb31nq1b"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f                      ; No test target
        #:configure-flags
        (list "-DENABLE_STATIC=NO")))    ; Not required
+    (native-inputs
+     `(("perl" ,perl)))
     (synopsis "Belledonne Communications Unit Testing Framework")
     (description "BCUnit is a fork of the defunct project CUnit, with several
 fixes and patches applied.  It is an unit testing framework for writing,
 administering, and running unit tests in C.")
     (home-page "https://gitlab.linphone.org/BC/public/bcunit")
-    (license license:lgpl2.0+)))
+    (license license:lgpl2.0+))))
 
 (define-public bctoolbox
   (package
-- 
2.31.0

From e40e9a4636ad478e78a1158a4892cd3286c36215 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Sat, 13 Mar 2021 12:17:47 -0500
Subject: [PATCH 03/50] gnu: bcunit: Enable curses support.

* gnu/packages/linphone.scm (bcunit) [arguments]<#:configure-flags>
[-DENABLE_CURSES]: New flag.
[inputs]: Add ncurses.
---
 gnu/packages/linphone.scm | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 6d243d2073..dc78636f5a 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -35,6 +35,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
@@ -76,9 +77,13 @@
     (arguments
      '(#:tests? #f                      ; No test target
        #:configure-flags
-       (list "-DENABLE_STATIC=NO")))    ; Not required
+       (list
+        "-DENABLE_STATIC=NO"
+        "-DENABLE_CURSES=ON")))
     (native-inputs
      `(("perl" ,perl)))
+    (inputs
+     `(("ncurses" ,ncurses)))
     (synopsis "Belledonne Communications Unit Testing Framework")
     (description "BCUnit is a fork of the defunct project CUnit, with several
 fixes and patches applied.  It is an unit testing framework for writing,
-- 
2.31.0

From b3ad963f671cb96899f83010c34cd2267efd98d8 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Sat, 13 Mar 2021 13:02:42 -0500
Subject: [PATCH 04/50] gnu: bcunit: Enable documentation.

* gnu/packages/linphone.scm (bcunit) [outputs]: New output "doc".
[arguments]<#:configure-flags>[-DENABLE_DOC]: New flag.
<#:phases>['seperate-outputs]: New phase.
---
 gnu/packages/linphone.scm | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index dc78636f5a..bbea6411f7 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -74,12 +74,25 @@
          (sha256
           (base32 "0npdwvanjkfg9vrqs5yi8vh6wliv50ycdli8pzavir84nb31nq1b"))))
     (build-system cmake-build-system)
+    (outputs '("out" "doc"))
     (arguments
-     '(#:tests? #f                      ; No test target
+     `(#:tests? #f                      ; No test target
        #:configure-flags
        (list
         "-DENABLE_STATIC=NO"
-        "-DENABLE_CURSES=ON")))
+        "-DENABLE_CURSES=ON"
+        "-DENABLE_DOC=ON")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'seperate-outputs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (assoc-ref outputs "doc")))
+               (mkdir-p (string-append doc "/share/doc"))
+               (rename-file
+                (string-append out "/share/doc/BCUnit")
+                (string-append doc "/share/doc/BCUnit")))
+             #t)))))
     (native-inputs
      `(("perl" ,perl)))
     (inputs
-- 
2.31.0

From ef50d146f39a00f5d2cc37dffaecf676865e1822 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Mon, 15 Mar 2021 18:11:32 -0400
Subject: [PATCH 05/50] gnu: bcunit: Enable examples.

* gnu/packages/linphone.scm (bcunit) [outputs]: New output "example".
[arguments]<#:configure-flag>[-DENABLE_EXAMPLES]: New flag.
<#:phases>['patch-source]: New phase.
['seperate-outputs]: Modify.
---
 gnu/packages/linphone.scm | 72 ++++++++++++++++++++++++---------------
 1 file changed, 44 insertions(+), 28 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index bbea6411f7..6b161d326f 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -73,36 +73,52 @@
          (file-name (git-file-name name version))
          (sha256
           (base32 "0npdwvanjkfg9vrqs5yi8vh6wliv50ycdli8pzavir84nb31nq1b"))))
-    (build-system cmake-build-system)
-    (outputs '("out" "doc"))
-    (arguments
-     `(#:tests? #f                      ; No test target
-       #:configure-flags
-       (list
-        "-DENABLE_STATIC=NO"
-        "-DENABLE_CURSES=ON"
-        "-DENABLE_DOC=ON")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'install 'seperate-outputs
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (doc (assoc-ref outputs "doc")))
-               (mkdir-p (string-append doc "/share/doc"))
-               (rename-file
-                (string-append out "/share/doc/BCUnit")
-                (string-append doc "/share/doc/BCUnit")))
-             #t)))))
-    (native-inputs
-     `(("perl" ,perl)))
-    (inputs
-     `(("ncurses" ,ncurses)))
-    (synopsis "Belledonne Communications Unit Testing Framework")
-    (description "BCUnit is a fork of the defunct project CUnit, with several
+      (build-system cmake-build-system)
+      (outputs '("out" "doc" "example"))
+      (arguments
+       `(#:tests? #f                    ; No test target
+         #:configure-flags
+         (list
+          "-DENABLE_STATIC=NO"
+          "-DENABLE_CURSES=ON"
+          "-DENABLE_DOC=ON"
+          "-DENABLE_EXAMPLES=ON")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'patch-source
+             (lambda _
+               ;; Include BCunit headers for examples.
+               (substitute* "Examples/CMakeLists.txt"
+                 (("\\$\\{CMAKE_CURRENT_SOURCE_DIR\\}")
+                  (string-append "${CMAKE_CURRENT_SOURCE_DIR} "
+                                 "${PROJECT_SOURCE_DIR}/BCUnit/Headers "
+                                 "${CMAKE_BINARY_DIR}/BCUnit/Headers")))
+               #t))
+           (add-after 'install 'seperate-outputs
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (doc (assoc-ref outputs "doc"))
+                      (example (assoc-ref outputs "example")))
+                 (for-each mkdir-p
+                           `(,(string-append doc "/share/doc")
+                             ,(string-append example "/share/BCUnit")))
+                 (rename-file
+                  (string-append out "/share/doc/BCUnit")
+                  (string-append doc "/share/doc/BCUnit"))
+                 (rename-file
+                  (string-append out "/share/BCUnit/Examples")
+                  (string-append example "/share/BCUnit/Examples")))
+               #t)))))
+      (native-inputs
+       `(("perl" ,perl)))
+      (inputs
+       `(("ncurses" ,ncurses)))
+      (synopsis "Belledonne Communications Unit Testing Framework")
+      (description "BCUnit is a fork of the defunct project CUnit, with several
 fixes and patches applied.  It is an unit testing framework for writing,
 administering, and running unit tests in C.")
-    (home-page "https://gitlab.linphone.org/BC/public/bcunit")
-    (license license:lgpl2.0+))))
+      (home-page "https://gitlab.linphone.org/BC/public/bcunit")
+      (license license:lgpl2.0+))))
 
 (define-public bctoolbox
   (package
-- 
2.31.0

From ef6de16159ec2a71e9b55bce24c27031e4bad39c Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Mon, 15 Mar 2021 18:17:15 -0400
Subject: [PATCH 06/50] gnu: bcunit: Enable tests.

* gnu/packages/linphone.scm (bcunit) [arguments]<#:tests?>: Remove argument.
<#:configure-flags>[-DENABLE_TEST]: New flag.
<#:phases>['patch-source]: Modify.
['check]: Replace with custom phase.
---
 gnu/packages/linphone.scm | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 6b161d326f..b7cf777401 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -76,13 +76,13 @@
       (build-system cmake-build-system)
       (outputs '("out" "doc" "example"))
       (arguments
-       `(#:tests? #f                    ; No test target
-         #:configure-flags
+       `(#:configure-flags
          (list
           "-DENABLE_STATIC=NO"
           "-DENABLE_CURSES=ON"
           "-DENABLE_DOC=ON"
-          "-DENABLE_EXAMPLES=ON")
+          "-DENABLE_EXAMPLES=ON"
+          "-DENABLE_TEST=ON")
          #:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'patch-source
@@ -93,6 +93,17 @@
                   (string-append "${CMAKE_CURRENT_SOURCE_DIR} "
                                  "${PROJECT_SOURCE_DIR}/BCUnit/Headers "
                                  "${CMAKE_BINARY_DIR}/BCUnit/Headers")))
+               ;; Link bcunit and bcunit_tests libraries.
+               (substitute* "BCUnit/Sources/CMakeLists.txt"
+                 (("target_include_directories\\(bcunit_test PUBLIC Test\\)")
+                  (string-append
+                   "target_include_directories(bcunit_test PUBLIC Test)\n"
+                   "target_link_libraries(bcunit_test bcunit)")))
+               #t))
+           (replace 'check
+             (lambda _
+               (with-directory-excursion "BCUnit/Sources/Test"
+                 (invoke "./test_bcunit"))
                #t))
            (add-after 'install 'seperate-outputs
              (lambda* (#:key outputs #:allow-other-keys)
-- 
2.31.0

From db547a116b990665dbdf19d4f1c93c6970739f59 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Mon, 15 Mar 2021 18:18:44 -0400
Subject: [PATCH 07/50] gnu: bcunit: Enable mem-trace support.

* gnu/packages/linphone.scm (bcunit) [arguments]<#:configure-flags>
[-DENABLE_MEMTRACE]: New flag.
---
 gnu/packages/linphone.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index b7cf777401..09f4c24730 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -82,7 +82,8 @@
           "-DENABLE_CURSES=ON"
           "-DENABLE_DOC=ON"
           "-DENABLE_EXAMPLES=ON"
-          "-DENABLE_TEST=ON")
+          "-DENABLE_TEST=ON"
+          "-DENABLE_MEMTRACE=ON")
          #:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'patch-source
-- 
2.31.0

From b9b239f47780ab3382370c02b5595881d0922202 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Sat, 13 Mar 2021 14:00:48 -0500
Subject: [PATCH 08/50] gnu: bctoolbox: Update to 4.4.34.

* gnu/packages/linphone.scm (bctoolbox) [source]: Switch to git repository.
[version]: Update to 4.4.34.
---
 gnu/packages/linphone.scm | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 09f4c24730..90f5796c1f 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -135,15 +135,16 @@ administering, and running unit tests in C.")
 (define-public bctoolbox
   (package
     (name "bctoolbox")
-    (version "0.6.0")
+    (version "4.4.34")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/" name
-                       "/" name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "git://git.linphone.org/bctoolbox")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1a1i70pb4hhnykkwyhhc7fv67q556l8kprny8xzgfqpj1nby2ms6"))))
+        (base32 "0bfswwvvdshaahg4jd2j10f0sci8809s4khajd0m6b059zwc7y25"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f                      ; No test target
@@ -156,7 +157,7 @@ administering, and running unit tests in C.")
     (description "BcToolBox is an utilities library used by Belledonne
 Communications software like belle-sip, mediastreamer2 and linphone.")
     (home-page "https://gitlab.linphone.org/BC/public/bctoolbox")
-    (license license:gpl2+)))
+    (license license:gpl3+)))
 
 (define-public belr
   (package
-- 
2.31.0

From fc95b7f892f57cdc6af37befd5f39d69f6bb210f Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Sat, 13 Mar 2021 14:55:03 -0500
Subject: [PATCH 09/50] gnu: bctoolbox: Enable tests.

* gnu/packages/linphone.scm (bctoolbox) [arguments]<#:tests?>: Remove argument.
<#:phases>['patch-source]: New phase.
['check]: Replace with custom phase.
---
 gnu/packages/linphone.scm | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 90f5796c1f..9d54b1b874 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -147,9 +147,21 @@ administering, and running unit tests in C.")
         (base32 "0bfswwvvdshaahg4jd2j10f0sci8809s4khajd0m6b059zwc7y25"))))
     (build-system cmake-build-system)
     (arguments
-     '(#:tests? #f                      ; No test target
-       #:configure-flags
-       (list "-DENABLE_STATIC=OFF")))   ; Not required
+     `(#:configure-flags '("-DENABLE_STATIC=OFF")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda _
+             ;; Disable failing tests.
+             (substitute* "tester/port.c"
+               (("[ \t]*TEST_NO_TAG\\(\"Addrinfo sort\", bctbx_addrinfo_sort_test\\)")
+                ""))
+             #t))
+         (replace 'check
+           (lambda _
+             (with-directory-excursion "tester"
+               (invoke "./bctoolbox_tester"))
+             #t)))))
     (inputs
      `(("bcunit" ,bcunit)
        ("mbedtls" ,mbedtls-apache)))
-- 
2.31.0

From b1041213be6ee2b93427b9713fa0883ace5b619b Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Sat, 13 Mar 2021 19:32:01 -0500
Subject: [PATCH 10/50] gnu: bctoolbox: Enable decaf support.

* gnu/packages/linphone.scm (bctoolbox) [arguments]<#:phases>['patch-source]: Modify.
[inputs]: Add libdecaf.
---
 gnu/packages/linphone.scm | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 9d54b1b874..1a83105334 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -25,6 +25,7 @@
   #:use-module (gnu packages audio)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages crypto)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
@@ -151,7 +152,16 @@ administering, and running unit tests in C.")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
-           (lambda _
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Fix decaf dependency.
+             (let* ((decaf (assoc-ref inputs "decaf")))
+               (substitute* (find-files "." "CMakeLists.txt")
+                 (("find_package\\(Decaf CONFIG\\)")
+                  "set(DECAF_FOUND 1)")
+                 (("\\$\\{DECAF_INCLUDE_DIRS\\}")
+                  (string-append decaf "/include/decaf"))
+                 (("\\$\\{DECAF_TARGETNAME\\}")
+                  "decaf")))
              ;; Disable failing tests.
              (substitute* "tester/port.c"
                (("[ \t]*TEST_NO_TAG\\(\"Addrinfo sort\", bctbx_addrinfo_sort_test\\)")
@@ -164,6 +174,7 @@ administering, and running unit tests in C.")
              #t)))))
     (inputs
      `(("bcunit" ,bcunit)
+       ("decaf" ,libdecaf)
        ("mbedtls" ,mbedtls-apache)))
     (synopsis "Belledonne Communications Tool Box")
     (description "BcToolBox is an utilities library used by Belledonne
-- 
2.31.0

From b3e167f7f52e51e08375801bb76512e9b38302be Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Sun, 14 Mar 2021 23:40:02 -0400
Subject: [PATCH 11/50] gnu: belr: Update to 4.4.34.

* gnu/packages/linphone.scm (belr) [source]: Switch to git repository.
[version]: Update to 4.4.34.
[inputs]: Add eudev.
---
 gnu/packages/linphone.scm | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 1a83105334..26b2b0cbba 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -185,22 +185,24 @@ Communications software like belle-sip, mediastreamer2 and linphone.")
 (define-public belr
   (package
     (name "belr")
-    (version "0.1.3")
+    (version "4.4.34")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/" name
-                       "/" name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "git://git.linphone.org/belr")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1fwv2cg3qy9vdc7dimcda7nqcqc1h2cdd7ikhk7ng7q4ys8m96c1"))))
+        (base32 "0w2canwwm0qb99whnangvaybvjzq8xg6vksqxykgr8fbx7clw03h"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; No test target
        #:configure-flags
        (list "-DENABLE_STATIC=OFF")))   ; Not required
     (inputs
-     `(("bctoolbox" ,bctoolbox)))
+     `(("bctoolbox" ,bctoolbox)
+       ("libudev" ,eudev)))
     (synopsis "Belledonne Communications Language Recognition Library")
     (description "Belr is Belledonne Communications' language recognition
 library, written in C++11.  It parses text inputs formatted according to a
-- 
2.31.0

From 1d4928910b504984498bd432faadc8a91471fc29 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Mon, 15 Mar 2021 01:57:33 -0400
Subject: [PATCH 12/50] gnu: belr: Enable tests.

* gnu/packages/linphone.scm (belr) [outputs]: New output "test".
[arguments]<#:tests?>: Remove argument.
<#:phases>['check]: Replace with custom phase.
['seperate-outputs]: New phase.
---
 gnu/packages/linphone.scm | 28 +++++++++++++++++++++++++---
 1 file changed, 25 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 26b2b0cbba..8767662050 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -196,10 +196,32 @@ Communications software like belle-sip, mediastreamer2 and linphone.")
        (sha256
         (base32 "0w2canwwm0qb99whnangvaybvjzq8xg6vksqxykgr8fbx7clw03h"))))
     (build-system cmake-build-system)
+    (outputs '("out" "test"))
     (arguments
-     `(#:tests? #f                      ; No test target
-       #:configure-flags
-       (list "-DENABLE_STATIC=OFF")))   ; Not required
+     `(#:configure-flags '("-DENABLE_STATIC=OFF")
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             (copy-file "tester/belr_tester" "../source/tester/belr_tester")
+             (with-directory-excursion "../source/tester"
+               (invoke "./belr_tester"))
+             #t))
+         (add-after 'install 'seperate-outputs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (test (assoc-ref outputs "test"))
+                    (test-name (string-append ,name "_tester")))
+               (for-each mkdir-p
+                         `(,(string-append test "/bin")
+                           ,(string-append test "/share")))
+               (rename-file
+                (string-append out "/bin/" test-name)
+                (string-append test "/bin/" test-name))
+               (rename-file
+                (string-append out "/share/belr-tester")
+                (string-append test "/share/" test-name)))
+             #t)))))
     (inputs
      `(("bctoolbox" ,bctoolbox)
        ("libudev" ,eudev)))
-- 
2.31.0

From 112a52cff24b678e8fd3e41f54d48e47f18fbc23 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Mon, 15 Mar 2021 16:24:20 -0400
Subject: [PATCH 13/50] gnu: belcard: Update to 4.4.34.

* gnu/packages/linphone.scm (belcard) [source]: Switch to git repository.
[version]: Update to 4.4.34.
[native-inputs]: Add python-wrapper.
[inputs]: Add eudev.
---
 gnu/packages/linphone.scm | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 8767662050..25cfe6de94 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -236,23 +236,27 @@ IETF.")
 (define-public belcard
   (package
     (name "belcard")
-    (version "1.0.2")
+    (version "4.4.34")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/" name
-                       "/" name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "git://git.linphone.org/belcard")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0iiyrll1shnbb0561pkvdqcmx9b2cdr76xpsbaqdirc3s4xzcl0k"))))
+        (base32 "16x2xp8d0a115132zhy1kpxkyj86ia7vrsnpjdg78fnbvmvysc8m"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; No test target
        #:configure-flags
        (list "-DENABLE_STATIC=OFF")))   ; Not required
+    (native-inputs
+     `(("python" ,python-wrapper)))
     (inputs
      `(("bctoolbox" ,bctoolbox)
-       ("belr" ,belr)))
+       ("belr" ,belr)
+       ("libudev" ,eudev)))
     (synopsis "Belledonne Communications VCard Library")
     (description "Belcard is a C++ library to manipulate VCard standard
 format.")
-- 
2.31.0

From 9442099b5d232b558bcef0a2e7382882416c4b86 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Mon, 15 Mar 2021 17:11:06 -0400
Subject: [PATCH 14/50] gnu: belcard: Seperate outputs.

* gnu/packages/linphone.scm (belcard) [outputs]: New output "test".
['seperate-outputs]: New phase.
---
 gnu/packages/linphone.scm | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 25cfe6de94..aee6ce4611 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -247,10 +247,27 @@ IETF.")
        (sha256
         (base32 "16x2xp8d0a115132zhy1kpxkyj86ia7vrsnpjdg78fnbvmvysc8m"))))
     (build-system cmake-build-system)
+    (outputs '("out" "test"))
     (arguments
-     `(#:tests? #f                      ; No test target
-       #:configure-flags
-       (list "-DENABLE_STATIC=OFF")))   ; Not required
+     `(#:tests? #f ; FIX-ME
+       #:configure-flags '("-DENABLE_STATIC=OFF")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'seperate-outputs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (test (assoc-ref outputs "test"))
+                    (test-name (string-append ,name "_tester")))
+               (for-each mkdir-p
+                         `(,(string-append test "/bin")
+                           ,(string-append test "/share")))
+               (rename-file
+                (string-append out "/bin/" test-name)
+                (string-append test "/bin/" test-name))
+               (rename-file
+                (string-append out "/share/" test-name)
+                (string-append test "/share/" test-name)))
+             #t)))))
     (native-inputs
      `(("python" ,python-wrapper)))
     (inputs
-- 
2.31.0

From 19fd34634b418fcd178d655c3dd8445810a32756 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Mon, 15 Mar 2021 20:30:21 -0400
Subject: [PATCH 15/50] gnu: bcmatroska2: Change source.

* gnu/packages/linphone.scm (bcmatroska2) [source]: Switch to git repository.
---
 gnu/packages/linphone.scm | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index aee6ce4611..d42744d7af 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -286,12 +286,13 @@ format.")
     (version "0.23")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/" name
-                       "/" name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "git://git.linphone.org/bcmatroska2")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1a0vlk4fhh189pfzrwbc3xbc5vyx6cnxy642d1h40045jz9y4h15"))))
+        (base32 "1avl9w18kh4dxm3g8j0bkw39bksd7bz3nfxvyibqqnz63ds8vfi2"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; No test target
-- 
2.31.0

From d0d45bb75ba46bd5b68d9a07eaea118d16710912 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Mon, 15 Mar 2021 22:11:02 -0400
Subject: [PATCH 16/50] gnu: bcg729: Remove '.git' suffix from URL.

* gnu/packages/linphone.scm (bcg729) [source]: Remove '.git' suffix from URL.
---
 gnu/packages/linphone.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index d42744d7af..5bbf60e204 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -321,7 +321,7 @@ tracks in one file. ")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "git://git.linphone.org/bcg729.git")
+             (url "git://git.linphone.org/bcg729")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-- 
2.31.0

From b5f3e5d0684fbb19e19533e29f06879c0fb3c0f1 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Mon, 15 Mar 2021 21:30:54 -0400
Subject: [PATCH 17/50] gnu: bcg729: Enable tests.

* gnu/packages/linphone.scm (bcg729) [arguments]<#:tests?>: Remove argument.
<#:configure-flags>[-DENABLE_TESTS]: New flag.
<#:phases>['copy-inputs]: New phase.
['check]: Replace with custom phase.
[native-inputs]: Add perl, test-patterns and unzip.
---
 gnu/packages/linphone.scm | 55 ++++++++++++++++++++++++++++++++++++---
 1 file changed, 52 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 5bbf60e204..346ca30a77 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -328,9 +328,58 @@ tracks in one file. ")
         (base32 "1hal6b3w6f8y5r1wa0xzj8sj2jjndypaxyw62q50p63garp2h739"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f                      ; No test target
-       #:configure-flags
-       (list "-DENABLE_STATIC=NO")))    ; Not required
+     `(#:configure-flags
+       (list
+        "-DENABLE_STATIC=NO"
+        "-DENABLE_TESTS=YES")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'copy-inputs
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((test-patterns (assoc-ref inputs "test-patterns"))
+                   (dest (string-append "test/bcg729-patterns.zip")))
+               (copy-recursively test-patterns dest))
+             #t))
+         (replace 'check
+           (lambda _
+             (with-directory-excursion "test"
+               (invoke "unzip" "bcg729-patterns.zip")
+               (for-each
+                (lambda (test-name)
+                  (invoke "./testCampaign" "-s" test-name))
+                (list
+                 "fixedCodebookSearch"
+                 "postProcessing"
+                 "adaptativeCodebookSearch"
+                 "computeLP"
+                 "computeAdaptativeCodebookGain"
+                 "postFilter"
+                 "decoder"
+                 "LPSynthesisFilter"
+                 "decodeLSP"
+                 ;; "encoder"
+                 ;; "LSPQuantization"
+                 "preProcessing"
+                 "decodeFixedCodeVector"
+                 "CNGdecoder"
+                 ;; "LP2LSPConversion"
+                 "gainQuantization"
+                 "findOpenLoopPitchDelay"
+                 "decodeGains"
+                 "computeWeightedSpeech"
+                 "interpolateqLSPAndConvert2LP"
+                 "decodeAdaptativeCodeVector")))
+             #t)))))
+    (native-inputs
+     `(("perl" ,perl)
+       ("test-patterns"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append "http://www.belledonne-communications.com/"
+                               "bc-downloads/bcg729-patterns.zip"))
+           (sha256
+            (base32 "1kivarhh3izrl9sg0szs6x6pbq2ap0y6xsraw0gbgspi4gnfihrh"))))
+       ("unzip" ,unzip)))
     (synopsis "Belledonne Communications G729 Codec")
     (description "BcG729 is an implementation of both encoder and decoder of
 the ITU G729 speech codec.  The library written in C 99 is fully portable and
-- 
2.31.0

From 30885ba367c7dde9aead93f4a0956133f9434fea Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Mon, 15 Mar 2021 21:38:07 -0400
Subject: [PATCH 18/50] gnu: bcg729: Update home-page and license.

* gnu/packages/linphone.scm (bcg729) [home-page]: Modify.
[license]: Update to gpl3+.
---
 gnu/packages/linphone.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 346ca30a77..f1bcae1208 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -386,8 +386,8 @@ the ITU G729 speech codec.  The library written in C 99 is fully portable and
 can be executed on many platforms including both ARM and x86 processors.  It
 supports concurrent channels encoding and decoding for multi call application
 such as conferencing.")
-    (home-page "https://gitlab.linphone.org/BC/public/belcard")
-    (license license:gpl2+)))
+    (home-page "https://linphone.org/technical-corner/bcg729")
+    (license license:gpl3+)))
 
 (define-public ortp
   (package
-- 
2.31.0

From b86edac67e0c971ad0101f238cb6612fac987060 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Mon, 15 Mar 2021 22:09:07 -0400
Subject: [PATCH 19/50] gnu: ortp: Update to 4.4.34.

* gnu/packages/linphone.scm (ortp) [source]: Switch to git repository.
[version]: Update to 4.4.34.
---
 gnu/packages/linphone.scm | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index f1bcae1208..fbe9d81d58 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -392,15 +392,16 @@ such as conferencing.")
 (define-public ortp
   (package
     (name "ortp")
-    (version "1.0.2")
+    (version "4.4.34")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/" name
-                       "/" name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "git://git.linphone.org/ortp")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "016qg0lmdgmqh2kv19w9qhi4kkiyi5h1xp35g2s65b1j8ccm25d5"))))
+        (base32 "1r1kvjzyfvkf66in4p51wi87balzg3sw3aq6r4xr609mz86spi5m"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; No test target
-- 
2.31.0

From 68d0598e93baa654e8fe751122568fa3f2026600 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Mon, 15 Mar 2021 22:19:47 -0400
Subject: [PATCH 20/50] gnu: ortp: Seperate outputs.

* gnu/packages/linphone.scm (ortp) [outputs]: New output "doc".
[arguments]<#:phases>['seperate-outputs]: New phase.
---
 gnu/packages/linphone.scm | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index fbe9d81d58..3273df02c2 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -403,10 +403,24 @@ such as conferencing.")
        (sha256
         (base32 "1r1kvjzyfvkf66in4p51wi87balzg3sw3aq6r4xr609mz86spi5m"))))
     (build-system cmake-build-system)
+    (outputs '("out" "doc"))
     (arguments
      `(#:tests? #f                      ; No test target
        #:configure-flags
-       (list "-DENABLE_STATIC=NO")))    ; Not required
+       (list
+        "-DENABLE_STATIC=NO")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'seperate-outputs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (doc (assoc-ref outputs "doc"))
+                    (doc-name (string-append ,name "-4.4.0")))
+               (mkdir-p (string-append doc "/share/doc"))
+               (rename-file
+                (string-append out "/share/doc/" doc-name)
+                (string-append doc "/share/doc/" doc-name)))
+             #t)))))
     (native-inputs
      `(("dot" ,graphviz)
        ("doxygen" ,doxygen)))
-- 
2.31.0

From 62d8a115dde670a186dba96603bd7f4f1c1ced6c Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 16:08:52 -0400
Subject: [PATCH 21/50] gnu: ortp: Enable tests.

* gnu/packages/linphone.scm (ortp) [outputs]: New output "test".
[arguments]<#:configure-flag>[-DENABLE_TESTS]: New flag.
<#:phases>['seperate-outputs]: Modify.
---
 gnu/packages/linphone.scm | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 3273df02c2..98209ee982 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -403,23 +403,30 @@ such as conferencing.")
        (sha256
         (base32 "1r1kvjzyfvkf66in4p51wi87balzg3sw3aq6r4xr609mz86spi5m"))))
     (build-system cmake-build-system)
-    (outputs '("out" "doc"))
+    (outputs '("out" "doc" "test"))
     (arguments
-     `(#:tests? #f                      ; No test target
+     `(#:tests? #f                      ; Require networking
        #:configure-flags
        (list
-        "-DENABLE_STATIC=NO")
+        "-DENABLE_STATIC=NO"
+        "-DENABLE_TESTS=YES")
        #:phases
        (modify-phases %standard-phases
          (add-after 'install 'seperate-outputs
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (doc (assoc-ref outputs "doc"))
-                    (doc-name (string-append ,name "-4.4.0")))
-               (mkdir-p (string-append doc "/share/doc"))
+                    (doc-name (string-append ,name "-4.4.0"))
+                    (test (assoc-ref outputs "test")))
+               (for-each mkdir-p
+                         `(,(string-append doc "/share/doc")
+                           ,(string-append test "/bin")))
                (rename-file
                 (string-append out "/share/doc/" doc-name)
-                (string-append doc "/share/doc/" doc-name)))
+                (string-append doc "/share/doc/" doc-name))
+               (rename-file
+                (string-append out "/bin")
+                (string-append test "/bin")))
              #t)))))
     (native-inputs
      `(("dot" ,graphviz)
-- 
2.31.0

From cabddb4d5e2388d00daf14e6a133c5673f7b3f4c Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Mon, 15 Mar 2021 22:52:10 -0400
Subject: [PATCH 22/50] gnu: ortp: Update home-page and license.

* gnu/packages/linphone.scm (ortp) [home-page]: Modify.
[license]: Update to gpl3+.
---
 gnu/packages/linphone.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 98209ee982..28c9d3f599 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -436,8 +436,8 @@ such as conferencing.")
     (synopsis "Belledonne Communications RTP Library")
     (description "oRTP is a C library implementing the RTP protocol.  It
 implements the RFC 3550 standard.")
-    (home-page "https://gitlab.linphone.org/BC/public/ortp")
-    (license license:gpl2+)))
+    (home-page "https://linphone.org/technical-corner/ortp")
+    (license license:gpl3+)))
 
 (define-public bzrtp
   (package
-- 
2.31.0

From 3b32b9a8f2cd1eca6397c77fd80e54a6c0790908 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 12:22:31 -0400
Subject: [PATCH 23/50] gnu: bztrp: Update to 4.4.34.

* gnu/packages/linphone.scm (bzrtp) [source]: Switch to git repository.
[version]: Update to 4.4.34.
---
 gnu/packages/linphone.scm | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 28c9d3f599..bba7cefb8a 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -442,15 +442,16 @@ implements the RFC 3550 standard.")
 (define-public bzrtp
   (package
     (name "bzrtp")
-    (version "1.0.6")
+    (version "4.4.34")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/" name
-                       "/" name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "git://git.linphone.org/bzrtp")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "12y0kkh90pixaaxfyx26ca2brhy6nw57fsypp6vh8jk1illv0j5z"))))
+        (base32 "1yjmsbqmymzl4r7sba6w4a2yld8m6hzafr6jf7sj0syhwpnc3zv6"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; No test target
-- 
2.31.0

From bc1c717b578ca10042dea6ba06376e44ac51a220 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 12:29:07 -0400
Subject: [PATCH 24/50] gnu: bzrtp: Enable tests.

* gnu/packages/linphone.scm (bzrtp) [arguments]<#:tests?>: Remove argument.
<#:configure-flags>[-DENABLE_TESTS]: New flag.
---
 gnu/packages/linphone.scm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index bba7cefb8a..596fb467a0 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -454,9 +454,10 @@ implements the RFC 3550 standard.")
         (base32 "1yjmsbqmymzl4r7sba6w4a2yld8m6hzafr6jf7sj0syhwpnc3zv6"))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f                      ; No test target
-       #:configure-flags
-       (list "-DENABLE_STATIC=NO")))    ; Not required
+     `(#:configure-flags
+       (list
+        "-DENABLE_STATIC=NO"
+        "-DENABLE_TESTS=YES")))
     (inputs
      `(("bctoolbox" ,bctoolbox)
        ("sqlite3" ,sqlite)
-- 
2.31.0

From 3ea7cfd928407230199619bebcec83d40fa07d58 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 12:30:58 -0400
Subject: [PATCH 25/50] gnu: bzrtp: Update license.

* gnu/packages/linphone.scm (bzrtp) [license]: Update to gpl3+.
---
 gnu/packages/linphone.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 596fb467a0..7261dbe1d8 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -467,7 +467,7 @@ implements the RFC 3550 standard.")
 written in C.  It is fully portable and can be executed on many platforms
 including both ARM and x86.")
     (home-page "https://gitlab.linphone.org/BC/public/bzrtp")
-    (license license:gpl2+)))
+    (license license:gpl3+)))
 
 (define-public belle-sip
   (package
-- 
2.31.0

From bdc8398ef86d45f1ab41582c2c4915debe3faf6f Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 12:40:05 -0400
Subject: [PATCH 26/50] gnu: belle-sip: Update to 4.4.34.

* gnu/packages/linphone.scm (belle-sip) [source]: Switch to git repository.
[version]: Update to 4.4.34.
[native-iputs]: Add python-wrapper.
---
 gnu/packages/linphone.scm | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 7261dbe1d8..cc2ab09db0 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -472,15 +472,16 @@ including both ARM and x86.")
 (define-public belle-sip
   (package
     (name "belle-sip")
-    (version "1.6.3")
+    (version "4.4.34")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/" name
-                       "/" name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "git://git.linphone.org/belle-sip")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0s55kggmgxap54dkw5856bgk4xg7yvbzialpxnjm0zhpic3hff1z"))))
+        (base32 "1kknnlczq7dpqaj1dwxvy092dzrqjy11ndkv90rqwmdryigkjk6z"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; Requires network access
@@ -495,6 +496,8 @@ including both ARM and x86.")
                ;; which would not be reproducible.
                (("-Xmultithreaded ") ""))
              #t)))))
+    (native-inputs
+     `(("python" ,python-wrapper)))
     (inputs
      `(("antlr3" ,antlr3-3.3)
        ("antlr3c" ,libantlr3c)
-- 
2.31.0

From 506bcbdd204924a6067adbb969af4ef9f92df4d2 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 13:25:14 -0400
Subject: [PATCH 27/50] gnu: belle-sip: Enable tests.

* gnu/packages/linphone.scm (belle-sip) [outputs]: New output "test".
[arguments]<#:tests?>: Remove argument.
<#:phases>['check]: Replace with custom phase.
['seperate-outputs]: New phase.
---
 gnu/packages/linphone.scm | 46 +++++++++++++++++++++++++++++++++++++--
 1 file changed, 44 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index cc2ab09db0..e3d8febae9 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -483,9 +483,9 @@ including both ARM and x86.")
        (sha256
         (base32 "1kknnlczq7dpqaj1dwxvy092dzrqjy11ndkv90rqwmdryigkjk6z"))))
     (build-system cmake-build-system)
+    (outputs '("out" "test"))
     (arguments
-     `(#:tests? #f                      ; Requires network access
-       #:configure-flags
+     `(#:configure-flags
        (list "-DENABLE_STATIC=NO")      ; Not required
        #:phases
        (modify-phases %standard-phases
@@ -495,6 +495,48 @@ including both ARM and x86.")
                ;; ANTLR would use multithreaded DFA generation otherwise,
                ;; which would not be reproducible.
                (("-Xmultithreaded ") ""))
+             #t))
+         (replace 'check
+           (lambda _
+             (copy-file
+              "tester/belle_sip_tester"
+              "../source/tester/belle_sip_tester")
+             (with-directory-excursion "../source/tester"
+               (for-each
+                (lambda (suite-name)
+                  (invoke "./belle_sip_tester" "--suite" suite-name))
+                (list
+                 "Object inheritance"
+                 "SIP URI"
+                 "FAST SIP URI"
+                 "FAST SIP URI 2"
+                 "Generic uri"
+                 "Headers"
+                 "Core"
+                 "SDP"
+                 ;; "Resolver"
+                 "Message"
+                 "Authentication helper"
+                 ;; "Register"
+                 ;; "Dialog"
+                 "Refresher"
+                 ;; "HTTP stack"
+                 "Object")))
+             #t))
+         (add-after 'install 'seperate-outputs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (test (assoc-ref outputs "test"))
+                    (test-name (string-append "belle_sip" "_tester")))
+               (for-each mkdir-p
+                         `(,(string-append test "/bin")
+                           ,(string-append test "/share")))
+               (rename-file
+                (string-append out "/bin/" test-name)
+                (string-append test "/bin/" test-name))
+               (rename-file
+                (string-append out "/share/" test-name)
+                (string-append test "/share/" test-name)))
              #t)))))
     (native-inputs
      `(("python" ,python-wrapper)))
-- 
2.31.0

From 019329536ce79d261eae4e9ea1ac1710c9cd2487 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 14:28:56 -0400
Subject: [PATCH 28/50] gnu: belle-sip: Enable mDNS support.

* gnu/packages/linphone.scm (belle-sip) [arguments]<#:configure-flags>
[-DENABLE_MDNS]: New flag.
<#:phases>['patch]: Modify.
---
 gnu/packages/linphone.scm | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index e3d8febae9..9b04ec90ef 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -23,6 +23,7 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages audio)
+  #:use-module (gnu packages avahi)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
@@ -486,11 +487,22 @@ including both ARM and x86.")
     (outputs '("out" "test"))
     (arguments
      `(#:configure-flags
-       (list "-DENABLE_STATIC=NO")      ; Not required
+       (list
+        "-DENABLE_STATIC=NO"
+        "-DENABLE_MDNS=ON")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch
-           (lambda _
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Fix mDNS dependency.
+             (let* ((avahi (assoc-ref inputs "avahi")))
+               (substitute* (find-files "." "CMakeLists.txt")
+                 (("find_package\\(DNSSD REQUIRED\\)")
+                  "set(DNSSD_FOUND 1)")
+                 (("\\$\\{DNSSD_INCLUDE_DIRS\\}")
+                  (string-append avahi "/include/avahi-compat-libdns_sd"))
+                 (("\\$\\{DNSSD_LIBRARIES\\}")
+                  "dns_sd")))
              (substitute* "src/CMakeLists.txt"
                ;; ANTLR would use multithreaded DFA generation otherwise,
                ;; which would not be reproducible.
@@ -543,6 +555,7 @@ including both ARM and x86.")
     (inputs
      `(("antlr3" ,antlr3-3.3)
        ("antlr3c" ,libantlr3c)
+       ("avahi" ,avahi)
        ("bctoolbox" ,bctoolbox)
        ("java" ,icedtea)
        ("zlib" ,zlib)))
-- 
2.31.0

From 67fc684d976e4e1264374aa1156d4d574eff63df Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 14:32:16 -0400
Subject: [PATCH 29/50] gnu: belle-sip: Update home-page and license.

* gnu/packages/linphone.scm (belle-sip) [home-page]: Modify.
[license]: Update to gpl3+.
---
 gnu/packages/linphone.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 9b04ec90ef..e573e71932 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -563,8 +563,8 @@ including both ARM and x86.")
     (description "Belle-sip is a modern library implementing SIP transport,
 transaction and dialog layers.  It is written in C, with an object-oriented
 API.  It also comprises a simple HTTP/HTTPS client implementation.")
-    (home-page "https://gitlab.linphone.org/BC/public/belle-sip")
-    (license license:gpl2+)))
+    (home-page "https://linphone.org/technical-corner/belle-sip")
+    (license license:gpl3+)))
 
 (define-public mediastreamer2
   (package
-- 
2.31.0

From 5e823993cc46d6d80a3be140b82c8449b499d6c3 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 15:51:11 -0400
Subject: [PATCH 30/50] gnu: mediastreamer2: Update to 4.4.34.

* gnu/packages/linphone.scm (mediastreamer2) [source]: Switch to git repository.
[version]: Update to 4.4.34.
[patches]: Remove field.
[outputs]: Rename "tester" to "test".
[arguments]<#:configure-flags>[-DENABLE_STRICT]: Remove flag.
[-DENABLE_BV16]: Remove flag.
[-DCMAKE_C_FLAGS]: Remove flag.
[-DCMAKE_CXX_FLAGS]: Remove flag.
<#:phases>['separate-outputs]: Modify.
[native-inputs]: Replace python with python-wrapper.
* gnu/packages/patches/mediastreamer2-srtp2.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                  |   1 -
 gnu/packages/linphone.scm                     |  62 ++++---
 .../patches/mediastreamer2-srtp2.patch        | 155 ------------------
 3 files changed, 28 insertions(+), 190 deletions(-)
 delete mode 100644 gnu/packages/patches/mediastreamer2-srtp2.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index a68981e48d..2f8ffeed3c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1360,7 +1360,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/mcrypt-CVE-2012-4527.patch			\
   %D%/packages/patches/libmemcached-build-with-gcc7.patch	\
   %D%/packages/patches/libmhash-hmac-fix-uaf.patch		\
-  %D%/packages/patches/mediastreamer2-srtp2.patch		\
   %D%/packages/patches/mesa-skip-tests.patch			\
   %D%/packages/patches/mescc-tools-boot.patch			\
   %D%/packages/patches/meson-for-build-rpath.patch		\
diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index e573e71932..025fd90c46 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -569,56 +569,50 @@ API.  It also comprises a simple HTTP/HTTPS client implementation.")
 (define-public mediastreamer2
   (package
     (name "mediastreamer2")
-    (version "2.16.1")
+    (version "4.4.34")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/"
-                       "mediastreamer/mediastreamer-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "git://git.linphone.org/mediastreamer2")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0whpqr69wz0pnzvragkpfblxhd0rds8k06c3mw5a0ag216a1yd9k"))
-       (patches (search-patches "mediastreamer2-srtp2.patch"))))
-    (outputs '("out" "doc" "tester"))
+        (base32 "0989h3d0h7qrx4kjx8gg09j8c5hvvi3h8qi1iq1dqbppwbaxbz8c"))))
+    (outputs '("out" "doc" "test"))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f                      ; No test target
        #:configure-flags
-       (list "-DENABLE_STATIC=NO"      ; Not required
-             "-DENABLE_STRICT=NO"      ; Would otherwise treat warnings as err
-             "-DENABLE_BV16=NO"        ; Not available
-             "-DCMAKE_C_FLAGS=-DMS2_GIT_VERSION=\\\"unknown\\\""
-             "-DCMAKE_CXX_FLAGS=-DMS2_GIT_VERSION=\\\"unknown\\\"")
+       (list
+        "-DENABLE_STATIC=NO")
        #:phases
        (modify-phases %standard-phases
          (add-after 'install 'separate-outputs
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
+                    (test (assoc-ref outputs "test"))
+                    (test-name (string-append ,name "_tester"))
                     (doc (assoc-ref outputs "doc"))
-                    (tester (assoc-ref outputs "tester"))
-                    (tester-name (string-append ,name "_tester")))
-               ;; Copy the tester executable.
-               (mkdir-p (string-append tester "/bin"))
-               (rename-file (string-append out "/bin/" tester-name)
-                            (string-append tester "/bin/" tester-name))
-               ;; Copy the tester data files.
-               (copy-recursively (string-append out "/share/" tester-name)
-                                 (string-append tester "/share/" tester-name))
-               (delete-file-recursively (string-append out "/share/"
-                                                       tester-name))
-               ;; Copy the HTML documentation.
-               (copy-recursively (string-append out "/share/doc/"
-                                                ,name "-" ,version "/html")
-                                 (string-append doc "/share/doc/"
-                                                ,name "-" ,version "/html"))
-               (delete-file-recursively (string-append out "/share/doc/"
-                                                       ,name "-" ,version
-                                                       "/html"))
-               #t))))))
+                    (doc-name (string-append ,name "-4.4.0")))
+               (for-each mkdir-p
+                         `(,(string-append test "/bin")
+                           ,(string-append test "/share")
+                           ,(string-append doc "/share/doc")))
+               (rename-file
+                (string-append out "/bin/" test-name)
+                (string-append test "/bin/" test-name))
+               (rename-file
+                (string-append out "/share/" test-name)
+                (string-append test "/share/" test-name))
+               (rename-file
+                (string-append out "/share/doc/" doc-name)
+                (string-append doc "/share/doc/" doc-name)))
+             #t)))))
     (native-inputs
      `(("dot" ,graphviz)
        ("doxygen" ,doxygen)
-       ("python" ,python)))
+       ("python" ,python-wrapper)))
     (inputs
      `(("alsa" ,alsa-lib)
        ("bcg729" ,bcg729)
diff --git a/gnu/packages/patches/mediastreamer2-srtp2.patch b/gnu/packages/patches/mediastreamer2-srtp2.patch
deleted file mode 100644
index f6d494facb..0000000000
--- a/gnu/packages/patches/mediastreamer2-srtp2.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-From 97903498364ae2596e790cb2c2ce9ac76c04d64a Mon Sep 17 00:00:00 2001
-From: Danmei Chen <[email-masked]>
-Date: Fri, 19 Jan 2018 10:04:07 +0100
-Subject: [PATCH] add compability with srtp2
-
----
- cmake/FindSRTP.cmake    | 24 ++++++++++++++++++++----
- src/CMakeLists.txt      |  1 +
- src/crypto/ms_srtp.c    | 10 ++--------
- src/utils/srtp_prefix.h | 41 +++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 64 insertions(+), 12 deletions(-)
- create mode 100644 src/utils/srtp_prefix.h
-
-diff --git a/cmake/FindSRTP.cmake b/cmake/FindSRTP.cmake
-index 988b846a..f720ce7e 100644
---- a/cmake/FindSRTP.cmake
-+++ b/cmake/FindSRTP.cmake
-@@ -31,20 +31,36 @@ set(_SRTP_ROOT_PATHS
- )
- 
- find_path(SRTP_INCLUDE_DIRS
--	NAMES srtp/srtp.h
-+	NAMES srtp2/srtp.h
- 	HINTS _SRTP_ROOT_PATHS
- 	PATH_SUFFIXES include
- )
- 
- if(SRTP_INCLUDE_DIRS)
- 	set(HAVE_SRTP_SRTP_H 1)
--endif()
--
--find_library(SRTP_LIBRARIES
-+	set(SRTP_VERSION 2)
-+	find_library(SRTP_LIBRARIES
-+		NAMES srtp2
-+		HINTS ${_SRTP_ROOT_PATHS}
-+		PATH_SUFFIXES bin lib
-+	)
-+else()
-+	find_path(SRTP_INCLUDE_DIRS
-+		NAMES srtp/srtp.h
-+		HINTS _SRTP_ROOT_PATHS
-+		PATH_SUFFIXES include
-+	)
-+	if(SRTP_INCLUDE_DIRS)
-+		set(HAVE_SRTP_SRTP_H 1)
-+		set(SRTP_VERSION 1)
-+	endif()
-+	find_library(SRTP_LIBRARIES
- 	NAMES srtp
- 	HINTS ${_SRTP_ROOT_PATHS}
- 	PATH_SUFFIXES bin lib
- )
-+endif()
-+
- 
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(SRTP
-diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index da429764..c46faa62 100644
---- a/src/CMakeLists.txt
-+++ b/src/CMakeLists.txt
-@@ -183,6 +183,7 @@ set(VOIP_SOURCE_FILES_C
- 	utils/pcap_sender.c
- 	utils/pcap_sender.h
- 	utils/stream_regulator.c
-+	utils/srtp_prefix.h
- 	voip/audioconference.c
- 	voip/audiostream.c
- 	voip/bandwidthcontroller.c
-diff --git a/src/crypto/ms_srtp.c b/src/crypto/ms_srtp.c
-index 5a510c99..67810316 100644
---- a/src/crypto/ms_srtp.c
-+++ b/src/crypto/ms_srtp.c
-@@ -25,6 +25,7 @@
- #include "mediastreamer2/ms_srtp.h"
- #include "mediastreamer2/mediastream.h"
- 
-+
- #ifdef HAVE_SRTP
- 
- /*srtp defines all this stuff*/
-@@ -34,13 +35,7 @@
- #undef PACKAGE_TARNAME
- #undef PACKAGE_VERSION
- 
--#if defined(MS2_WINDOWS_PHONE)
--// Windows phone doesn't use make install
--#include <srtp.h>
--#else
--#include <srtp/srtp.h>
--#endif
--
-+#include "srtp_prefix.h"
- 
- #include "ortp/b64.h"
- 
-@@ -352,7 +347,6 @@ int ms_srtp_init(void)
- 			srtp_init_done++;
- 		}else{
- 			ms_fatal("Couldn't initialize SRTP library: %d.", st);
--			err_reporting_init("mediastreamer2");
- 		}
- 	}else srtp_init_done++;
- 	return (int)st;
-diff --git a/src/utils/srtp_prefix.h b/src/utils/srtp_prefix.h
-new file mode 100644
-index 00000000..68bde496
---- /dev/null
-+++ b/src/utils/srtp_prefix.h
-@@ -0,0 +1,41 @@
-+/*
-+  mediastreamer2 library - modular sound and video processing and streaming
-+  Copyright (C) 2006-2014 Belledonne Communications, Grenoble
-+
-+  This library is free software; you can redistribute it and/or
-+  modify it under the terms of the GNU Lesser General Public
-+  License as published by the Free Software Foundation; either
-+  version 2.1 of the License, or (at your option) any later version.
-+
-+  This library is distributed in the hope that it will be useful,
-+  but WITHOUT ANY WARRANTY; without even the implied warranty of
-+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+  Lesser General Public License for more details.
-+
-+  You should have received a copy of the GNU Lesser General Public
-+  License along with this library; if not, write to the Free Software
-+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-+*/
-+#ifndef __SRTP2_H__
-+#define __SRTP2_H__
-+
-+#if defined(MS2_WINDOWS_PHONE)
-+// Windows phone doesn't use make install
-+#include <srtp.h>
-+#elif SRTP_VERSION==1
-+#include <srtp/srtp.h>
-+#else
-+#include <srtp2/srtp.h>
-+#define err_status_t srtp_err_status_t
-+#define err_status_ok srtp_err_status_ok
-+#define crypto_policy_t srtp_crypto_policy_t
-+#define crypto_policy_set_aes_cm_256_hmac_sha1_80 srtp_crypto_policy_set_aes_cm_256_hmac_sha1_80
-+#define crypto_policy_set_aes_cm_128_hmac_sha1_32 srtp_crypto_policy_set_aes_cm_128_hmac_sha1_32
-+#define crypto_policy_set_aes_cm_128_null_auth srtp_crypto_policy_set_aes_cm_128_null_auth
-+#define crypto_policy_set_null_cipher_hmac_sha1_80 srtp_crypto_policy_set_null_cipher_hmac_sha1_80
-+#define crypto_policy_set_aes_cm_128_hmac_sha1_80 srtp_crypto_policy_set_aes_cm_128_hmac_sha1_80
-+#define crypto_policy_set_aes_cm_256_hmac_sha1_32 srtp_crypto_policy_set_aes_cm_256_hmac_sha1_32
-+#define ssrc_t srtp_ssrc_t
-+#endif
-+
-+#endif
--- 
-2.21.0
-
-- 
2.31.0

From 7e62a8fdd6e9c3ed685b20a443dd8e04ea00e32a Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 16:56:25 -0400
Subject: [PATCH 31/50] gnu: mediastreamer2: Enable tests.

* gnu/packages/linphone.scm (mediastreamer2) [arguments]<#:tests?>: Remove argument.
<#:phases>['pre-check]: New phase.
['check]: Replace with custom phase.
[native-inputs]: Add xorg-server-for-tests.
---
 gnu/packages/linphone.scm | 34 +++++++++++++++++++++++++++++++---
 1 file changed, 31 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 025fd90c46..661a9ea779 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -582,12 +582,39 @@ API.  It also comprises a simple HTTP/HTTPS client implementation.")
     (outputs '("out" "doc" "test"))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f                      ; No test target
-       #:configure-flags
+     `(#:configure-flags
        (list
         "-DENABLE_STATIC=NO")
        #:phases
        (modify-phases %standard-phases
+         (add-before 'check 'pre-check
+           (lambda _
+             ;; Tests require a running X server.
+             (system "Xvfb :1 +extension GLX &")
+             (setenv "DISPLAY" ":1")
+             ;; Tests write to $HOME.
+             (setenv "HOME" (getenv "TEMP"))
+             #t))
+         (replace 'check
+           (lambda _
+             (copy-file
+              "tester/mediastreamer2_tester"
+              "../source/tester/mediastreamer2_tester")
+             (with-directory-excursion "../source/tester"
+               (for-each
+                (lambda (suite-name)
+                  (invoke "./mediastreamer2_tester" "--suite" suite-name))
+                (list
+                 "Basic Audio"
+                 ;; "Sound Card"
+                 ;; "AdaptiveAlgorithm"
+                 ;; "AudioStream"
+                 ;; "VideoStream"
+                 "H26x Tools"
+                 "Framework"
+                 ;; "Player"
+                 "TextStream")))
+             #t))
          (add-after 'install 'separate-outputs
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -612,7 +639,8 @@ API.  It also comprises a simple HTTP/HTTPS client implementation.")
     (native-inputs
      `(("dot" ,graphviz)
        ("doxygen" ,doxygen)
-       ("python" ,python-wrapper)))
+       ("python" ,python-wrapper)
+       ("xorg-server" ,xorg-server-for-tests)))
     (inputs
      `(("alsa" ,alsa-lib)
        ("bcg729" ,bcg729)
-- 
2.31.0

From eda3b77ac469e07b5836fdf9f7c9e7cc76be2872 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 18:43:55 -0400
Subject: [PATCH 32/50] gnu: mediastreamer2: Enable PCAP support.

* gnu/packages/linphone.scm (mediastreamer2) [arguments]<#:configure-flags>
[-DENABLE_PCAP]: New flag.
<#:phases>['patch-source]: New phase.
---
 gnu/packages/linphone.scm | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 661a9ea779..adf2a357ea 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -584,9 +584,15 @@ API.  It also comprises a simple HTTP/HTTPS client implementation.")
     (arguments
      `(#:configure-flags
        (list
-        "-DENABLE_STATIC=NO")
+        "-DENABLE_STATIC=NO"
+        "-DENABLE_PCAP=YES")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda _
+             (substitute* "src/otherfilters/mspcapfileplayer.c"
+               (("O_BINARY") "L_INCR"))
+             #t))
          (add-before 'check 'pre-check
            (lambda _
              ;; Tests require a running X server.
-- 
2.31.0

From 67e9cc3baaf0f2596331db6c0cbede1869f3edeb Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 20:32:40 -0400
Subject: [PATCH 33/50] gnu: mediastreamer2: Enable port-audio support.

* gnu/packages/linphone.scm (mediastreamer2) [arguments]<#:configure-flags>
[-DENABLE_STRICT]: New flag.
[-DENABLE_PORTAUDIO]: New flag.
---
 gnu/packages/linphone.scm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index adf2a357ea..1a11cc5c46 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -585,7 +585,9 @@ API.  It also comprises a simple HTTP/HTTPS client implementation.")
      `(#:configure-flags
        (list
         "-DENABLE_STATIC=NO"
-        "-DENABLE_PCAP=YES")
+        "-DENABLE_PCAP=YES"
+        "-DENABLE_STRICT=NO"       ; To disable strict compile options
+        "-DENABLE_PORTAUDIO=YES")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
-- 
2.31.0

From 4e5747cae0f037afa67ff0af2c8fd23005bdd132 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 20:41:23 -0400
Subject: [PATCH 34/50] gnu: mediastreamer2: Update home-page and license.

* gnu/packages/linphone.scm (mediastreamer2) [home-page]: Modify.
[license]: Update to gpl3+.
---
 gnu/packages/linphone.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 1a11cc5c46..836ca7c079 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -681,8 +681,8 @@ API.  It also comprises a simple HTTP/HTTPS client implementation.")
 for telephony applications.  This media processing and streaming toolkit is
 responsible for receiving and sending all multimedia streams in Linphone,
 including media capture, encoding and decoding, and rendering.")
-    (home-page "https://gitlab.linphone.org/BC/public/mediastreamer2")
-    (license license:gpl2+)))
+    (home-page "https://linphone.org/technical-corner/mediastreamer2")
+    (license license:gpl3+)))
 
 (define-public liblinphone
   (package
-- 
2.31.0

From 1cce8d7ac16c9d755e39b8a74c8a07e0427ae850 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 21:03:16 -0400
Subject: [PATCH 35/50] gnu: mediastreamer2: Enable G729B support.

* gnu/packages/linphone.scm (mediastreamer2) [arguments]<#:configure-flags>
[-DENABLE_G729B_CNG]: New flag.
---
 gnu/packages/linphone.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 836ca7c079..79cb35fc07 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -587,7 +587,8 @@ API.  It also comprises a simple HTTP/HTTPS client implementation.")
         "-DENABLE_STATIC=NO"
         "-DENABLE_PCAP=YES"
         "-DENABLE_STRICT=NO"       ; To disable strict compile options
-        "-DENABLE_PORTAUDIO=YES")
+        "-DENABLE_PORTAUDIO=YES"
+        "-DENABLE_G729B_CNG=YES")
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-source
-- 
2.31.0

From cc44a81d0d991775bbfdbc3ca29e22c8e4f34e9b Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 21:57:10 -0400
Subject: [PATCH 36/50] gnu: soci: Propagate inputs.

Headers of soci has include-references to headers of these inputs.

* gnu/packages/databases.scm (soci) [inputs]: Move to ...
[propagated-inputs]: ... here.
---
 gnu/packages/databases.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 03d01b582a..076ff85e7d 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -4087,7 +4087,7 @@ The drivers officially supported by @code{libdbi} are:
                (base32
                 "14x2gjblkgpflv75wl144cyjp1sis5rbxnr9r2gj3yw16v2av0bp"))))
     (build-system cmake-build-system)
-    (inputs
+    (propagated-inputs
      `(("firebird" ,firebird)
        ("postgresql" ,postgresql)
        ("sqlite" ,sqlite)
-- 
2.31.0

From 1eee63bec9152aa9b8d718244d4a474ef04434b9 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Tue, 16 Mar 2021 23:08:41 -0400
Subject: [PATCH 37/50] gnu: Add lime.

* gnu/packages/linphone.scm (lime): New variable.
---
 gnu/packages/linphone.scm | 57 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 79cb35fc07..80349ac426 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -27,6 +27,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
@@ -685,6 +686,62 @@ including media capture, encoding and decoding, and rendering.")
     (home-page "https://linphone.org/technical-corner/mediastreamer2")
     (license license:gpl3+)))
 
+(define-public lime
+  (package
+    (name "lime")
+    (version "4.4.34")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.linphone.org/BC/public/lime")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "14jg1zisjbzflw3scfqdbwy48wq3cp93l867vigb8l40lkc6n26z"))))
+    (build-system cmake-build-system)
+    (outputs '("out" "doc"))
+    (arguments
+     `(#:configure-flags
+       (list
+        "-DENABLE_STATIC=NO"
+        "-DENABLE_C_INTERFACE=YES")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-source
+           (lambda _
+             ;; Disable tests that require networking.
+             (substitute* "tester/CMakeLists.txt"
+               (("add_test\\(?.*\"Hello World\"\\)") "")
+               (("add_test\\(?.*\"lime\"\\)") "")
+               (("add_test\\(?.*\"FFI\"\\)") ""))
+             #t))
+         (add-after 'build 'build-doc
+           (lambda _
+             (invoke "make" "doc")
+             #t))
+         (add-after 'install 'install-doc
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((doc (assoc-ref outputs "doc"))
+                    (dir (string-append doc "/share/doc"))
+                    (dest (string-append dir "/" ,name "-" ,version)))
+               (mkdir-p dest)
+               (copy-recursively "doc" dest))
+             #t)))))
+    (native-inputs
+     `(("dot" ,graphviz)
+       ("doxygen" ,doxygen)))
+    (inputs
+     `(("bctoolbox" ,bctoolbox)
+       ("belle-sip" ,belle-sip)
+       ("soci" ,soci)))
+    (synopsis "Belledonne Communications Encryption Library")
+    (description "LIME is an encryption library for one-to-one and group instant
+messaging, allowing users to exchange messages privately and asynchronously.
+It supports multiple devices per user and multiple users per device.")
+    (home-page "https://linphone.org/technical-corner/lime")
+    (license license:gpl3+)))
+
 (define-public liblinphone
   (package
     (name "liblinphone")
-- 
2.31.0

From ac11c46c21836a0696ec927c411c974207162885 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Thu, 18 Mar 2021 13:53:40 -0400
Subject: [PATCH 38/50] gnu: Add build.

* gnu/packages/codesynthesis.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/codesythesis.scm (build): New variable.
---
 gnu/local.mk                   |  1 +
 gnu/packages/codesynthesis.scm | 55 ++++++++++++++++++++++++++++++++++
 2 files changed, 56 insertions(+)
 create mode 100644 gnu/packages/codesynthesis.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 2f8ffeed3c..1351c81330 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -134,6 +134,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/cmake.scm			\
   %D%/packages/cobol.scm			\
   %D%/packages/code.scm				\
+  %D%/packages/codesynthesis.scm	        \
   %D%/packages/commencement.scm			\
   %D%/packages/compression.scm			\
   %D%/packages/compton.scm 			\
diff --git a/gnu/packages/codesynthesis.scm b/gnu/packages/codesynthesis.scm
new file mode 100644
index 0000000000..7cb9a427a5
--- /dev/null
+++ b/gnu/packages/codesynthesis.scm
@@ -0,0 +1,55 @@
+;;; GNU Guix --- Functional package management for GNU
+;;;
+;;; Copyright © 2020 Raghav Gururajan <[email-masked]>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages codesynthesis)
+  #:use-module (gnu packages)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix utils)
+  #:use-module (guix build utils)
+  #:use-module (guix build-system gnu))
+
+(define-public build
+  (package
+    (name "build")
+    (version "0.3.10")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.codesynthesis.com/download/"
+                           "build/" (version-major+minor version)
+                           "/build-" version ".tar.bz2"))
+       (sha256
+        (base32 "1lx5rpnmsbip43zpp0a57sl5rm7pjb0y6i2si6rfglfp4p9d3z76"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ; No target
+       #:make-flags
+       (list
+        (string-append "install_prefix=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build))))
+    (synopsis "Software Build System")
+    (description "@package{build} is a massively-parallel software build system
+implemented on top of GNU make.")
+    (home-page "https://www.codesynthesis.com/projects/libxsd-frontend/")
+    (license license:gpl2+)))
-- 
2.31.0

From 09c07f2b6b36d91ced2c3b41aa39e0b2710f5306 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Thu, 18 Mar 2021 13:57:53 -0400
Subject: [PATCH 39/50] gnu: Add libcutl.

* gnu/packages/codesynthesis.scm (libcutl): New variable.
---
 gnu/packages/codesynthesis.scm | 44 ++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/gnu/packages/codesynthesis.scm b/gnu/packages/codesynthesis.scm
index 7cb9a427a5..a264692c19 100644
--- a/gnu/packages/codesynthesis.scm
+++ b/gnu/packages/codesynthesis.scm
@@ -19,6 +19,8 @@
 
 (define-module (gnu packages codesynthesis)
   #:use-module (gnu packages)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages xml)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -53,3 +55,45 @@
 implemented on top of GNU make.")
     (home-page "https://www.codesynthesis.com/projects/libxsd-frontend/")
     (license license:gpl2+)))
+
+(define-public libcutl
+  (package
+    (name "libcutl")
+    (version "1.10.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.codesynthesis.com/download/libcutl/"
+                           (version-major+minor version)
+                           "/libcutl-" version ".tar.bz2"))
+       (sha256
+        (base32 "070j2x02m4gm1fn7gnymrkbdxflgzxwl7m96aryv8wp3f3366l8j"))
+       (modules '((guix build utils)))
+       (snippet
+        `(begin
+           ;; Remove bundled sources.
+           (with-directory-excursion "cutl/details"
+             (for-each delete-file-recursively
+                       ;; FIXME: Boost_RegEx isn't being detected.
+                       (list
+                        ;; "boost"
+                        "expat")))
+           #t))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        "--disable-static"
+        ;; "--with-external-boost"
+        "--with-external-expat")))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(;; ("boost" ,boost)
+       ("expat" ,expat)))
+    (synopsis "C++ utility library")
+    (description "@package{libcutl} is a C++ utility library.  It contains a
+collection of generic and independent components such as meta-programming tests,
+smart pointers, containers, compiler building blocks, etc.")
+    (home-page "https://www.codesynthesis.com/projects/libcutl/")
+    (license license:expat)))
-- 
2.31.0

From 077cd7512fb13ba35b3a6e4901201181bb8abdb4 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Thu, 18 Mar 2021 14:00:13 -0400
Subject: [PATCH 40/50] gnu: Add libxsd-frontend.

* gnu/packages/codesynthesis.scm (libxsd-frontend): New variable.
---
 gnu/packages/codesynthesis.scm | 54 ++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/gnu/packages/codesynthesis.scm b/gnu/packages/codesynthesis.scm
index a264692c19..f24fb760de 100644
--- a/gnu/packages/codesynthesis.scm
+++ b/gnu/packages/codesynthesis.scm
@@ -97,3 +97,57 @@ collection of generic and independent components such as meta-programming tests,
 smart pointers, containers, compiler building blocks, etc.")
     (home-page "https://www.codesynthesis.com/projects/libcutl/")
     (license license:expat)))
+
+(define-public libxsd-frontend
+  (package
+    (name "libxsd-frontend")
+    (version "2.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.codesynthesis.com/download/"
+                           "libxsd-frontend/" (version-major+minor version)
+                           "/libxsd-frontend-" version ".tar.bz2"))
+       (sha256
+        (base32 "1nmzchsvwvn66jpmcx18anzyl1a3l309x1ld4zllrg37ijc31fim"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:test-target "test"
+       #:imported-modules
+       ((guix build copy-build-system)
+        ,@%gnu-build-system-modules)
+       #:modules
+       (((guix build copy-build-system)
+         #:prefix copy:)
+        (guix build gnu-build-system)
+        (guix build utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda _
+             (substitute* (find-files "." "\\.make$")
+               (("build-0\\.3")
+                (string-append (assoc-ref %build-inputs "build") "/include/build-0.3")))
+             #t))
+         (delete 'configure)
+         (replace 'install
+           (lambda args
+             (apply (assoc-ref copy:%standard-phases 'install)
+                    #:install-plan
+                    '(("xsd-frontend" "include/xsd-frontend"
+                       #:include-regexp ("\\.?xx$"))
+                      ("xsd-frontend" "lib"
+                       #:include-regexp ("\\.so$")))
+                    args))))))
+    (native-inputs
+     `(("build" ,build)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libcutl" ,libcutl)
+       ("libxerces-c" ,xerces-c)))
+    (synopsis "XSD Front-end")
+    (description "@package{libxsd-frontend} is a compiler frontend for the W3C
+XML Schema definition language.  It includes a parser, semantic graph types and
+a traversal mechanism.")
+    (home-page "https://www.codesynthesis.com/projects/libxsd-frontend/")
+    (license license:gpl2+)))
-- 
2.31.0

From 9ab80d0b6568b7677bd002d89794e5517a9f005d Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Thu, 18 Mar 2021 14:33:34 -0400
Subject: [PATCH 41/50] gnu: Add cli.

* gnu/packages/codesynthesis.scm (cli): New variable.
---
 gnu/packages/codesynthesis.scm | 45 ++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/gnu/packages/codesynthesis.scm b/gnu/packages/codesynthesis.scm
index f24fb760de..b70e53cd7c 100644
--- a/gnu/packages/codesynthesis.scm
+++ b/gnu/packages/codesynthesis.scm
@@ -151,3 +151,48 @@ XML Schema definition language.  It includes a parser, semantic graph types and
 a traversal mechanism.")
     (home-page "https://www.codesynthesis.com/projects/libxsd-frontend/")
     (license license:gpl2+)))
+
+(define-public cli
+  (package
+    (name "cli")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.codesynthesis.com/download/"
+                           "cli/" (version-major+minor version)
+                           "/cli-" version ".tar.bz2"))
+       (sha256
+        (base32 "0bg0nsai2q4h3mldpnj0jz4iy4svs0bcfvmq0v0c9cdyknny606g"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:test-target "test"
+       #:make-flags
+       (list
+        (string-append "install_prefix=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda _
+             (substitute* (find-files "." "\\.make$")
+               (("build-0\\.3")
+                (string-append (assoc-ref %build-inputs "build")
+                               "/include/build-0.3")))
+             (substitute* (find-files "." "\\.?xx$")
+               (("add \\(typeid \\(type\\), \\*this\\);")
+                "traverser_map<B>::add (typeid (type), *this);")
+               (("iterate_and_dispatch \\(s\\.names_begin \\(\\), s\\.names_end \\(\\), d\\);")
+                "edge_dispatcher::iterate_and_dispatch (s.names_begin (), s.names_end (), d);"))
+             #t))
+         (delete 'configure))))
+    (native-inputs
+     `(("build" ,build)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libcutl" ,libcutl)))
+    (synopsis "Command Line Interface (CLI) definition language")
+    (description "@package{cli} is a domain-specific language (DSL) for defining
+command line interfaces of C++ programs.  It allows you to describe the options
+that your program supports, their types, default values, and documentation.")
+    (home-page "https://codesynthesis.com/projects/cli/")
+    (license license:expat)))
-- 
2.31.0

From c2064aea0a3de692b02475070d6aa0306f20eccd Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Thu, 18 Mar 2021 15:51:18 -0400
Subject: [PATCH 42/50] gnu: Add xsd.

* gnu/packages/codesynthesis.scm (xsd): New variable.
---
 gnu/packages/codesynthesis.scm | 48 ++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/gnu/packages/codesynthesis.scm b/gnu/packages/codesynthesis.scm
index b70e53cd7c..58f4fa9301 100644
--- a/gnu/packages/codesynthesis.scm
+++ b/gnu/packages/codesynthesis.scm
@@ -19,6 +19,7 @@
 
 (define-module (gnu packages codesynthesis)
   #:use-module (gnu packages)
+  #:use-module (gnu packages onc-rpc)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages xml)
   #:use-module ((guix licenses) #:prefix license:)
@@ -196,3 +197,50 @@ command line interfaces of C++ programs.  It allows you to describe the options
 that your program supports, their types, default values, and documentation.")
     (home-page "https://codesynthesis.com/projects/cli/")
     (license license:expat)))
+
+(define-public xsd
+  (package
+    (name "xsd")
+    (version "4.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.codesynthesis.com/download/"
+                           "xsd/" (version-major+minor version)
+                           "/xsd-" version ".tar.bz2"))
+       (sha256
+        (base32 "1hi9ppxd34np8ydv1h0vgc2qpdmgcd1cdzgk30aidv670xjg91fx"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:test-target "test"
+       #:make-flags
+       (list
+        (string-append "install_prefix=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda _
+             (substitute* (find-files "." "\\.make$")
+               (("build-0\\.3")
+                (string-append (assoc-ref %build-inputs "build")
+                               "/include/build-0.3")))
+             #t))
+         (delete 'configure))))
+    (native-inputs
+     `(("build" ,build)
+       ("cli" ,cli)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libcutl" ,libcutl)
+       ("libnsl" ,libnsl)
+       ("libxsd-frontend" ,libxsd-frontend)))
+    (propagated-inputs
+     `(("libexpat" ,expat)
+       ("libxerces-c" ,xerces-c)))
+    (synopsis "XML Schema to C++ translator")
+    (description "@package{xsd} is a W3C XML Schema to C++ translator.  It
+generates vocabulary-specific, statically-typed C++ mappings/bindings from XML
+Schema definitions.  It supports two C++ mappings: in-memory C++/Tree and
+event-driven C++/Parser.")
+    (home-page "https://codesynthesis.com/projects/xsd/")
+    (license license:gpl2+)))
-- 
2.31.0

From 5630f5c43bd677b42069a73f3e3d3cbe085a69ad Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Wed, 17 Mar 2021 23:36:02 -0400
Subject: [PATCH 43/50] gnu: liblinphone: Update to 4.4.34.

* gnu/packages/linphone.scm (liblinphone) [source]: Switch to git repository.
[version]: Update to 4.4.34.
[outputs]: Remove "doc" and rename "tester" to "test".
[arguments]<#:imported-modules>: Remove argument.
<#:modules>: Remove argument.
<#:configure-flags>[-DGTK2_GDKCONFIG_INCLUDE_DIR]: Remove flag.
[-DGTK2_GLIBCONFIG_INCLUDE_DIR]: Remove flag.
[-DENABLE_STRICT]: Remove flag.
[-DENABLE_GTK_UI]: Remove flag.
<#:phases>['patch]: Remove phase.
['install-man-pages]: Remove phase.
['separate-outputs]: Modify.
['glib-or-gtk-compile-schemas]: Remove phase.
['glib-or-gtk-wrap]: Remove phase.
[native-inputs]: Add perl. Replace python with python-wrapper.
[inputs]: Add belr, lime, soci and xsd. Remove glib and gtk+-2.
---
 gnu/packages/linphone.scm | 100 +++++++++++++-------------------------
 1 file changed, 34 insertions(+), 66 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 80349ac426..7158c093b3 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -25,6 +25,7 @@
   #:use-module (gnu packages audio)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages codesynthesis)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages databases)
@@ -745,95 +746,62 @@ It supports multiple devices per user and multiple users per device.")
 (define-public liblinphone
   (package
     (name "liblinphone")
-    (version "3.12.0")
+    (version "4.4.34")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/linphone"
-                       "/linphone-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.linphone.org/BC/public/liblinphone")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "0phhkx55xdyg28d4wn8l8q4yvsmdgzmjiw584d4s190sq1azm91x"))))
-    (outputs '("out" "doc" "tester"))
+        (base32 "1lwabr93jw24y04pdqnw9dgg8jb3lzfplyx19f83jgp9dj8kmfq9"))))
+    (outputs '("out" "test"))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f                      ; No test target
+     `(#:tests? #f                      ; Tests require networking
        #:configure-flags
-       (list (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR="
-                            (string-append (assoc-ref %build-inputs "gtk2")
-                                           "/lib/gtk-2.0/include"))
-             (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR="
-                            (string-append (assoc-ref %build-inputs "glib")
-                                           "/lib/glib-2.0/include"))
-             "-DENABLE_STATIC=NO"       ; Not required
-             "-DENABLE_STRICT=NO"
-             "-DENABLE_GTK_UI=YES")     ; for legacy UI
-       #:imported-modules (,@%cmake-build-system-modules
-                           (guix build glib-or-gtk-build-system))
-       #:modules ((guix build cmake-build-system)
-                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
-                  (guix build utils))
+       (list
+        "-DENABLE_STATIC=NO")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch
-           (lambda _
-             (substitute* "gtk/main.c"
-               (("#include \"liblinphone_gitversion.h\"")
-                ""))
-             #t))
          (add-after 'install 'separate-outputs
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
-                    (doc (assoc-ref outputs "doc"))
-                    (tester (assoc-ref outputs "tester"))
-                    (tester-name (string-append ,name "_tester")))
-               ;; Copy the tester executable.
-               (mkdir-p (string-append tester "/bin"))
-               (rename-file (string-append out "/bin/" tester-name)
-                            (string-append tester "/bin/" tester-name))
-               ;; Copy the tester data files.
-               (mkdir-p (string-append tester "/share/"))
-               (rename-file (string-append out "/share/" tester-name)
-                            (string-append tester "/share/" tester-name))
-               ;; Copy the HTML and XML documentation.
-               (copy-recursively
-                (string-append out "/share/doc/linphone-" ,version)
-                (string-append doc "/share/doc/" ,name "-" ,version))
-               (delete-file-recursively
-                (string-append out "/share/doc/linphone-" ,version))
-               #t)))
-         (add-after 'install 'install-man-pages
-           (lambda* (#:key outputs #:allow-other-keys)
-             (let* ((out (assoc-ref outputs "out"))
-                    (man (string-append out "/share/man/man1")))
-               (for-each (lambda (file)
-                           (install-file file man))
-                         (find-files ".." ".*.1$"))
-               #t)))
-         (add-after 'separate-outputs 'glib-or-gtk-compile-schemas
-           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
-         (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
-           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+                    (test (assoc-ref outputs "test"))
+                    (test-name (string-append ,name "_tester")))
+               (for-each mkdir-p
+                         `(,(string-append test "/bin")
+                           ,(string-append test "/share")))
+               (rename-file
+                (string-append out "/bin/" test-name)
+                (string-append test "/bin/" test-name))
+               (rename-file
+                (string-append out "/share/" test-name)
+                (string-append test "/share/" test-name)))
+             #t)))))
     (native-inputs
-     `(("gettext" ,gettext-minimal)
-       ("udev" ,eudev)                  ;for libudev.h
-       ;; For generating the C++ wrappers.
-       ("dot" ,graphviz)
+     `(("dot" ,graphviz)
        ("doxygen" ,doxygen)
-       ("python" ,python)
+       ("gettext" ,gettext-minimal)
+       ("perl" ,perl)
+       ("python" ,python-wrapper)
        ("pystache" ,python-pystache)
-       ("six" ,python-six)))
+       ("six" ,python-six)
+       ("udev" ,eudev)))
     (inputs
      `(("bctoolbox" ,bctoolbox)
        ("belcard" ,belcard)
        ("bellesip" ,belle-sip)
+       ("belr" ,belr)
        ("bzrtp" ,bzrtp)
        ("iconv" ,libiconv)
-       ("glib" ,glib)
-       ("gtk2" ,gtk+-2)
+       ("libxsd" ,xsd)
+       ("lime" ,lime)
        ("mediastreamer2" ,mediastreamer2)
        ("notify" ,libnotify)
        ("ortp" ,ortp)
+       ("soci" ,soci)
        ("sqlite" ,sqlite)
        ("xml2" ,libxml2)
        ("zlib" ,zlib)))
-- 
2.31.0

From a3d94f9cd3d74bda0200b8f6f9ce645a749dad35 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Thu, 18 Mar 2021 22:05:22 -0400
Subject: [PATCH 44/50] gnu: liblinphone: Update home-page and license.

* gnu/packages/linphone.scm (liblinphone) [home-page]: Modify.
[license]: Update to gpl3+.
---
 gnu/packages/linphone.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 7158c093b3..73d0121180 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -811,8 +811,8 @@ all calling and instant messaging features into an unified
 easy-to-use API.  It is the cross-platform VoIP library on which the
 Linphone application is based on, and that anyone can use to add audio
 and video calls or instant messaging capabilities to an application.")
-    (home-page "https://gitlab.linphone.org/BC/public/liblinphone")
-    (license license:gpl2+)))
+    (home-page "https://linphone.org/technical-corner/liblinphone")
+    (license license:gpl3+)))
 
 (define-public linphoneqt
   (package
-- 
2.31.0

From 8388861e7727da3c5b2b79f6b8524bd585fbfaa9 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Fri, 19 Mar 2021 20:58:20 -0400
Subject: [PATCH 45/50] gnu: linphoneqt: Rename to linphone-desktop and change
 source.

* gnu/packages/linphone.scm (linphoneqt) [name]: Rename to linphone-desktop.
[source]: Switch to git repository.
---
 gnu/packages/linphone.scm | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 73d0121180..9d3f8bec95 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -814,18 +814,19 @@ and video calls or instant messaging capabilities to an application.")
     (home-page "https://linphone.org/technical-corner/liblinphone")
     (license license:gpl3+)))
 
-(define-public linphoneqt
+(define-public linphone-desktop
   (package
-    (name "linphoneqt")
+    (name "linphone-desktop")
     (version "4.1.1")
     (source
      (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/" name
-                       "/" name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://gitlab.linphone.org/BC/public/linphone-desktop")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
-        (base32 "1g2zrr9li0g1hgs6vys06vr98h5dx36z22hx7a6ry231536c002a"))
+        (base32 "1a639s7grbbwmp65iyvi86265jjp9ljxiamnbmpqa99y7v3jc4z7"))
        (patches (search-patches "linphoneqt-tabbutton.patch"))))
     (build-system qt-build-system)
     (arguments
-- 
2.31.0

From 6624206706b99446711f318c4db49e56acc25a5d Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Fri, 19 Mar 2021 21:00:37 -0400
Subject: [PATCH 46/50] gnu: linphone-desktop: Update home-page and license.

* gnu/packages/linphone.scm (linphone-desktop) [home-page]: Modify.
[license]: Update to gpl3+.
---
 gnu/packages/linphone.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 9d3f8bec95..231da2cab2 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -888,8 +888,8 @@ and video calls or instant messaging capabilities to an application.")
 @item Audio codecs: opus, speex, g711, g729, gsm, iLBC, g722, SILK, etc.
 @item Video codecs: VP8, H.264 and H.265 with resolutions up to 1080P, MPEG4
 @end itemize")
-    (home-page "https://gitlab.linphone.org/BC/public/linphone-desktop")
-    (license license:gpl2+)))
+    (home-page "https://linphone.org/technical-corner/linphone")
+    (license license:gpl3+)))
 
 (define-public msopenh264
   (package
-- 
2.31.0

From de4de606f274b95d0171782bffc7ddb23e3fadc9 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Fri, 19 Mar 2021 22:21:12 -0400
Subject: [PATCH 47/50] gnu: msopenh264: Update to 1.2.1-21.

* gnu/packages/linphone.scm (msopenh264) [source]: Switch to git repository.
[version]: Update to 1.2.1.
[patches]: Remove field.
[inputs]: Add bctoolbox.
---
 gnu/packages/linphone.scm | 65 +++++++++++++++++----------------------
 1 file changed, 28 insertions(+), 37 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 231da2cab2..984d460bf6 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -892,44 +892,35 @@ and video calls or instant messaging capabilities to an application.")
     (license license:gpl3+)))
 
 (define-public msopenh264
-  (package
-    (name "msopenh264")
-    (version "1.2.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/plugins/"
-                       name "/" name "-" version ".tar.gz"))
-       (sha256
-        (base32 "0rdxgazm52560g52pp6mp3mwx6j1z3h2zyizzfycp8y8zi92fqm8"))
-       (patches
-        (list
-         ;; For support for OpenH264 version >= 2.
-         (origin
-           (method url-fetch)
-           (uri
-            (string-append "https://gitlab.linphone.org/BC/public/msopenh264/"
-                           "commit/493d147d28c9a0f788ba4e50b47a1ce7b18bf326"
-                           ".diff"))
-           (file-name "msopenh264-openh264.patch")
-           (sha256
-            (base32
-             "0mmd7nz5n9ian4rcwn200nldmy5j0dpdrna7r32rqnaw82bx3kdb")))))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:tests? #f                      ; No test target
-       #:configure-flags
-       (list "-DENABLE_STATIC=NO")))    ; Not required
-    (inputs
-     `(("mediastreamer2" ,mediastreamer2)
-       ("openh264" ,openh264)
-       ("ortp" ,ortp)))
-    (synopsis "Media Streamer H.264 Codec")
-    (description "MsOpenH264 is an  H.264 encoder/decoder plugin for
+  (let ((commit "88697cc95140017760d6da408cb0efdc5e86e40a")
+        (revision "21"))
+    (package
+      (name "msopenh264")
+      (version (git-version "1.2.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "git://git.linphone.org/msopenh264")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "10y3b6s934f2wbsf60b3p0g6hffizjqrj5in8l4sida2fjdxlwwy"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:tests? #f                    ; No test target
+         #:configure-flags
+         (list "-DENABLE_STATIC=NO")))  ; Not required
+      (inputs
+       `(("bctoolbox" ,bctoolbox)
+         ("mediastreamer2" ,mediastreamer2)
+         ("openh264" ,openh264)
+         ("ortp" ,ortp)))
+      (synopsis "Media Streamer H.264 Codec")
+      (description "MsOpenH264 is an  H.264 encoder/decoder plugin for
 mediastreamer2 based on the openh264 library.")
-    (home-page "https://gitlab.linphone.org/BC/public/msopenh264")
-    (license license:gpl2+)))
+      (home-page "https://gitlab.linphone.org/BC/public/msopenh264")
+      (license license:gpl2+))))
 
 (define-public mssilk
   (package
-- 
2.31.0

From 341a3c7d0624c8dae467e36b411509e3a2bf0f7b Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Fri, 19 Mar 2021 22:33:38 -0400
Subject: [PATCH 48/50] gnu: mssilk: Update to 1.1.1-8.

* gnu/packages/linphone.scm (mssilk) [source]: Switch to git repository.
[version]: Update to 1.1.1-8.
[inputs]: Add bctoolbox.
---
 gnu/packages/linphone.scm | 50 +++++++++++++++++++++------------------
 1 file changed, 27 insertions(+), 23 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index 984d460bf6..a87b1758cd 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -923,30 +923,34 @@ mediastreamer2 based on the openh264 library.")
       (license license:gpl2+))))
 
 (define-public mssilk
-  (package
-    (name "mssilk")
-    (version "1.1.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/plugins/"
-                       name "/" name "-" version ".tar.gz"))
-       (sha256
-        (base32 "07ip0vd29d1n98lnqs5wpimcsmpm65yl7g5vk4hbqghcbsjw94lj"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:tests? #f                      ; No test target
-       #:configure-flags
-       (list "-DENABLE_STATIC=NO")))    ; Not required
-    (inputs
-     `(("mediastreamer2" ,mediastreamer2)
-       ("ortp" ,ortp)))
-    (synopsis "Media Streamer SILK Codec")
-    (description "MSSILK is a plugin of MediaStreamer, adding support for AMR
+  (let ((commit "dd0f31ee795faa7ea89e601b072dae4cd1df7e3f")
+        (revision "8"))
+    (package
+      (name "mssilk")
+      (version (git-version "1.1.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "git://git.linphone.org/mssilk")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1dann5fnzqp6wjlwc6bl2k9b6rvn6bznqb3qsi1kgv9dnq44cbr0"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:tests? #f                    ; No test target
+         #:configure-flags
+         (list "-DENABLE_STATIC=NO")))  ; Not required
+      (inputs
+       `(("bctoolbox" ,bctoolbox)
+         ("mediastreamer2" ,mediastreamer2)
+         ("ortp" ,ortp)))
+      (synopsis "Media Streamer SILK Codec")
+      (description "MSSILK is a plugin of MediaStreamer, adding support for AMR
 codec.  It is based on the Skype's SILK implementation.")
-    (home-page "https://gitlab.linphone.org/BC/public/mssilk")
-    (license license:gpl2+)))
+      (home-page "https://gitlab.linphone.org/BC/public/mssilk")
+      (license license:gpl2+))))
 
 (define-public mswebrtc
   (package
-- 
2.31.0

From 443ebbdc59ba62dd3f97fe14d09fdabe3213fe8a Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Fri, 19 Mar 2021 23:51:32 -0400
Subject: [PATCH 49/50] gnu: mswebrtc: Update to 1.1.1-23.

* gnu/packages/linphone.scm (mswebrtc) [source]: Switch to git repository.
[version]: Update to 1.1.1-23.
[arguments]<#:phases>['copy-inputs]: New phase.
[native-inputs]: Add webrtc and python-wrapper.
---
 gnu/packages/linphone.scm | 75 ++++++++++++++++++++++++++-------------
 1 file changed, 50 insertions(+), 25 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index a87b1758cd..c24069a948 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -953,32 +953,57 @@ codec.  It is based on the Skype's SILK implementation.")
       (license license:gpl2+))))
 
 (define-public mswebrtc
-  (package
-    (name "mswebrtc")
-    (version "1.1.1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/plugins/"
-                       name "/" name "-" version ".tar.gz"))
-       (sha256
-        (base32 "1wj28hl9myhshqmn64xg0jf07aw75gmnilb5rff6rcbdxim87mqr"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:tests? #f                      ; No test target
-       #:configure-flags
-       (list
-        "-DENABLE_STATIC=NO")))         ; Not required
-    (inputs
-     `(("bctoolbox" ,bctoolbox)
-       ("mediastreamer2" ,mediastreamer2)
-       ("ortp" ,ortp)))
-    (synopsis "Media Streamer WebRTC Codec")
-    (description "MSWebRTC is a plugin of MediaStreamer, adding support for
+  (let ((commit "946ca706733f36a6b4923f04e569531125462d1d")
+        (revision "23"))
+    (package
+      (name "mswebrtc")
+      (version (git-version "1.1.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "git://git.linphone.org/mswebrtc")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1pfg9m6bpbv0f53nx72rdxhlyriax9pg4yj0gpwq8ha6lqnpwg1x"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:tests? #f                    ; No test target
+         #:configure-flags
+         (list
+          "-DENABLE_STATIC=NO")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'copy-inputs
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((webrtc-from (assoc-ref inputs "webrtc"))
+                      (webrtc-to (string-append (getcwd) "/webrtc")))
+                 (copy-recursively webrtc-from webrtc-to))
+               #t)))))
+      (native-inputs
+       `(("webrtc"
+          ,(origin
+             (method git-fetch)
+             (uri
+              (git-reference
+               (url "https://gitlab.linphone.org/BC/public/external/webrtc")
+               (commit "583acd27665cfadef8ab03eb85a768d308bd29dd")))
+             (file-name
+              (git-file-name "webrtc-for-mswebrtc" version))
+             (sha256
+              (base32
+               "1maqychrgwy0z4zypa03qp726l2finw64z6cymdzhd58ql3p1lvm"))))
+         ("python" ,python-wrapper)))
+      (inputs
+       `(("bctoolbox" ,bctoolbox)
+         ("mediastreamer2" ,mediastreamer2)
+         ("ortp" ,ortp)))
+      (synopsis "Media Streamer WebRTC Codec")
+      (description "MSWebRTC is a plugin of MediaStreamer, adding support for
 WebRTC codec.  It includes features from WebRTC, such as, iSAC and AECM.")
-    (home-page "https://gitlab.linphone.org/BC/public/mswebrtc")
-    (license license:gpl2+)))
+      (home-page "https://gitlab.linphone.org/BC/public/mswebrtc")
+      (license license:gpl2+))))
 
 (define-public msamr
   (package
-- 
2.31.0

From aa2ec33ae2b0f554a366da55908b97e6df8a1830 Mon Sep 17 00:00:00 2001
From: Raghav Gururajan <[email-masked]>
Date: Sat, 20 Mar 2021 00:01:26 -0400
Subject: [PATCH 50/50] gnu: msamr: Update to 1.1.3-11.

* gnu/packages/linphone.scm (msamr) [source]: Switch to git repository.
[version]: Update to 1.1.3-11.
[inputs]: Add bctoolbox.
---
 gnu/packages/linphone.scm | 56 +++++++++++++++++++++------------------
 1 file changed, 30 insertions(+), 26 deletions(-)

diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm
index c24069a948..2b19fb9e56 100644
--- a/gnu/packages/linphone.scm
+++ b/gnu/packages/linphone.scm
@@ -1006,30 +1006,34 @@ WebRTC codec.  It includes features from WebRTC, such as, iSAC and AECM.")
       (license license:gpl2+))))
 
 (define-public msamr
-  (package
-    (name "msamr")
-    (version "1.1.3")
-    (source
-     (origin
-       (method url-fetch)
-       (uri
-        (string-append "https://www.linphone.org/releases/sources/plugins/"
-                       name "/" name "-" version ".tar.gz"))
-       (sha256
-        (base32 "16c9f3z4wnj73k7y8gb0fgpr4axsm7b5zrbjvy8vsgz9gyg3agm5"))))
-    (build-system cmake-build-system)
-    (arguments
-     `(#:tests? #f                      ; No test target
-       #:configure-flags
-       (list "-DENABLE_STATIC=NO"       ; Not required
-             "-DENABLE_WIDEBAND=YES")))
-    (inputs
-     `(("mediastreamer2" ,mediastreamer2)
-       ("opencoreamr" ,opencore-amr)
-       ("ortp" ,ortp)
-       ("voamrwbenc" ,vo-amrwbenc)))
-    (synopsis "Media Streamer AMR Codec")
-    (description "MSAMR is a plugin of MediaStreamer, adding support for AMR
+  (let ((commit "5ab5c098299107048dfcbfc741f7392faef167bd")
+        (revision "11"))
+    (package
+      (name "msamr")
+      (version (git-version "1.1.3" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "git://git.linphone.org/msamr")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "1g79lw1qi1mlw3v1b0cixmqiwjql81gz9naakb15n8pvaag9aaqm"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:tests? #f                    ; No test target
+         #:configure-flags
+         (list "-DENABLE_STATIC=NO"     ; Not required
+               "-DENABLE_WIDEBAND=YES")))
+      (inputs
+       `(("bctoolbox" ,bctoolbox)
+         ("mediastreamer2" ,mediastreamer2)
+         ("opencoreamr" ,opencore-amr)
+         ("ortp" ,ortp)
+         ("voamrwbenc" ,vo-amrwbenc)))
+      (synopsis "Media Streamer AMR Codec")
+      (description "MSAMR is a plugin of MediaStreamer, adding support for AMR
 codec.  It is based on the opencore-amr implementation.")
-    (home-page "https://gitlab.linphone.org/BC/public/msamr")
-    (license license:gpl3+)))
+      (home-page "https://gitlab.linphone.org/BC/public/msamr")
+      (license license:gpl3+))))
-- 
2.31.0