#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
+ #:use-module (gnu packages graphviz)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libcanberra)
#:use-module (gnu packages linux)
#:use-module (gnu packages)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system qt)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (guix utils))
-(define %jami-version "20210326.1.cfba013")
+(define %jami-version "20210606.1.e2f9490")
-(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."
+(define %jami-sources
+ ;; Return an origin object of the tarball release sources archive of the
+ ;; Jami project.
(origin
(method url-fetch)
(uri (string-append "https://dl.jami.net/release/tarballs/jami_"
`(begin
;; Delete multiple MiBs 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"))
- ;; Remove code from unused Jami clients.
+ ;; by Jami.
+ (delete-file-recursively "daemon/contrib/tarballs")
+ ;; Remove the git submodule directories of unused Jami clients.
(for-each delete-file-recursively '("client-android"
"client-electron"
"client-ios"
"client-uwp"))))
(sha256
(base32
- "1h0avma8bdzyznkz39crjyv2888bii4f49md15jg7970dyp5pdyz"))))
+ "1vpxv2dk3l9cahv6mxd2754pxs9mzrid5bgwvl6k1byzpq8y4smr"))))
-(define %sfl-patches (jami-source #:keep-contrib-patches? #t))
-
-(define %jami-sources (jami-source))
-
-;; Savoir-faire Linux maintains a set of patches for some key dependencies
-;; (currently pjproject and ffmpeg) of Jami that haven't yet been integrated
-;; upstream. This procedure simplifies the process of applying these patches.x
-(define jami-apply-dependency-patches
+;; Jami maintains a set of patches for some key dependencies (currently
+;; pjproject and ffmpeg) of Jami that haven't yet been integrated upstream.
+;; This procedure simplifies the process of applying them.
+(define jami-apply-custom-patches
'(lambda* (#:key inputs dep-name patches)
- (let ((patches-directory "sfl-patches"))
+ (let ((patches-directory "patches"))
(mkdir-p patches-directory)
- (invoke "tar" "-xvf" (assoc-ref inputs "sfl-patches")
+ (invoke "tar" "-xvf" (assoc-ref inputs "jami-sources")
"-C" patches-directory
"--strip-components=5"
(string-append "ring-project/daemon/contrib/src/"
"pjproject-correct-the-cflags-field.patch"
"pjproject-fix-pkg-config-ldflags.patch"))))
(native-inputs
- `(("sfl-patches" ,%sfl-patches)
+ `(("jami-sources" ,%jami-sources)
,@(package-native-inputs pjproject)))
(arguments
(substitute-keyword-arguments (package-arguments pjproject)
`(modify-phases ,phases
(add-after 'make-source-files-writable 'apply-patches
(lambda* (#:key inputs #:allow-other-keys)
- (,jami-apply-dependency-patches
+ (,jami-apply-custom-patches
#:inputs inputs
#:dep-name "pjproject"
#:patches
"0015-update-local-preference-for-peer-reflexive-candidate"
"0016-use-addrinfo-instead-CFHOST"
"0017-CVE-2020-15260"
- "0018-CVE-2021-21375"))))))))))
+ "0018-CVE-2021-21375"
+ "0019-ignore-down-interfaces"))))))))))
;; 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
(package/inherit ffmpeg
(name "ffmpeg-jami")
(native-inputs
- `(("sfl-patches" ,%sfl-patches)
+ `(("jami-sources" ,%jami-sources)
("libiconv" ,libiconv)
,@(package-native-inputs ffmpeg)))
(supported-systems '("x86_64-linux" "i686-linux"
(for-each make-file-writable (find-files "."))))
(add-after 'unpack 'apply-patches
(lambda* (#:key inputs #:allow-other-keys)
- (let ((jami-apply-dependency-patches
- ,jami-apply-dependency-patches))
- ;; These patches come from:
- ;; "ring-project/daemon/contrib/src/ffmpeg/rules.mak".
- (jami-apply-dependency-patches
- #:inputs inputs
- #:dep-name "ffmpeg"
- #:patches
- '("remove-mjpeg-log"
- "change-RTCP-ratio"
- "rtp_ext_abs_send_time"
- "libopusdec-enable-FEC"
- "libopusenc-enable-FEC"))))))))))))
+ ;; These patches come from:
+ ;; "ring-project/daemon/contrib/src/ffmpeg/rules.mak".
+ (,jami-apply-custom-patches
+ #:inputs inputs #:dep-name "ffmpeg"
+ #:patches '("remove-mjpeg-log"
+ "change-RTCP-ratio"
+ "rtp_ext_abs_send_time"
+ "libopusdec-enable-FEC"
+ "libopusenc-enable-FEC")))))))))))
(define-public libring
(package
(version %jami-version)
(source %jami-sources)
(build-system gnu-build-system)
+ (outputs '("out" "debug"))
(inputs
`(("alsa-lib" ,alsa-lib)
("asio" ,asio)
(version %jami-version)
(source %jami-sources)
(build-system cmake-build-system)
+ (outputs '("out" "debug"))
(inputs
`(("libring" ,libring)
("network-manager" ,network-manager)))
(propagated-inputs
- `(("qtbase" ,qtbase))) ; Qt is included in several installed headers.
+ `(("qtbase" ,qtbase-5))) ; Qt is included in several installed headers.
(arguments
`(#:tests? #f ; There is no testsuite.
#:configure-flags
;; its configuration under /etc rather than /usr/share/dbus-1,
;; which is perhaps the reason the auto-launching of dring
;; doesn't work on foreign distributions.
- "-DENABLE_LIBWRAP=true"))
+
+ ;; FIXME: Disabled for now, as it causes a segfault when
+ ;; attempting video calls (see:
+ ;; https://git.jami.net/savoirfairelinux/ring-lrc/-/issues/466).
+ "-DENABLE_LIBWRAP=false"))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'change-directory
(version %jami-version)
(source %jami-sources)
(build-system cmake-build-system)
+ (outputs '("out" "debug"))
(inputs
`(("clutter" ,clutter)
("clutter-gtk" ,clutter-gtk)
; automatically started by DBus.
("adwaita-icon-theme" ,adwaita-icon-theme)))
(arguments
- `(#:tests? #f ; There is no testsuite.
+ `(#:tests? #f ;no test suite
+ #:imported-modules (,@%cmake-build-system-modules
+ (guix build glib-or-gtk-build-system))
+ #:modules ((guix build cmake-build-system)
+ ((guix build glib-or-gtk-build-system) #:prefix gtk:)
+ (guix build utils))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'change-directory
(lambda _
- (chdir "client-gnome"))))))
+ (chdir "client-gnome")))
+ (add-after 'install 'glib-or-gtk-compile-schemas
+ (assoc-ref gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+ (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+ (assoc-ref gtk:%standard-phases 'glib-or-gtk-wrap)))))
(synopsis "Jami client for GNOME")
(description "This package provides a Jami client for the GNOME desktop.
Jami is a secure and distributed voice, video and chat communication platform
;;; main 'jami' client.
(define-public jami
(deprecated-package "jami" jami-gnome))
+
+(define-public jami-qt
+ (package
+ (name "jami-qt") ;to be renamed 'jami' at some point
+ (version %jami-version)
+ (source %jami-sources)
+ (build-system qt-build-system)
+ (outputs '("out" "debug"))
+ (arguments
+ `(#:tests? #f ;no test suite
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'change-directory
+ (lambda _
+ (chdir "client-qt"))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("qttools" ,qttools)
+ ("doxygen" ,doxygen)
+ ("graphviz" ,graphviz)))
+ (inputs
+ `(("libringclient" ,libringclient)
+ ("network-manager" ,network-manager)
+ ("qrencode" ,qrencode)
+ ("qtsvg" ,qtsvg)
+ ("qtwebengine" ,qtwebengine)
+ ("qtwebchannel" ,qtwebchannel)
+ ("qtmultimedia" ,qtmultimedia)
+ ("qtdeclarative" ,qtdeclarative)
+ ("qtgraphicaleffects" ,qtgraphicaleffects)
+ ("qtquickcontrols" ,qtquickcontrols)
+ ("qtquickcontrols2" ,qtquickcontrols2)))
+ (propagated-inputs
+ `(("libring" ,libring))) ;for dring
+ (home-page "https://jami.net")
+ (synopsis "Qt Jami client")
+ (description "This package provides the Jami Qt client. Jami is a secure
+and distributed voice, video and chat communication platform that requires no
+centralized server and leaves the power of privacy in the hands of the user.
+It supports the SIP and IAX protocols, as well as decentralized calling using
+P2P-DHT.")
+ (license license:gpl3+)))