diff options
Diffstat (limited to 'gnu/packages/jami.scm')
-rw-r--r-- | gnu/packages/jami.scm | 114 |
1 files changed, 35 insertions, 79 deletions
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm index 85a06026ed..c47293b5c1 100644 --- a/gnu/packages/jami.scm +++ b/gnu/packages/jami.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl> +;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -34,7 +35,6 @@ #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) - #:use-module (gnu packages hurd) #:use-module (gnu packages libcanberra) #:use-module (gnu packages linux) #:use-module (gnu packages multiprecision) @@ -65,7 +65,11 @@ (define %jami-version "20200710.1.6bd18d2") -(define* (jami-source #:key without-daemon) +(define* (jami-source #:key keep-contrib-patches?) + "Return an origin object of the tarball release sources archive of Jami. +When KEEP-CONTRIB-PATCHES? is #t, do not completely remove the contrib +subdirectory, which contains patches to be applied to some of the dependencies +of Jami." (origin (method url-fetch) (uri (string-append "https://dl.jami.net/release/tarballs/jami_" @@ -73,15 +77,28 @@ ".tar.gz")) (modules '((guix build utils))) (snippet - (if without-daemon - '(begin + `(begin + ;; Delete over 200 MiB of bundled tarballs. The contrib directory + ;; contains the custom patches for pjproject and other libraries used + ;; by Savoir-faire Linux. + (if ,keep-contrib-patches? + (delete-file-recursively "daemon/contrib/tarballs") (delete-file-recursively "daemon/contrib")) - #f)) + ;; Remove code from unused Jami clients. + (for-each delete-file-recursively '("client-android" + "client-macosx" + "client-uwp" + "client-windows")) + #t)) (sha256 (base32 "0lg61jv39x7kc9lq30by246xb6gcgp1rzj49ak7ff8nqpfzyfvva")))) -;; Savoir-Faire Linux modifies many libraries to add features +(define %sfl-patches (jami-source #:keep-contrib-patches? #t)) + +(define %jami-sources (jami-source)) + +;; Savoir-faire Linux modifies many libraries to add features ;; to Jami. This procedure makes applying patches to a given ;; package easy. (define jami-apply-dependency-patches @@ -105,60 +122,15 @@ (inherit pjproject) (name "pjproject-jami") (native-inputs - `(("sfl-patches" ,(jami-source)) + `(("sfl-patches" ,%sfl-patches) ,@(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" - ;; The following flag is Linux specific. - ,@(if (hurd-triplet? (or (%current-system) - (%current-target-system))) - '() - '("--enable-epoll")) - "--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" - "--with-gnutls" - "--with-external-srtp" - ;; We need -fPIC or else we get the following error when linking - ;; against pjproject-jami: - ;; relocation R_X86_64_32S against `.rodata' can not be used when - ;; making a shared object; - ;; -DNDEBUG is needed to prevent assertion from happening and - ;; stopping the daemon. - "CFLAGS=-fPIC -DNDEBUG" - "CXXFLAGS=-fPIC -DNDEBUG") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'make-git-checkout-writable - (lambda _ - (for-each make-file-writable (find-files ".")) - #t)) - (add-after 'unpack 'apply-patches - (lambda* (#:key inputs #:allow-other-keys) - (let ((jami-apply-dependency-patches ,jami-apply-dependency-patches)) - ;; Comes from - ;; "ring-project/daemon/contrib/src/pjproject/rules.mak". - ;; WARNING: These amount for huge changes in pjproject. - (jami-apply-dependency-patches + (substitute-keyword-arguments (package-arguments pjproject) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-after 'make-source-files-writable 'apply-patches + (lambda* (#:key inputs #:allow-other-keys) + (,jami-apply-dependency-patches #:inputs inputs #:dep-name "pjproject" #:patches @@ -171,27 +143,11 @@ "0007-pj_ice_sess" "0008-fix_ioqueue_ipv6_sendto" "0009-add-config-site" - "0010-fix-pkgconfig" + ;; Note: The base pjproject is already patched with + ;; "0010-fix-pkgconfig". "0011-fix-tcp-death-detection" "0012-fix-turn-shutdown-crash")) - #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))))))) + #t)))))))) ;; The following variables are configure flags used by ffmpeg-jami. They're ;; from the ring-project/daemon/contrib/src/ffmpeg/rules.mak file. We try to @@ -413,7 +369,7 @@ (inherit ffmpeg) (name "ffmpeg-jami") (native-inputs - `(("sfl-patches" ,(jami-source)) + `(("sfl-patches" ,%sfl-patches) ("libiconv" ,libiconv) ,@(package-native-inputs ffmpeg))) (supported-systems '("x86_64-linux" "i686-linux" @@ -448,7 +404,7 @@ (package (name "libring") (version %jami-version) - (source (jami-source #:without-daemon #t)) + (source %jami-sources) (build-system gnu-build-system) (inputs `(("alsa-lib" ,alsa-lib) |