summaryrefslogtreecommitdiff
path: root/gnu/packages/jami.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/jami.scm')
-rw-r--r--gnu/packages/jami.scm235
1 files changed, 86 insertions, 149 deletions
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index b8210bcc1e..95c0052841 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -51,7 +51,9 @@
#:use-module (gnu packages upnp)
#:use-module (gnu packages version-control)
#:use-module (gnu packages video)
+ #:use-module (gnu packages vulkan)
#:use-module (gnu packages webkit)
+ #:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph)
#:use-module (gnu packages xorg)
#:use-module (gnu packages)
@@ -64,7 +66,7 @@
#:use-module (guix packages)
#:use-module (guix utils))
-(define %jami-version "20211223.2.37be4c3")
+(define %jami-version "20220726.1515.da8d1da")
(define %jami-sources
;; Return an origin object of the tarball release sources archive of the
@@ -85,14 +87,11 @@
(for-each delete-file-recursively '("client-android"
"client-ios"
"client-macosx"
- "client-uwp"))))
- (patches (search-patches "jami-libclient-audio-managers.patch"
- "jami-fix-crash-on-quit.patch"
- "jami-images-loading.patch"
- "jami-memory-usage.patch"))
+ "plugins"))))
(sha256
(base32
- "12h4a0nj3gh05w64gkywrrb64agrhn6y3q4b9cqnhvr1vdkzlj0h"))))
+ "1zx0i9aw8jsba3bjc5r4pkkybm8c0lyz420ciq89vsswd48gfdhg"))
+ (patches (search-patches "jami-fix-esc-bug.patch"))))
;; Jami maintains a set of patches for some key dependencies (currently
;; pjproject and ffmpeg) of Jami that haven't yet been integrated upstream.
@@ -104,7 +103,7 @@
(invoke "tar" "-xvf" #$%jami-sources
"-C" patches-directory
"--strip-components=5"
- (string-append "ring-project/daemon/contrib/src/"
+ (string-append "jami-project/daemon/contrib/src/"
dep-name))
(for-each
(lambda (file)
@@ -178,6 +177,8 @@
"--disable-muxers"
"--enable-muxer=rtp"
"--enable-muxer=g722"
+ "--enable-muxer=g726"
+ "--enable-muxer=g726le"
"--enable-muxer=h263"
"--enable-muxer=h264"
"--enable-muxer=hevc"
@@ -202,6 +203,9 @@
"--enable-demuxer=wav"
"--enable-demuxer=ac3"
"--enable-demuxer=g722"
+ "--enable-demuxer=g723_1"
+ "--enable-demuxer=g726"
+ "--enable-demuxer=g726le"
"--enable-demuxer=pcm_mulaw"
"--enable-demuxer=pcm_alaw"
"--enable-demuxer=pcm_s16be"
@@ -222,6 +226,13 @@
;; Encoders/decoders.
"--enable-encoder=adpcm_g722"
"--enable-decoder=adpcm_g722"
+ "--enable-encoder=adpcm_g726"
+ "--enable-decoder=adpcm_g726"
+ "--enable-encoder=adpcm_g726le"
+ "--enable-decoder=adpcm_g726le"
+ "--enable-decoder=g729"
+ "--enable-encoder=g723_1"
+ "--enable-decoder=g723_1"
"--enable-encoder=rawvideo"
"--enable-decoder=rawvideo"
"--enable-encoder=libx264"
@@ -387,7 +398,7 @@
"change-RTCP-ratio"
"rtp_ext_abs_send_time"
"libopusdec-enable-FEC"
- "libopusenc-enable-FEC"
+ "libopusenc-reload-packet-loss-at-encode"
"screen-sharing-x11-fix"))))))))))
(define-public libjami
@@ -399,18 +410,21 @@
(build-system gnu-build-system)
(arguments
(list
- ;; The test suite fails to link when building libjami as a shared library:
- ;; "testAccount_factory.cpp:(.text+0xc52): undefined reference to
- ;; `jami::AccountFactory::AccountFactory()'.
+ ;; The test suite fails to link when building libjami as a shared
+ ;; library: "sip_account/sip_empty_offer.cpp:228:1: error: no
+ ;; declaration matches ‘void
+ ;; jami::test::SipEmptyOfferTest::onCallStateChange(const string&, const
+ ;; string&, jami::test::CallData&)’".
#:tests? #f
;; The agent links the daemon binary with libguile, which enables the
;; execution of test plans described in Scheme. It may be useful in
- ;; user scripts too, until more generalized Scheme bindings are made
- ;; (see: test/agent/README.md).
- ;; FIXME: Fails to link when building libjami as a shared library:
- ;; bindings.cpp:(.text+0x24): undefined reference to `jami::Logger::log
- ;; [...].
- #:configure-flags #~(list "--disable-agent" "--enable-debug")
+ ;; user scripts too, until more general purpose Scheme bindings are made
+ ;; available (see: test/agent/README.md).
+ #:configure-flags #~(list "--enable-agent"
+ "--enable-debug"
+ ;; Disable static libraries to avoid
+ ;; installing a 98 MiB archive.
+ "--disable-static")
#:make-flags #~(list "V=1") ;build verbosely
#:phases
#~(modify-phases %standard-phases
@@ -461,157 +475,76 @@ protocols, as well as decentralized calling using P2P-DHT.")
(define-public libring
(deprecated-package "libring" libjami))
-;;; Note: this package will eventually be absorbed into jami itself (the Qt
-;;; client).
-(define-public jami-libclient
+(define-public jami
(package
- (name "jami-libclient")
+ (name "jami")
(version %jami-version)
(source %jami-sources)
- (build-system cmake-build-system)
+ (build-system qt-build-system)
(outputs '("out" "debug"))
(arguments
(list
- #:tests? #f ;no test suite
+ #:qtbase qtbase
+ #:tests? #f ;see comment below
#:configure-flags
- #~(list (string-append "-DRING_XML_INTERFACES_DIR="
+ ;; The test suite fails to build with:
+ ;; "../../../client-qt/src/app/utils.h:29:10: fatal error: QLabel: No
+ ;; such file or directory".
+ #~(list "-DENABLE_TESTS=OFF"
+ "-DWITH_WEBENGINE=OFF" ;reduce transitive closure size by 450 MiB
+ ;; Use libwrap to link directly to libjami instead of
+ ;; communicating via D-Bus to jamid, the Jami daemon.
+ "-DENABLE_LIBWRAP=ON"
+ (string-append "-DLIBJAMI_XML_INTERFACES_DIR="
#$(this-package-input "libjami")
"/share/dbus-1/interfaces")
- (string-append "-DRING_BUILD_DIR="
- #$(this-package-input "libjami")
- "/include")
- ;; Call to the libraries directly instead of going through DBus
- ;; to avoid issues (see: https://issues.guix.gnu.org/48538).
- "-DENABLE_LIBWRAP=true")
+ (string-append "-DLIBJAMI_INCLUDE_DIR="
+ #$(this-package-input "libjami") "/include/jami"))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'change-directory/maybe
(lambda _
;; Allow building from the tarball or a git checkout.
- (false-if-exception (chdir "lrc")))))))
- (inputs
- (list libjami network-manager))
- (propagated-inputs
- (list qtbase-5)) ;Qt is included in several installed headers
- (synopsis "Jami client library")
- (description "This package provides a library common to all Jami clients.
-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.")
- (home-page "https://jami.net")
- (license license:gpl3+)))
-
-;;; Remove when 2023 comes.
-(define-public libringclient
- (deprecated-package "libringclient" jami-libclient))
-
-(define-public jami-gnome
- (package
- (name "jami-gnome")
- (version %jami-version)
- (source %jami-sources)
- (outputs '("out" "debug"))
- (build-system cmake-build-system)
- (arguments
- `(#: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/maybe
- (lambda _
- ;; Allow building from the tarball or a git checkout.
- (false-if-exception (chdir "client-gnome"))))
- (add-after 'change-directory/maybe 'fix-webkit-detection
- (lambda _
- (substitute* "CMakeLists.txt"
- (("WEBKIT webkit2gtk-4.0")
- "WEBKIT webkit2gtk-4.1"))))
- (add-after 'change-directory/maybe 'fix-version-string
- (lambda _
- (substitute* "CMakeLists.txt"
- (("^# Set VERSION.*" anchor)
- (string-append anchor
- "set(PROJECT_VERSION \"" ,version "\")\n")))))
- (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)))))
- (inputs
- (list clutter
- clutter-gtk
- gtk+
- jami-libclient
- libcanberra
- libappindicator
- libnotify
- network-manager
- qrencode
- sqlite
- webkitgtk))
- (native-inputs
- (list pkg-config
- gettext-minimal
- `(,glib "bin"))) ;for glib-compile-resources
- (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
-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.")
- (home-page "https://jami.net")
- (license license:gpl3+)))
-
-(define-public jami
- (package
- (name "jami")
- (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/maybe
- (lambda _
- ;; Allow building from the tarball or a git checkout.
- (false-if-exception (chdir "client-qt"))))
- (add-after 'change-directory/maybe 'fix-version-string
- (lambda _
- (substitute* "src/version.h"
- (("VERSION_STRING")
- "BUILD_DATE") ;to avoid a redefinition error
- (("// clang-format on.*" anchor)
- (string-append "const char VERSION_STRING[] = \""
- ,version "\";\n"
- anchor)))))
- (add-after 'change-directory/maybe 'use-desktop-opengl
- ;; TODO: Remove after next release; this is no longer specified in
- ;; the source following the update to Qt 6.
- (lambda _
- (substitute* "src/main.cpp"
- (("Qt::AA_UseOpenGLES")
- "Qt::AA_UseDesktopOpenGL")))))))
+ (false-if-exception (chdir "client-qt"))))
+ (add-after 'change-directory/maybe 'fix-version-string
+ (lambda _
+ (substitute* "src/app/version.h"
+ (("VERSION_STRING")
+ "BUILD_DATE") ;to avoid a redefinition error
+ (("// clang-format on.*" anchor)
+ (string-append "const char VERSION_STRING[] = \""
+ #$version "\";\n"
+ anchor)))))
+ (add-after 'change-directory/maybe 'patch-source
+ (lambda _
+ (substitute* "src/libclient/CMakeLists.txt"
+ ;; Fix submitted upstream (see:
+ ;; https://review.jami.net/c/jami-client-qt/+/21830).
+ (("target_link_libraries\\(\\$\\{LIBCLIENT_NAME} qtwrapper.*" all)
+ (string-append
+ all " target_link_libraries(${LIBCLIENT_NAME} avutil)\n"))))))))
(native-inputs
- (list pkg-config python qttools doxygen graphviz))
+ (list googletest
+ pkg-config
+ python
+ qttools
+ doxygen
+ graphviz
+ vulkan-headers))
(inputs
- (list jami-libclient
+ (list ffmpeg-jami
+ libjami
libnotify
+ libxkbcommon
network-manager
qrencode
- qtsvg
- qtwebengine
- qtwebchannel
- qtmultimedia
+ qt5compat
qtdeclarative
- qtgraphicaleffects
- qtquickcontrols
- qtquickcontrols2))
+ qtmultimedia
+ qtnetworkauth
+ qtpositioning
+ qtsvg
+ vulkan-loader))
(home-page "https://jami.net")
(synopsis "Qt Jami client")
(description "This package provides the Jami Qt client. Jami is a secure
@@ -622,5 +555,9 @@ P2P-DHT.")
(license license:gpl3+)))
;;; Remove when 2023 comes.
+(define-public jami-gnome
+ (deprecated-package "jami-gnome" jami))
+
+;;; Remove when 2023 comes.
(define-public jami-qt
(deprecated-package "jami-qt" jami))