This is a partial revert of commit f2166cface.
* gnu/packages/openldap.scm (openldap-for-linphone): Restore this variable.
* gnu/packages/linphone.scm (liblinphone)[inputs]: Replace openldap with
openldap-for-linphone.
		
	
			
		
			
				
	
	
		
			1054 lines
		
	
	
	
		
			43 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
			
		
		
	
	
			1054 lines
		
	
	
	
		
			43 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
;;; GNU Guix --- Functional package management for GNU
 | 
						|
;;;
 | 
						|
;;; Copyright © 2020, 2021 Raghav Gururajan <raghavgururajan@disroot.org>
 | 
						|
;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 | 
						|
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
						|
;;; Copyright © 2023 Ricardo Wurmus <rekado@elephly.net>
 | 
						|
;;; Copyright © 2023 Andreas Enge <andreas@enge.fr>
 | 
						|
;;;
 | 
						|
;;; 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 linphone)
 | 
						|
  #:use-module (gnu packages)
 | 
						|
  #:use-module (gnu packages admin)
 | 
						|
  #:use-module (gnu packages aidc)
 | 
						|
  #:use-module (gnu packages audio)
 | 
						|
  #:use-module (gnu packages avahi)
 | 
						|
  #:use-module (gnu packages cpp)
 | 
						|
  #: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)
 | 
						|
  #:use-module (gnu packages glib)
 | 
						|
  #:use-module (gnu packages gnome)
 | 
						|
  #:use-module (gnu packages gnome-xyz)
 | 
						|
  #:use-module (gnu packages graphviz)
 | 
						|
  #:use-module (gnu packages gtk)
 | 
						|
  #:use-module (gnu packages image)
 | 
						|
  #:use-module (gnu packages linux)
 | 
						|
  #:use-module (gnu packages ncurses)
 | 
						|
  #:use-module (gnu packages openldap)
 | 
						|
  #:use-module (gnu packages perl)
 | 
						|
  #:use-module (gnu packages pkg-config)
 | 
						|
  #:use-module (gnu packages pulseaudio)
 | 
						|
  #:use-module (gnu packages python)
 | 
						|
  #:use-module (gnu packages python-xyz)
 | 
						|
  #:use-module (gnu packages qt)
 | 
						|
  #:use-module (gnu packages java)
 | 
						|
  #:use-module (gnu packages sqlite)
 | 
						|
  #:use-module (gnu packages telephony)
 | 
						|
  #:use-module (gnu packages tls)
 | 
						|
  #:use-module (gnu packages video)
 | 
						|
  #:use-module (gnu packages xiph)
 | 
						|
  #:use-module (gnu packages xml)
 | 
						|
  #:use-module (gnu packages xorg)
 | 
						|
  #:use-module ((guix licenses) #:prefix license:)
 | 
						|
  #:use-module (guix packages)
 | 
						|
  #:use-module (guix download)
 | 
						|
  #:use-module (guix gexp)
 | 
						|
  #:use-module (guix git-download)
 | 
						|
  #:use-module (guix build-system cmake)
 | 
						|
  #:use-module (guix build-system qt))
 | 
						|
 | 
						|
(define-public bcunit
 | 
						|
  (let ((commit "74021cc7cb20a4e177748dd2948173e1f9c270ae")
 | 
						|
        (revision "0"))
 | 
						|
    (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)
 | 
						|
      (outputs '("out" "doc"))
 | 
						|
      (arguments
 | 
						|
       `(#:configure-flags (list "-DENABLE_STATIC=NO"
 | 
						|
                                 "-DENABLE_CURSES=ON"
 | 
						|
                                 "-DENABLE_DOC=ON"
 | 
						|
                                 "-DENABLE_EXAMPLES=ON"
 | 
						|
                                 "-DENABLE_TEST=ON"
 | 
						|
                                 "-DENABLE_MEMTRACE=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")))
 | 
						|
               ;; 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)")))))
 | 
						|
           (replace 'check
 | 
						|
             (lambda _
 | 
						|
               (with-directory-excursion "BCUnit/Sources/Test"
 | 
						|
                 (invoke "./test_bcunit"))))
 | 
						|
           (add-after 'install 'move-doc
 | 
						|
             (lambda* (#:key outputs #:allow-other-keys)
 | 
						|
               (let ((out (assoc-ref outputs "out"))
 | 
						|
                     (doc (assoc-ref outputs "doc")))
 | 
						|
                 (for-each mkdir-p
 | 
						|
                           `(,(string-append doc "/share/doc")
 | 
						|
                             ,(string-append doc "/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 doc "/share/BCUnit/Examples"))))))))
 | 
						|
      (inputs
 | 
						|
       (list 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 a 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+))))
 | 
						|
 | 
						|
(define-public bctoolbox
 | 
						|
  (package
 | 
						|
    (name "bctoolbox")
 | 
						|
    (version "5.2.49")
 | 
						|
    (source
 | 
						|
     (origin
 | 
						|
       (method git-fetch)
 | 
						|
       (uri (git-reference
 | 
						|
             (url "https://gitlab.linphone.org/BC/public/bctoolbox.git")
 | 
						|
             (commit version)))
 | 
						|
       (file-name (git-file-name name version))
 | 
						|
       (sha256
 | 
						|
        (base32 "0b51308jy5z32gp594r78jvbyrha16sanxdnbcmxgrwnb4myqx5j"))))
 | 
						|
    (build-system cmake-build-system)
 | 
						|
    (outputs '("out" "debug"))
 | 
						|
    (arguments
 | 
						|
     `(#:configure-flags (list "-DENABLE_STATIC=OFF"
 | 
						|
                               ;; Do not use -Werror, because due to skipping
 | 
						|
                               ;; a test there are unused procedures.
 | 
						|
                               "-DENABLE_STRICT=OFF")
 | 
						|
       #:phases
 | 
						|
       (modify-phases %standard-phases
 | 
						|
         (add-after 'unpack 'patch-cmake
 | 
						|
           (lambda* (#:key inputs #:allow-other-keys)
 | 
						|
             ;; Fix decaf dependency (see:
 | 
						|
             ;; https://gitlab.linphone.org/BC/public/bctoolbox/-/issues/3).
 | 
						|
             (let* ((decaf (assoc-ref inputs "libdecaf")))
 | 
						|
               (substitute* (find-files "." "CMakeLists.txt")
 | 
						|
                 (("find_package\\(Decaf CONFIG\\)")
 | 
						|
                  "set(DECAF_FOUND 1)")
 | 
						|
                 (("\\$\\{DECAF_INCLUDE_DIRS\\}")
 | 
						|
                  (string-append decaf "/include/decaf"))
 | 
						|
                 (("\\$\\{DECAF_TARGETNAME\\}")
 | 
						|
                  "decaf")))))
 | 
						|
         (add-after 'unpack 'skip-problematic-tests
 | 
						|
           (lambda _
 | 
						|
             ;; The following test relies on networking; disable it.
 | 
						|
             (substitute* "tester/port.c"
 | 
						|
               (("[ \t]*TEST_NO_TAG.*bctbx_addrinfo_sort_test\\),")
 | 
						|
                ""))))
 | 
						|
         (add-after 'unpack 'fix-installed-resource-directory-detection
 | 
						|
           (lambda _
 | 
						|
             ;; There's some broken logic in tester.c that checks if CWD, or
 | 
						|
             ;; if its parent exist, and if so, sets the prefix where the test
 | 
						|
             ;; resources are looked up to; disable it (see:
 | 
						|
             ;; https://gitlab.linphone.org/BC/public/bctoolbox/-/issues/4).
 | 
						|
             (substitute* "src/tester.c"
 | 
						|
               (("if \\(file_exists\\(\".\"\\)\\)")
 | 
						|
                "if (NULL)")
 | 
						|
               (("if \\(file_exists\\(\"..\"\\)\\)")
 | 
						|
                "if (NULL)"))))
 | 
						|
         (replace 'check
 | 
						|
           (lambda* (#:key tests? #:allow-other-keys)
 | 
						|
             (when tests?
 | 
						|
               (with-directory-excursion "tester"
 | 
						|
                 (invoke "./bctoolbox_tester"))))))))
 | 
						|
    (inputs
 | 
						|
     (list bcunit libdecaf mbedtls-apache))
 | 
						|
    (synopsis "Belledonne Communications Tool Box")
 | 
						|
    (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:gpl3+)))
 | 
						|
 | 
						|
(define-public belr
 | 
						|
  (package
 | 
						|
    (name "belr")
 | 
						|
    (version "5.2.49")
 | 
						|
    (source
 | 
						|
     (origin
 | 
						|
       (method git-fetch)
 | 
						|
       (uri (git-reference
 | 
						|
             (url "https://gitlab.linphone.org/BC/public/belr.git")
 | 
						|
             (commit version)))
 | 
						|
       (file-name (git-file-name name version))
 | 
						|
       (sha256
 | 
						|
        (base32 "1bj8qd4ahbff476z0ccwsxy7qznqi6n5l1pdd7zbvk0h53zyj74c"))))
 | 
						|
    (build-system cmake-build-system)
 | 
						|
    (outputs '("out" "debug" "tester"))
 | 
						|
    (arguments
 | 
						|
     (list
 | 
						|
      #:configure-flags '(list "-DENABLE_STATIC=OFF")
 | 
						|
       #:phases
 | 
						|
       #~(modify-phases %standard-phases
 | 
						|
           (delete 'check)              ;moved after the install phase
 | 
						|
           (add-after 'install 'check
 | 
						|
             (lambda* (#:key tests? outputs #:allow-other-keys)
 | 
						|
               (when tests?
 | 
						|
                 (invoke (string-append #$output:tester "/bin/belr_tester")))))
 | 
						|
           (add-after 'install 'move-tester
 | 
						|
             (lambda _
 | 
						|
               (for-each mkdir-p
 | 
						|
                         (list (string-append #$output:tester "/bin")
 | 
						|
                               (string-append #$output:tester "/share")))
 | 
						|
               (rename-file
 | 
						|
                (string-append #$output "/bin/belr_tester")
 | 
						|
                (string-append #$output:tester "/bin/belr_tester"))
 | 
						|
               (rename-file
 | 
						|
                (string-append #$output "/share/belr-tester/res")
 | 
						|
                ;; The detect_res_prefix procedure in bctoolbox's tester.c
 | 
						|
                ;; resolves the resource path based on the executable path and
 | 
						|
                ;; name, so have it match.
 | 
						|
                (string-append #$output:tester "/share/belr_tester")))))))
 | 
						|
    (inputs
 | 
						|
     (list bctoolbox))
 | 
						|
    (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
 | 
						|
language defined by an ABNF grammar, such as the protocols standardized at
 | 
						|
IETF.")
 | 
						|
    (home-page "https://gitlab.linphone.org/BC/public/belr")
 | 
						|
    (license license:gpl3+)))
 | 
						|
 | 
						|
(define-public belcard
 | 
						|
  (package
 | 
						|
    (name "belcard")
 | 
						|
    (version "5.2.49")
 | 
						|
    (source
 | 
						|
     (origin
 | 
						|
       (method git-fetch)
 | 
						|
       (uri (git-reference
 | 
						|
             (url "https://gitlab.linphone.org/BC/public/belcard.git")
 | 
						|
             (commit version)))
 | 
						|
       (file-name (git-file-name name version))
 | 
						|
       (sha256
 | 
						|
        (base32 "1rl1x7rnlnncb45sjp8r2xbcwr9l8qv5bhfybhr0mmvsv3a4k4a3"))))
 | 
						|
    (build-system cmake-build-system)
 | 
						|
    (outputs '("out" "debug" "tester"))
 | 
						|
    (arguments
 | 
						|
     (list
 | 
						|
      #:configure-flags '(list "-DENABLE_STATIC=OFF")
 | 
						|
      #:phases
 | 
						|
      #~(modify-phases %standard-phases
 | 
						|
          (add-after 'unpack 'patch-vcard-grammar-location
 | 
						|
            (lambda _
 | 
						|
              (let ((vcard-grammar
 | 
						|
                     (string-append #$output
 | 
						|
                                    "/share/belr/grammars/vcard_grammar")))
 | 
						|
                (substitute* "include/belcard/vcard_grammar.hpp"
 | 
						|
                  (("define VCARD_GRAMMAR \"vcard_grammar\"")
 | 
						|
                   (format #f "define VCARD_GRAMMAR ~s" vcard-grammar))))))
 | 
						|
          (add-after 'install 'install-tester
 | 
						|
            (lambda _
 | 
						|
              (let ((test-name (string-append #$name "_tester")))
 | 
						|
                (for-each mkdir-p
 | 
						|
                          (list (string-append #$output:tester "/bin")
 | 
						|
                                (string-append #$output:tester "/share")))
 | 
						|
                (rename-file (string-append #$output "/bin/" test-name)
 | 
						|
                             (string-append #$output:tester "/bin/" test-name))
 | 
						|
                (rename-file (string-append #$output "/share/" test-name)
 | 
						|
                             (string-append #$output:tester "/share/" test-name)))))
 | 
						|
          (delete 'check)
 | 
						|
          (add-after 'install-tester 'check
 | 
						|
            (lambda* (#:key tests? #:allow-other-keys)
 | 
						|
              (when tests?
 | 
						|
                (invoke (string-append #$output:tester
 | 
						|
                                       "/bin/belcard_tester"))))))))
 | 
						|
    (inputs
 | 
						|
     (list bctoolbox belr))
 | 
						|
    (synopsis "Belledonne Communications VCard Library")
 | 
						|
    (description "Belcard is a C++ library to manipulate VCard standard
 | 
						|
format.")
 | 
						|
    (home-page "https://gitlab.linphone.org/BC/public/belcard")
 | 
						|
    (license license:gpl3+)))
 | 
						|
 | 
						|
(define-public bcmatroska2
 | 
						|
  (package
 | 
						|
    (name "bcmatroska2")
 | 
						|
    (version "5.2.1")
 | 
						|
    (source
 | 
						|
     (origin
 | 
						|
       (method git-fetch)
 | 
						|
       (uri (git-reference
 | 
						|
             (url "https://gitlab.linphone.org/BC/public/bcmatroska2.git")
 | 
						|
             (commit version)))
 | 
						|
       (file-name (git-file-name name version))
 | 
						|
       (sha256
 | 
						|
        (base32 "14c79znw37q3yc7llbv2wmxmm4a3ws6iq3cvgkbmcnf7hmhm7zdi"))))
 | 
						|
    (build-system cmake-build-system)
 | 
						|
    (arguments
 | 
						|
     (list
 | 
						|
      #:tests? #f                                     ;No test target
 | 
						|
      #:phases
 | 
						|
      '(modify-phases %standard-phases
 | 
						|
         ;; See
 | 
						|
         ;; https://gitlab.linphone.org/BC/public/bcmatroska2/-/merge_requests/18
 | 
						|
         (add-after 'unpack 'fix-build-system
 | 
						|
           (lambda _
 | 
						|
             (substitute* "corec/corec/CMakeLists.txt"
 | 
						|
               (("helpers/file/file_libc.c") "")))))
 | 
						|
      #:configure-flags
 | 
						|
      '(list "-DENABLE_STATIC=NO"))) ;Not required
 | 
						|
    (inputs (list bctoolbox))
 | 
						|
    (synopsis "Belledonne Communications Media Container")
 | 
						|
    (description "BcMatroska is a free and open standard multi-media container
 | 
						|
format.  It can hold an unlimited number of video, audio, picture, or subtitle
 | 
						|
tracks in one file.  This project provides a convenient distribution of the
 | 
						|
Matroska multimedia container format.")
 | 
						|
    (home-page "https://gitlab.linphone.org/BC/public/bcmatroska2")
 | 
						|
    (license (list license:gpl2+        ;for this package (build system files)
 | 
						|
                   license:bsd-4        ;for Core C and LibEBML2
 | 
						|
                   license:lgpl2.1+)))) ;for LibMatroska2
 | 
						|
 | 
						|
(define-public bcg729
 | 
						|
  (package
 | 
						|
    (name "bcg729")
 | 
						|
    (version "1.1.1")
 | 
						|
    (source
 | 
						|
     (origin
 | 
						|
       (method git-fetch)
 | 
						|
       (uri (git-reference
 | 
						|
             (url "git://git.linphone.org/bcg729")
 | 
						|
             (commit version)))
 | 
						|
       (file-name (git-file-name name version))
 | 
						|
       (sha256
 | 
						|
        (base32 "1hal6b3w6f8y5r1wa0xzj8sj2jjndypaxyw62q50p63garp2h739"))))
 | 
						|
    (build-system cmake-build-system)
 | 
						|
    (arguments
 | 
						|
     `(#: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))))
 | 
						|
         (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"))))))))
 | 
						|
    (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
 | 
						|
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://linphone.org/technical-corner/bcg729")
 | 
						|
    (license license:gpl3+)))
 | 
						|
 | 
						|
(define-public ortp
 | 
						|
  (package
 | 
						|
    (name "ortp")
 | 
						|
    (version "5.2.49")
 | 
						|
    (source
 | 
						|
     (origin
 | 
						|
       (method git-fetch)
 | 
						|
       (uri (git-reference
 | 
						|
             (url "https://gitlab.linphone.org/BC/public/ortp.git")
 | 
						|
             (commit version)))
 | 
						|
       (file-name (git-file-name name version))
 | 
						|
       (sha256
 | 
						|
        (base32 "1hzbrj1ny3lr9sql0lrxggc48sqv5j2yvbpnrdnph88pwzrdnbn5"))))
 | 
						|
    (build-system cmake-build-system)
 | 
						|
    (outputs '("out""tester"
 | 
						|
               "doc"))                  ;1.5 MiB of HTML doc
 | 
						|
    (arguments
 | 
						|
     (list
 | 
						|
      #:tests? #f                       ;requires networking
 | 
						|
      #:configure-flags '(list "-DENABLE_STATIC=NO"
 | 
						|
                               "-DENABLE_DOC=NO" ;XXX: missing link for b64
 | 
						|
                               "-DENABLE_TESTS=YES")
 | 
						|
      #:phases
 | 
						|
      #~(modify-phases %standard-phases
 | 
						|
          (add-after 'unpack 'fix-version-strings
 | 
						|
            ;; See: https://gitlab.linphone.org/BC/public/ortp/-/issues/5.
 | 
						|
            (lambda _
 | 
						|
              (substitute* "CMakeLists.txt"
 | 
						|
                (("VERSION [0-9]+\\.[0-9]+\\.[0-9]+")
 | 
						|
                 (string-append "VERSION " #$version))
 | 
						|
                (("\\$\\{ORTP_DOC_VERSION\\}")
 | 
						|
                 #$version))))
 | 
						|
          (add-after 'install 'separate-outputs
 | 
						|
            (lambda _
 | 
						|
              (let* ((doc-src
 | 
						|
                      (string-append #$output "/share/doc/ortp-" #$version))
 | 
						|
                     (doc-dest
 | 
						|
                      (string-append #$output:doc "/share/doc/ortp-" #$version)))
 | 
						|
                (for-each mkdir-p (list (string-append #$output:doc "/share/doc")
 | 
						|
                                        (string-append #$output:tester "/bin")))
 | 
						|
                (rename-file doc-src doc-dest)
 | 
						|
                (rename-file (string-append #$output "/bin")
 | 
						|
                             (string-append #$output:tester "/bin"))))))))
 | 
						|
    (native-inputs
 | 
						|
     (list graphviz doxygen))
 | 
						|
    (inputs
 | 
						|
     (list bctoolbox))
 | 
						|
    (synopsis "Belledonne Communications RTP Library")
 | 
						|
    (description "oRTP is a C library implementing the RTP protocol.  It
 | 
						|
implements the RFC 3550 standard.")
 | 
						|
    (home-page "https://linphone.org/technical-corner/ortp")
 | 
						|
    (license license:gpl3+)))
 | 
						|
 | 
						|
(define-public bzrtp
 | 
						|
  (package
 | 
						|
    (name "bzrtp")
 | 
						|
    (version "5.2.49")
 | 
						|
    (source
 | 
						|
     (origin
 | 
						|
       (method git-fetch)
 | 
						|
       (uri (git-reference
 | 
						|
             (url "https://gitlab.linphone.org/BC/public/bzrtp")
 | 
						|
             (commit version)))
 | 
						|
       (file-name (git-file-name name version))
 | 
						|
       (sha256
 | 
						|
        (base32 "0dvn1w0g9c07llz9n82l6qdzz8lzz74jcdm1yyfks0jy7i63cr8w"))))
 | 
						|
    (build-system cmake-build-system)
 | 
						|
    (arguments
 | 
						|
     `(#:configure-flags
 | 
						|
       (list
 | 
						|
        "-DENABLE_STATIC=NO"
 | 
						|
        "-DENABLE_TESTS=YES")))
 | 
						|
    (inputs
 | 
						|
     (list bctoolbox libxml2 sqlite))
 | 
						|
    (synopsis "Belledonne Communications ZRTP Library")
 | 
						|
    (description "BZRTP is an implementation of ZRTP keys exchange protocol,
 | 
						|
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:gpl3+)))
 | 
						|
 | 
						|
(define-public belle-sip
 | 
						|
  (package
 | 
						|
    (name "belle-sip")
 | 
						|
    (version "5.2.49")
 | 
						|
    (source
 | 
						|
     (origin
 | 
						|
       (method git-fetch)
 | 
						|
       (uri (git-reference
 | 
						|
             (url "https://gitlab.linphone.org/BC/public/belle-sip.git")
 | 
						|
             (commit version)))
 | 
						|
       (file-name (git-file-name name version))
 | 
						|
       (sha256
 | 
						|
        (base32 "0yx1qvzp11ysh24hxrvz7dm69j8zswa0xcx9m42vcv95z72166cq"))))
 | 
						|
    (build-system cmake-build-system)
 | 
						|
    (outputs '("out" "tester"))
 | 
						|
    (arguments
 | 
						|
     (list
 | 
						|
      #:configure-flags '(list "-DENABLE_STATIC=NO"
 | 
						|
                               "-DENABLE_MDNS=ON"
 | 
						|
                               ;; We skip a test and thus have an unused
 | 
						|
                               ;; procedure, so we need to disable -Werror.
 | 
						|
                               "-DENABLE_STRICT=OFF")
 | 
						|
       #:phases
 | 
						|
       #~(modify-phases %standard-phases
 | 
						|
           (add-after 'unpack 'patch
 | 
						|
             (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")))
 | 
						|
               ;; Disable broken test.  This test uses
 | 
						|
               ;; bctbx_unescaped_string_only_chars_in_rules from bctoolbox,
 | 
						|
               ;; which unescapes too much.
 | 
						|
               (substitute* "tester/belle_sip_base_uri_tester.c"
 | 
						|
                 (("[ \t]*TEST_NO_TAG.*test_unescaping_good_chars\\),")
 | 
						|
                  ""))
 | 
						|
               (substitute* "src/sdp/parser.cc"
 | 
						|
                 (("load\\(\"sdp_grammar\"\\)")
 | 
						|
                  (string-append "load(\"" #$output
 | 
						|
                                 "/share/belr/grammars/sdp_grammar\")")))
 | 
						|
               (substitute* "src/CMakeLists.txt"
 | 
						|
                 ;; ANTLR would use multithreaded DFA generation otherwise,
 | 
						|
                 ;; which would not be reproducible.
 | 
						|
                 (("-Xmultithreaded ") ""))))
 | 
						|
           (delete 'check)              ;move after install
 | 
						|
           (add-after 'install 'separate-outputs
 | 
						|
             (lambda _
 | 
						|
               (let ((tester-name "belle_sip_tester"))
 | 
						|
                 (for-each mkdir-p (list (string-append #$output:tester "/bin")
 | 
						|
                                         (string-append #$output:tester "/share")))
 | 
						|
                 (rename-file (string-append #$output "/bin")
 | 
						|
                              (string-append #$output:tester "/bin"))
 | 
						|
                 (rename-file (string-append #$output "/share/" tester-name)
 | 
						|
                              (string-append #$output:tester "/share/" tester-name)))))
 | 
						|
           (add-after 'separate-outputs 'check
 | 
						|
             (lambda* (#:key tests? #:allow-other-keys)
 | 
						|
               (when tests?
 | 
						|
                 (let ((tester (string-append #$output:tester
 | 
						|
                                              "/bin/belle_sip_tester")))
 | 
						|
                   (for-each (lambda (suite-name)
 | 
						|
                               (invoke 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")))))))))
 | 
						|
    (inputs
 | 
						|
     (list avahi bctoolbox belr zlib))
 | 
						|
    (synopsis "Belledonne Communications SIP Library")
 | 
						|
    (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://linphone.org/technical-corner/belle-sip")
 | 
						|
    (license license:gpl3+)))
 | 
						|
 | 
						|
(define-public mediastreamer2
 | 
						|
  (package
 | 
						|
    (name "mediastreamer2")
 | 
						|
    (version "5.2.49")
 | 
						|
    (source
 | 
						|
     (origin
 | 
						|
       (method git-fetch)
 | 
						|
       (uri (git-reference
 | 
						|
             (url "https://gitlab.linphone.org/BC/public/mediastreamer2.git")
 | 
						|
             (commit version)))
 | 
						|
       (file-name (git-file-name name version))
 | 
						|
       (sha256
 | 
						|
        (base32 "0mj0q2xaac22p2wf5gvgaiga03fbydilxfxzwyc6nwp5fyjnzawd"))))
 | 
						|
    (outputs '("out" "doc" "tester"))
 | 
						|
    (build-system cmake-build-system)
 | 
						|
    (arguments
 | 
						|
     (list
 | 
						|
      #:configure-flags '(list "-DENABLE_STATIC=NO"
 | 
						|
                               "-DENABLE_PCAP=YES"
 | 
						|
                               ;; Do not fail on compile warnings.
 | 
						|
                               "-DENABLE_STRICT=NO"
 | 
						|
                               "-DENABLE_PORTAUDIO=YES"
 | 
						|
                               "-DENABLE_G729B_CNG=YES")
 | 
						|
      #:phases
 | 
						|
      #~(modify-phases %standard-phases
 | 
						|
          (add-after 'unpack 'fix-version
 | 
						|
            (lambda _
 | 
						|
              (substitute* "CMakeLists.txt"
 | 
						|
                (("VERSION [0-9]+\\.[0-9]+\\.[0-9]+")
 | 
						|
                 (string-append "VERSION " #$version)))))
 | 
						|
          (add-after 'unpack 'patch-source
 | 
						|
            (lambda _
 | 
						|
              (substitute* "src/otherfilters/mspcapfileplayer.c"
 | 
						|
                (("O_BINARY") "L_INCR"))))
 | 
						|
          (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"))))
 | 
						|
          (delete 'check)               ;move after install
 | 
						|
          (add-after 'install 'separate-outputs
 | 
						|
            (lambda _
 | 
						|
              (let ((tester-name (string-append #$name "_tester"))
 | 
						|
                    (doc-name (string-append #$name "-" #$version)))
 | 
						|
                (for-each mkdir-p
 | 
						|
                          (list (string-append #$output:tester "/bin")
 | 
						|
                                (string-append #$output:tester "/share")
 | 
						|
                                (string-append #$output:doc "/share/doc")))
 | 
						|
                ;; Move the tester executable.
 | 
						|
                (rename-file (string-append #$output "/bin/" tester-name)
 | 
						|
                             (string-append #$output:tester "/bin/" tester-name))
 | 
						|
                ;; Move the tester data files.
 | 
						|
                (rename-file (string-append #$output "/share/" tester-name)
 | 
						|
                             (string-append #$output:tester "/share/" tester-name))
 | 
						|
                ;; Move the HTML documentation.
 | 
						|
                (rename-file (string-append #$output "/share/doc/" doc-name)
 | 
						|
                             (string-append #$output:doc "/share/doc/" doc-name)))))
 | 
						|
          (add-after 'separate-outputs 'check
 | 
						|
            (lambda _
 | 
						|
              (let ((tester (string-append #$output:tester
 | 
						|
                                           "/bin/mediastreamer2_tester")))
 | 
						|
                (for-each (lambda (suite-name)
 | 
						|
                            (invoke tester "--suite" suite-name))
 | 
						|
                          ;; Some tests fail, due to requiring access to the
 | 
						|
                          ;; sound card or the network.
 | 
						|
                          (list "Basic Audio"
 | 
						|
                                ;; "Sound Card"
 | 
						|
                                ;; "AdaptiveAlgorithm"
 | 
						|
                                ;; "AudioStream"
 | 
						|
                                ;; "VideoStream"
 | 
						|
                                "H26x Tools"
 | 
						|
                                "Framework"
 | 
						|
                                ;; "Player"
 | 
						|
                                "TextStream"))))))))
 | 
						|
    (native-inputs
 | 
						|
     (list graphviz doxygen python-wrapper xorg-server-for-tests))
 | 
						|
    (inputs
 | 
						|
     (list alsa-lib
 | 
						|
           bcg729
 | 
						|
           bcmatroska2
 | 
						|
           bctoolbox
 | 
						|
           ffmpeg-4
 | 
						|
           glew
 | 
						|
           glu
 | 
						|
           mesa-utils
 | 
						|
           gsm
 | 
						|
           mesa
 | 
						|
           opus
 | 
						|
           ortp
 | 
						|
           libpcap
 | 
						|
           portaudio
 | 
						|
           pulseaudio
 | 
						|
           spandsp
 | 
						|
           speex
 | 
						|
           speexdsp
 | 
						|
           libsrtp
 | 
						|
           libtheora
 | 
						|
           libjpeg-turbo
 | 
						|
           v4l-utils
 | 
						|
           libvpx
 | 
						|
           libx11
 | 
						|
           libxv
 | 
						|
           bzrtp))
 | 
						|
    (synopsis "Belledonne Communications Streaming Engine")
 | 
						|
    (description "Mediastreamer2 is a powerful and lightweight streaming engine
 | 
						|
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://linphone.org/technical-corner/mediastreamer2")
 | 
						|
    (license license:gpl3+)))
 | 
						|
 | 
						|
(define-public lime
 | 
						|
  (package
 | 
						|
    (name "lime")
 | 
						|
    (version "5.2.49")
 | 
						|
    (source
 | 
						|
     (origin
 | 
						|
       (method git-fetch)
 | 
						|
       (uri (git-reference
 | 
						|
             (url "https://gitlab.linphone.org/BC/public/lime.git")
 | 
						|
             (commit version)))
 | 
						|
       (file-name (git-file-name name version))
 | 
						|
       (sha256
 | 
						|
        (base32 "1mglnypxl3glwvwf2h5q4ikbm6wbcd9pb7kdws8zajjhk9q803jr"))))
 | 
						|
    (build-system cmake-build-system)
 | 
						|
    (outputs '("out" "doc"))
 | 
						|
    (arguments
 | 
						|
     `(#:configure-flags (list "-DENABLE_STATIC=NO"
 | 
						|
                               "-DENABLE_C_INTERFACE=YES"
 | 
						|
                               "-DENABLE_DOC=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\"\\)") "")
 | 
						|
               (("add_test\\(?.*\"Multidomains\"\\)") "")
 | 
						|
               (("add_test\\(?.*\"Lime server\"\\)") ""))))
 | 
						|
         (add-after 'build 'build-doc
 | 
						|
           (lambda _
 | 
						|
             (invoke "make" "doc")))
 | 
						|
         (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)))))))
 | 
						|
    (native-inputs
 | 
						|
     `(("dot" ,graphviz)
 | 
						|
       ("doxygen" ,doxygen)))
 | 
						|
    (inputs
 | 
						|
     (list bctoolbox belle-sip 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")
 | 
						|
    (version "5.2.50")
 | 
						|
    (source
 | 
						|
     (origin
 | 
						|
       (method git-fetch)
 | 
						|
       (uri (git-reference
 | 
						|
             (url "https://gitlab.linphone.org/BC/public/liblinphone.git")
 | 
						|
             (commit version)))
 | 
						|
       (file-name (git-file-name name version))
 | 
						|
       (sha256
 | 
						|
        (base32 "1lvbva234rmck57cxgswgqqvnq8r58i0ls4qgpymrxdfj74rinxj"))))
 | 
						|
    (outputs '("out" "tester"))
 | 
						|
    (build-system cmake-build-system)
 | 
						|
    (arguments
 | 
						|
     (list
 | 
						|
      #:tests? #f                       ; Tests require networking
 | 
						|
      #:configure-flags
 | 
						|
      '(list "-DENABLE_FLEXIAPI=NO"  ;requires jsoncpp, but it cannot be found
 | 
						|
             "-DENABLE_STATIC=NO"
 | 
						|
             "-DENABLE_DOC=NO"       ;requires unpackaged javasphinx
 | 
						|
             "-DENABLE_LDAP=YES"
 | 
						|
             "-DENABLE_STRICT=NO")
 | 
						|
      #:phases
 | 
						|
      #~(modify-phases %standard-phases
 | 
						|
          (add-after 'install 'separate-outputs
 | 
						|
            (lambda* (#:key outputs #:allow-other-keys)
 | 
						|
              (let ((tester-name (string-append #$name "_tester")))
 | 
						|
                (for-each mkdir-p
 | 
						|
                          (list (string-append #$output:tester "/bin")
 | 
						|
                                (string-append #$output:tester "/share")))
 | 
						|
                (rename-file (string-append #$output "/bin/" tester-name)
 | 
						|
                             (string-append #$output:tester "/bin/" tester-name))
 | 
						|
                (rename-file (string-append #$output "/bin/groupchat_benchmark")
 | 
						|
                             (string-append #$output:tester "/bin/groupchat_benchmark"))
 | 
						|
                (rename-file (string-append #$output "/share/" tester-name)
 | 
						|
                             (string-append #$output:tester "/share/" tester-name))))))))
 | 
						|
    (native-inputs
 | 
						|
     (list graphviz
 | 
						|
           doxygen
 | 
						|
           gettext-minimal
 | 
						|
           perl
 | 
						|
           python-wrapper
 | 
						|
           python-pystache
 | 
						|
           python-six
 | 
						|
           eudev))
 | 
						|
    (inputs
 | 
						|
     (list bctoolbox
 | 
						|
           belcard
 | 
						|
           belle-sip
 | 
						|
           belr
 | 
						|
           bzrtp
 | 
						|
           lime
 | 
						|
           libnotify
 | 
						|
           libxml2
 | 
						|
           mediastreamer2
 | 
						|
           openldap-for-linphone
 | 
						|
           ortp
 | 
						|
           soci
 | 
						|
           sqlite
 | 
						|
           xsd
 | 
						|
           zlib
 | 
						|
           zxing-cpp))
 | 
						|
    (synopsis "Belledonne Communications Softphone Library")
 | 
						|
    (description "Liblinphone is a high-level SIP library integrating
 | 
						|
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://linphone.org/technical-corner/liblinphone")
 | 
						|
    (license license:gpl3+)))
 | 
						|
 | 
						|
(define-public linphone-desktop
 | 
						|
  (package
 | 
						|
    (name "linphone-desktop")
 | 
						|
    (version "5.0.14")
 | 
						|
    (source
 | 
						|
     (origin
 | 
						|
       (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 "0glrfsp087ni5hn6x6p4f6y63r4nyp061yyy0rfgddbxkzdqi2j1"))
 | 
						|
       (patches (search-patches "linphone-desktop-without-sdk.patch"))))
 | 
						|
    (build-system qt-build-system)
 | 
						|
    (outputs '("out" "debug"))
 | 
						|
    (arguments
 | 
						|
     (list
 | 
						|
      #:tests? #f                       ; No test target
 | 
						|
      #:configure-flags
 | 
						|
      #~(list (string-append "-DFULL_VERSION=" #$version)
 | 
						|
              (string-append "-DCMAKE_INSTALL_PREFIX=" #$output)
 | 
						|
              (string-append "-DCMAKE_INSTALL_BINDIR=" #$output "/bin")
 | 
						|
              (string-append "-DCMAKE_INSTALL_DATAROOTDIR=" #$output "/share")
 | 
						|
              (string-append "-DCMAKE_INSTALL_LIBDIR=" #$output "/lib")
 | 
						|
              "-DENABLE_UPDATE_CHECK=NO"
 | 
						|
              "-DENABLE_DAEMON=YES"
 | 
						|
              "-DENABLE_CONSOLE_UI=YES")
 | 
						|
      #:phases
 | 
						|
      #~(modify-phases %standard-phases
 | 
						|
          (add-after 'unpack 'pre-configure
 | 
						|
            (lambda _
 | 
						|
              (make-file-writable "linphone-app/linphoneqt_version.cmake")
 | 
						|
              (substitute* "linphone-app/linphoneqt_version.cmake"
 | 
						|
                (("\\$\\{GUIX-SET-VERSION\\}") #$version))))
 | 
						|
          (add-before 'install 'pre-install
 | 
						|
            (lambda _
 | 
						|
              (mkdir-p (string-append #$output "/share/linphone"))
 | 
						|
              (symlink (string-append #$(this-package-input "liblinphone")
 | 
						|
                                      "/share/sounds")
 | 
						|
                       (string-append #$output
 | 
						|
                                      "/share/sounds"))))
 | 
						|
          (add-after 'install 'post-install
 | 
						|
            (lambda _
 | 
						|
              (let* ((liblinphone #$(this-package-input "liblinphone"))
 | 
						|
                     (grammar-dest (string-append #$output "/share/belr/grammars")))
 | 
						|
                ;; Remove unnecessary Qt configuration file.
 | 
						|
                (delete-file (string-append #$output "/bin/qt.conf"))
 | 
						|
                ;; Not using the FHS exposes an issue where the client
 | 
						|
                ;; refers to its own directories, which lacks files
 | 
						|
                ;; installed by the dependencies.
 | 
						|
                (for-each
 | 
						|
                 (lambda (file)
 | 
						|
                   (symlink file
 | 
						|
                            (string-append #$output "/lib/" (basename file))))
 | 
						|
                 (find-files (string-append liblinphone "/lib")))
 | 
						|
                (symlink (string-append liblinphone "/share/linphone/rootca.pem")
 | 
						|
                         (string-append #$output "/share/linphone/rootca.pem"))
 | 
						|
                (mkdir-p (dirname grammar-dest))
 | 
						|
                (symlink (string-append liblinphone "/share/belr/grammars")
 | 
						|
                         grammar-dest)))))))
 | 
						|
    (native-inputs
 | 
						|
     (list pkg-config qttools-5))
 | 
						|
    (inputs
 | 
						|
     (list bctoolbox
 | 
						|
           belcard
 | 
						|
           belr
 | 
						|
           liblinphone
 | 
						|
           mediastreamer2
 | 
						|
           ortp
 | 
						|
           qtbase-5
 | 
						|
           qtdeclarative-5
 | 
						|
           qtgraphicaleffects
 | 
						|
           qtquickcontrols-5
 | 
						|
           qtquickcontrols2-5
 | 
						|
           qtsvg-5))
 | 
						|
    (synopsis "Desktop client for the Linphone SIP softphone")
 | 
						|
    (description "Linphone is a SIP softphone for voice and video over IP calling
 | 
						|
(VoIP) and instant messaging.  Amongst its features are:
 | 
						|
@itemize
 | 
						|
@item High Definition (HD) audio and video calls
 | 
						|
@item Multiple call management (pause and resume)
 | 
						|
@item Call transfer
 | 
						|
@item Audio conferencing (merge calls into a conference call)
 | 
						|
@item Call recording and replay (audio only)
 | 
						|
@item Instant Messaging with message delivery status (IMDN)
 | 
						|
@item Picture and file sharing
 | 
						|
@item Echo cancellation
 | 
						|
@item Secure user authentication using TLS client certificates
 | 
						|
@item SRTP, zRTP and SRTP-DTLS voice and video encryption
 | 
						|
@item Telephone tone (DTMF) support using SIP INFO or RFC 4733
 | 
						|
@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://linphone.org/technical-corner/linphone")
 | 
						|
    (license license:gpl3+)))
 | 
						|
 | 
						|
(define-public msopenh264
 | 
						|
  (let ((commit "88697cc95140017760d6da408cb0efdc5e86e40a")
 | 
						|
        (revision "0"))
 | 
						|
    (package
 | 
						|
      (name "msopenh264")
 | 
						|
      (version (git-version "1.2.1" revision commit))
 | 
						|
      (source
 | 
						|
       (origin
 | 
						|
         (method git-fetch)
 | 
						|
         (uri (git-reference
 | 
						|
               (url "https://gitlab.linphone.org/BC/public/msopenh264.git")
 | 
						|
               (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
 | 
						|
       (list bctoolbox mediastreamer2 openh264 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+))))
 | 
						|
 | 
						|
(define-public mssilk
 | 
						|
  (let ((commit "dd0f31ee795faa7ea89e601b072dae4cd1df7e3f")
 | 
						|
        (revision "0"))
 | 
						|
    (package
 | 
						|
      (name "mssilk")
 | 
						|
      (version (git-version "1.1.1" revision commit))
 | 
						|
      (source
 | 
						|
       (origin
 | 
						|
         (method git-fetch)
 | 
						|
         (uri (git-reference
 | 
						|
               (url "https://gitlab.linphone.org/BC/public/mssilk.git")
 | 
						|
               (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
 | 
						|
       (list bctoolbox mediastreamer2 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+))))
 | 
						|
 | 
						|
(define-public mswebrtc
 | 
						|
  (let ((commit "946ca706733f36a6b4923f04e569531125462d1d")
 | 
						|
        (revision "0"))
 | 
						|
    (package
 | 
						|
      (name "mswebrtc")
 | 
						|
      (version (git-version "1.1.1" revision commit))
 | 
						|
      (source
 | 
						|
       (origin
 | 
						|
         (method git-fetch)
 | 
						|
         (uri (git-reference
 | 
						|
               (url "https://gitlab.linphone.org/BC/public/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
 | 
						|
       (list bctoolbox mediastreamer2 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+))))
 | 
						|
 | 
						|
(define-public msamr
 | 
						|
  (let ((commit "5ab5c098299107048dfcbfc741f7392faef167bd")
 | 
						|
        (revision "0"))
 | 
						|
    (package
 | 
						|
      (name "msamr")
 | 
						|
      (version (git-version "1.1.3" revision commit))
 | 
						|
      (source
 | 
						|
       (origin
 | 
						|
         (method git-fetch)
 | 
						|
         (uri (git-reference
 | 
						|
               (url "https://gitlab.linphone.org/BC/public/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+))))
 |