12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055 |
- ;;; 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+))))
|