mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-11 21:59:08 -05:00
gnu: Add pjproject-jami.
* gnu/packages/telephony.scm (pjproject-jami): New variable.
This commit is contained in:
parent
bd4b6f4164
commit
915829e662
1 changed files with 103 additions and 0 deletions
|
@ -625,3 +625,106 @@ (define-public pjproject
|
||||||
(description "PJProject provides an implementation of the Session
|
(description "PJProject provides an implementation of the Session
|
||||||
Initiation Protocol (SIP) and a multimedia framework.")
|
Initiation Protocol (SIP) and a multimedia framework.")
|
||||||
(license license:gpl2+)))
|
(license license:gpl2+)))
|
||||||
|
|
||||||
|
(define %jami-version "20190319.4.a16a99f")
|
||||||
|
|
||||||
|
(define* (jami-source #:key without-daemon)
|
||||||
|
(origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (string-append "http://dl.jami.net/ring-release/tarballs/ring_"
|
||||||
|
%jami-version
|
||||||
|
".tar.gz"))
|
||||||
|
(modules '((guix build utils)))
|
||||||
|
(snippet
|
||||||
|
(if without-daemon
|
||||||
|
'(begin
|
||||||
|
(delete-file-recursively "daemon/contrib"))
|
||||||
|
#f))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"1c6n6sm7skw83v25g33g4jzbragz9j4przbzaz7asxw54jy33dwl"))))
|
||||||
|
|
||||||
|
(define-public pjproject-jami
|
||||||
|
(package
|
||||||
|
(inherit pjproject)
|
||||||
|
(name "pjproject-jami")
|
||||||
|
(native-inputs
|
||||||
|
`(("savoir-faire-linux-patches" ,(jami-source))
|
||||||
|
,@(package-native-inputs pjproject)))
|
||||||
|
(arguments
|
||||||
|
`(#:tests? #f
|
||||||
|
;; See ring-project/daemon/contrib/src/pjproject/rules.mak.
|
||||||
|
#:configure-flags
|
||||||
|
(list "--disable-oss"
|
||||||
|
"--disable-sound"
|
||||||
|
"--disable-video"
|
||||||
|
"--enable-ext-sound"
|
||||||
|
"--disable-speex-aec"
|
||||||
|
"--disable-g711-codec"
|
||||||
|
"--disable-l16-codec"
|
||||||
|
"--disable-gsm-codec"
|
||||||
|
"--disable-g722-codec"
|
||||||
|
"--disable-g7221-codec"
|
||||||
|
"--disable-speex-codec"
|
||||||
|
"--disable-ilbc-codec"
|
||||||
|
"--disable-opencore-amr"
|
||||||
|
"--disable-silk"
|
||||||
|
"--disable-sdl"
|
||||||
|
"--disable-ffmpeg"
|
||||||
|
"--disable-v4l2"
|
||||||
|
"--disable-openh264"
|
||||||
|
"--disable-resample"
|
||||||
|
"--disable-libwebrtc"
|
||||||
|
;; "-fPIC" is required for libring. Bug?
|
||||||
|
"CFLAGS=-fPIC -DPJ_ENABLE_EXTRA_CHECK=1 -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=1024 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000 -DPJ_ICE_ST_MAX_CAND=32"
|
||||||
|
"CXXFLAGS=-fPIC -DPJ_ENABLE_EXTRA_CHECK=1 -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=1024 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000 -DPJ_ICE_ST_MAX_CAND=32"
|
||||||
|
;; Now deviating from the rules.mak file.
|
||||||
|
"--enable-ssl=gnutls"
|
||||||
|
"--with-external-srtp")
|
||||||
|
#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(add-after 'unpack 'apply-patches
|
||||||
|
(lambda* (#:key inputs #:allow-other-keys)
|
||||||
|
(let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches")
|
||||||
|
;; Comes from
|
||||||
|
;; "ring-project/daemon/contrib/src/pjproject/rules.mak".
|
||||||
|
;; WARNING: These amount for huge changes in pjproject.
|
||||||
|
;; Particularly, they add support for GnuTLS.
|
||||||
|
(savoir-faire-linux-patches
|
||||||
|
'("gnutls"
|
||||||
|
"rfc2466"
|
||||||
|
"ipv6"
|
||||||
|
"ice_config"
|
||||||
|
"multiple_listeners"
|
||||||
|
"pj_ice_sess"
|
||||||
|
"fix_turn_fallback"
|
||||||
|
"fix_ioqueue_ipv6_sendto"
|
||||||
|
"add_dtls_transport"
|
||||||
|
"rfc6062")))
|
||||||
|
(mkdir-p savoir-faire-linux-patches-directory)
|
||||||
|
(invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches")
|
||||||
|
"-C" savoir-faire-linux-patches-directory "--strip-components=5" "ring-project/daemon/contrib/src/pjproject")
|
||||||
|
(for-each
|
||||||
|
(lambda (file)
|
||||||
|
(invoke "patch" "--force" "-p1" "-i"
|
||||||
|
(string-append savoir-faire-linux-patches-directory "/"
|
||||||
|
file ".patch")))
|
||||||
|
savoir-faire-linux-patches))
|
||||||
|
#t))
|
||||||
|
;; TODO: We could use substitute-keyword-arguments instead of
|
||||||
|
;; repeating the phases from pjproject, but somehow it does
|
||||||
|
;; not work.
|
||||||
|
(add-before 'build 'build-dep
|
||||||
|
(lambda _ (invoke "make" "dep")))
|
||||||
|
(add-before 'patch-source-shebangs 'autoconf
|
||||||
|
(lambda _
|
||||||
|
(invoke "autoconf" "-v" "-f" "-i" "-o"
|
||||||
|
"aconfigure" "aconfigure.ac")))
|
||||||
|
(add-before 'autoconf 'disable-some-tests
|
||||||
|
;; Three of the six test programs fail due to missing network
|
||||||
|
;; access.
|
||||||
|
(lambda _
|
||||||
|
(substitute* "Makefile"
|
||||||
|
(("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test")
|
||||||
|
"selftest: pjlib-test pjlib-util-test pjmedia-test"))
|
||||||
|
#t)))))))
|
||||||
|
|
Loading…
Reference in a new issue