aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/jami.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/jami.scm')
-rw-r--r--gnu/packages/jami.scm124
1 files changed, 77 insertions, 47 deletions
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 4d1b3a3db2..0987ac5e5e 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -2,7 +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, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -38,6 +38,7 @@
#:use-module (gnu packages guile)
#:use-module (gnu packages libcanberra)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages markup)
#:use-module (gnu packages networking)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
@@ -54,6 +55,7 @@
#:use-module (gnu packages version-control)
#:use-module (gnu packages video)
#:use-module (gnu packages vulkan)
+ #:use-module (gnu packages web)
#:use-module (gnu packages webkit)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xiph)
@@ -68,32 +70,33 @@
#:use-module (guix packages)
#:use-module (guix utils))
-(define %jami-version "20230323.0")
+;;; We use nightlies as stable versions are a bit far in-between, and often
+;;; have bugs anyway. When the nightly version change, do not forget to
+;;; retrieve the associated daemon submodule commit and update it in
+;;; %jami-daemon-commit variable below.
-(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-"
- %jami-version ".tar.gz"))
- (modules '((guix build utils)))
- (snippet
- ;; Delete multiple MiBs of bundled tarballs. The daemon/contrib
- ;; directory contains the custom patches for pjproject and other
- ;; libraries used by Jami.
- '(delete-file-recursively "daemon/contrib/tarballs"))
- (sha256
- (base32
- "0vjsjr37cb87j9hqbmipyxn4877k1wn3l0vzca3l3ldgknglz7v2"))
- (patches (search-patches "jami-disable-integration-tests.patch"
- "jami-libjami-headers-search.patch"))))
+;;; When updating Jami, make sure that the patches used for ffmpeg-jami are up
+;;; to date with those listed in
+;;; <https://review.jami.net/plugins/gitiles/jami-daemon/+/refs/heads/master/contrib/src/ffmpeg/rules.mak>.
+(define %jami-nightly-version "20231222.2")
+(define %jami-daemon-commit "317b7317dcda4afb733ddb9bd5b450d4635941ae")
(define-public libjami
(package
(name "libjami")
- (version %jami-version)
- (source %jami-sources)
+ (version %jami-nightly-version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://review.jami.net/jami-daemon")
+ (commit %jami-daemon-commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "16qx50xz2mkw894irjsvql82iw7wpc5xncxpvw1nqd2sxhgfiq0i"))
+ (patches (search-patches
+ "libjami-ac-config-files.patch"
+ "jami-disable-integration-tests.patch"))))
(outputs '("out" "bin" "debug")) ;"bin' contains jamid
(build-system gnu-build-system)
(arguments
@@ -103,13 +106,25 @@
;; user scripts too, until more general purpose Scheme bindings are made
;; available (see: test/agent/README.md).
#:configure-flags #~(list "--enable-agent" "--enable-debug")
- #:make-flags #~(list "V=1") ;build verbosely
+ #:make-flags
+ #~(list
+ "V=1" ;build verbosely
+ ;; The 'ut_media_player' is known to fail (see:
+ ;; https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/935).
+ "XFAIL_TESTS=ut_media_player")
#: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 "daemon"))))
+ (add-after 'change-directory/maybe 'extend-scheduler-test-timeout
+ (lambda _
+ ;; The ut_scheduler unit test may fail on slower machines (see:
+ ;; https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/939).
+ (substitute* "test/unitTest/scheduler.cpp"
+ (("std::chrono::seconds\\(3)")
+ "std::chrono::seconds(30)"))))
(add-after 'install 'delete-static-libraries
;; Remove 100+ MiB of static libraries. "--disable-static" cannot
;; be used as the test suite requires access to private symbols
@@ -134,14 +149,14 @@
(inputs
(list alsa-lib
asio
- dbus-c++
+ dhtnet
eudev
ffmpeg-jami
guile-3.0
jack-1
jsoncpp
libarchive
- libgit2
+ libgit2-1.6
libnatpmp
libsecp256k1
libupnp
@@ -149,6 +164,7 @@
openssl
pjproject-jami
pulseaudio
+ sdbus-c++
speex
speexdsp
webrtc-audio-processing
@@ -214,15 +230,29 @@ QSortFilterProxyModel conveniently exposed for QML.")
(define-public jami
(package
(name "jami")
- (version %jami-version)
- (source %jami-sources)
+ (version %jami-nightly-version)
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://review.jami.net/jami-client-qt")
+ (commit (string-append "nightly/" %jami-nightly-version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0ypbbyqmq6x9zq4sr550k38v8pg7yq685bmwqmigqzhqgfazcg97"))
+ (patches (search-patches
+ "jami-libjami-headers-search.patch"
+ "jami-qml-tests-discovery.patch"
+ "jami-skip-tests-requiring-internet.patch"
+ "jami-unbundle-dependencies.patch"))))
(build-system qt-build-system)
(outputs '("out" "debug"))
(arguments
(list
#:qtbase qtbase
#:configure-flags
- #~(list "-DENABLE_TESTS=ON"
+ #~(list "-DWITH_DAEMON_SUBMODULE=OFF"
+ "-DENABLE_TESTS=ON"
;; Disable the webengine since it grows the closure size by
;; about 450 MiB and requires more resources.
"-DWITH_WEBENGINE=OFF"
@@ -231,11 +261,7 @@ QSortFilterProxyModel conveniently exposed for QML.")
"-DENABLE_LIBWRAP=ON")
#: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
+ (add-after 'unpack 'fix-version-string
(lambda _
(substitute* "src/app/version.h"
(("VERSION_STRING")
@@ -244,6 +270,17 @@ QSortFilterProxyModel conveniently exposed for QML.")
(string-append "const char VERSION_STRING[] = \""
#$version "\";\n"
anchor)))))
+ (add-after 'unpack 'copy-3rdparty-source-dependencies
+ (lambda _
+ (copy-recursively #$(package-source sortfilterproxymodel)
+ "3rdparty/SortFilterProxyModel")))
+ (add-before 'configure 'fake-x11-environment
+ (lambda _
+ ;; This works around the lack of configuration for the X11
+ ;; push-to-talk feature, which is auto-detected via the
+ ;; XDG_SESSION_TYPE environment variable (see:
+ ;; https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/1504).
+ (setenv "XDG_SESSION_TYPE" "x11")))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
@@ -252,22 +289,13 @@ QSortFilterProxyModel conveniently exposed for QML.")
;; The tests require a writable HOME.
(setenv "HOME" "/tmp")
- (display "Running unittests...\n")
- (invoke "tests/unittests" "-mutejamid")
+ (display "Running unit tests...\n")
+ (invoke "tests/unit_tests")
- ;; XXX: There are currently multiple failures with the
- ;; functional tests (see:
- ;; https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/883),
- ;; so the code below is disabled for now.
- ;;
+ ;; XXX: The QML test suite fails, exiting with status code 1 (see:
+ ;; https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/883).
;; (display "Running functional tests...\n")
- ;; ;; This is to allow building from the source tarball or
- ;; ;; directly from the git repository.
- ;; (let ((tests-qml (if (file-exists? "../client-qt/tests")
- ;; "../client-qt/tests/qml"
- ;; "../tests/qml")))
- ;; (invoke "tests/qml_tests" "-mutejamid"
- ;; "-input" tests-qml))
+ ;; (invoke "tests/qml_tests")
))))))
(native-inputs
(list googletest
@@ -282,6 +310,7 @@ QSortFilterProxyModel conveniently exposed for QML.")
libnotify
libxcb
libxkbcommon
+ md4c
network-manager
qrencode
qt5compat
@@ -290,6 +319,7 @@ QSortFilterProxyModel conveniently exposed for QML.")
qtnetworkauth
qtpositioning
qtsvg
+ tidy-html ;used by src/app/htmlparser.h
vulkan-loader))
(home-page "https://jami.net")
(synopsis "Qt Jami client")