summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2023-08-18 01:11:25 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2024-01-09 22:10:13 -0500
commit8237f4e9970623f4e7d91d49fcfa12b2854ddef6 (patch)
treef5e59b6105d0b21da6ef6b0eb8448f39da80fd22 /gnu/packages
parentd9c9b97e93f21b2ece3f16a050e7c2935b60a03f (diff)
downloadguix-8237f4e9970623f4e7d91d49fcfa12b2854ddef6.tar.gz
gnu: jami: Update to 20231222.2.
* gnu/packages/jami.scm (%jami-version): Rename to...
(%jami-nightly-version): ... this.  Update to 20231222.2.
(%jami-daemon-commit): New variable.
(%jami-sources): Delete variable.
(libjami) Adjust source to use %jami-nightly-version, %jami-daemon-commit.
[source]: Fetch from git.  Apply libjami-ac-config-files.patch.
[arguments] <make-flags>: Skip ut_media_player test.
<phases>: Add extend-scheduler-test-timeout and extend-scheduler-test-timeout
phases.
[inputs]: Replace dbus-c++ with sdbus-c++.
Add dhtnet.  Replace libgit2 with libgit2-1.6.
(jami): Set version to %jami-nightly-version.
[source]: Fetch from git.  Apply new jami-qml-tests-discovery.patch,
jami-skip-tests-requiring-internet.patch and jami-unbundle-dependencies.patch
patches.
[arguments] <configure-flags>: Add -DWITH_DAEMON_SUBMODULE=OFF.
<phases>: Delete change-directory/maybe.
Adjust check phase.  Add fake-x11-environment,
copy-3rdparty-source-dependencies and disable-problematic-tests phases.
[inputs]: Add md4c and tidy-html.
* gnu/packages/patches/jami-qml-tests-discovery.patch: New file.
* gnu/packages/patches/libjami-ac-config-files.patch: Likewise.
* gnu/packages/patches/jami-skip-tests-requiring-internet.patch: Likewise.
* gnu/packages/patches/jami-unbundle-dependencies.patch: Likewise.
* gnu/packages/patches/jami-libjami-headers-search.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): Update accordingly.
* gnu/packages/patches/jami-disable-integration-tests.patch: Adjust patch.

Series-changes: 2
 - Update Jami to latest nightly version (20231222.2)

Change-Id: If30f1178bdfa29c4ea3e54dbb7997e360788adae
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/jami.scm124
-rw-r--r--gnu/packages/patches/jami-disable-integration-tests.patch10
-rw-r--r--gnu/packages/patches/jami-libjami-headers-search.patch5
-rw-r--r--gnu/packages/patches/jami-qml-tests-discovery.patch15
-rw-r--r--gnu/packages/patches/jami-skip-tests-requiring-internet.patch51
-rw-r--r--gnu/packages/patches/jami-unbundle-dependencies.patch71
-rw-r--r--gnu/packages/patches/libjami-ac-config-files.patch52
7 files changed, 276 insertions, 52 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")
diff --git a/gnu/packages/patches/jami-disable-integration-tests.patch b/gnu/packages/patches/jami-disable-integration-tests.patch
index 1efb7d552e..18f13800ac 100644
--- a/gnu/packages/patches/jami-disable-integration-tests.patch
+++ b/gnu/packages/patches/jami-disable-integration-tests.patch
@@ -1,3 +1,5 @@
+This issue is tracked at https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/824.
+
 From 3fd7acc6e5a8c316c366827956d7c06affdc9685 Mon Sep 17 00:00:00 2001
 From: Olivier Dion <olivier.dion@savoirfairelinux.com>
 Date: Fri, 7 Oct 2022 15:20:37 -0400
@@ -17,8 +19,8 @@ With file names adjusted for the source tarball.
 
 diff --git a/configure.ac b/configure.ac
 index 27215d044..aaeef1c1b 100644
---- a/daemon/configure.ac
-+++ b/daemon/configure.ac
+--- a/configure.ac
++++ b/configure.ac
 @@ -40,6 +40,11 @@ AS_IF([test "x$enable_debug" = "xyes"],
    [DAEMONCFLAGS+=" -DNDEBUG=1 -O3"
     DAEMONCXXFLAGS+=" -DNDEBUG=1 -O3 -Wno-deprecated"])
@@ -33,8 +35,8 @@ index 27215d044..aaeef1c1b 100644
      [Build fuzzing tools]))
 diff --git a/test/unitTest/Makefile.am b/test/unitTest/Makefile.am
 index f2b0fd994..ab232ddb7 100644
---- a/daemon/test/unitTest/Makefile.am
-+++ b/daemon/test/unitTest/Makefile.am
+--- a/test/unitTest/Makefile.am
++++ b/test/unitTest/Makefile.am
 @@ -13,30 +13,6 @@ check_PROGRAMS =
  
  ####### Unit Test ########
diff --git a/gnu/packages/patches/jami-libjami-headers-search.patch b/gnu/packages/patches/jami-libjami-headers-search.patch
index 92cc92a4a6..3e7e19d703 100644
--- a/gnu/packages/patches/jami-libjami-headers-search.patch
+++ b/gnu/packages/patches/jami-libjami-headers-search.patch
@@ -1,4 +1,7 @@
-Upstream status: https://review.jami.net/c/jami-client-qt/+/24273.
+It was applied, then reverted (by mistake?) in 4d2c55348bc014.
+
+It's been resubmitted here:
+https://lists.gnu.org/archive/html/jami/2024-01/msg00005.html
 
 diff --git a/CMakeLists.txt b/CMakeLists.txt
 index 8d71b84b..36729698 100644
diff --git a/gnu/packages/patches/jami-qml-tests-discovery.patch b/gnu/packages/patches/jami-qml-tests-discovery.patch
new file mode 100644
index 0000000000..11fd69571c
--- /dev/null
+++ b/gnu/packages/patches/jami-qml-tests-discovery.patch
@@ -0,0 +1,15 @@
+Upstream status: https://review.jami.net/c/jami-client-qt/+/25640
+
+diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
+index d50908cf..587c9d15 100644
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -73,6 +73,8 @@ endif()
+ 
+ string(TOUPPER ${CMAKE_BUILD_TYPE} BUILD_TYPE)
+ 
++set(QUICK_TEST_SOURCE_DIR "${CMAKE_SOURCE_DIR}tests/qml/src")
++
+ set(QML_TESTS_SOURCE_FILES
+     ${CMAKE_SOURCE_DIR}/tests/qml/main.cpp
+     ${TEST_QML_RESOURCES}
diff --git a/gnu/packages/patches/jami-skip-tests-requiring-internet.patch b/gnu/packages/patches/jami-skip-tests-requiring-internet.patch
new file mode 100644
index 0000000000..1abc0e80cb
--- /dev/null
+++ b/gnu/packages/patches/jami-skip-tests-requiring-internet.patch
@@ -0,0 +1,51 @@
+Forwarded upstream: https://lists.gnu.org/archive/html/jami/2024-01/msg00010.html
+
+From 1d3b044c85c32341cca392254fe8bbf34a4639e1 Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Tue, 9 Jan 2024 11:14:04 -0500
+Subject: [PATCH] tests: Skip tests that need Internet when there's none.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+* tests/unittests/messageparser_unittest.cpp (ALinkIsParsedCorrectly)
+(YoutubeLinkIsParsedCorrectly): Skip when there is no Internet.
+
+Series-to: jami@gnu.org
+Series-cc: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
+Fixes: <https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/1507>
+Change-Id: I0a5b57cd82f93fd7edf3fbeb73fb3db5a04c628c
+---
+ tests/unittests/messageparser_unittest.cpp | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/tests/unittests/messageparser_unittest.cpp b/tests/unittests/messageparser_unittest.cpp
+index c10b0d0b..df7a0692 100644
+--- a/tests/unittests/messageparser_unittest.cpp
++++ b/tests/unittests/messageparser_unittest.cpp
+@@ -69,6 +69,9 @@ TEST_F(MessageParserFixture, TextIsParsedCorrectly)
+  */
+ TEST_F(MessageParserFixture, ALinkIsParsedCorrectly)
+ {
++    if (!globalEnv.connectivityMonitor->isOnline())
++        GTEST_SKIP() << "ALinkIsParsedCorrectly requires Internet connectivity";
++
+     auto linkColor = QColor::fromRgb(0, 0, 255);
+     auto backgroundColor = QColor::fromRgb(0, 0, 255);
+ 
+@@ -174,6 +177,9 @@ TEST_F(MessageParserFixture, FencedCodeIsParsedCorrectly)
+  */
+ TEST_F(MessageParserFixture, YoutubeLinkIsParsedCorrectly)
+ {
++    if (!globalEnv.connectivityMonitor->isOnline())
++        GTEST_SKIP() << "YoutubeLinkIsParsedCorrectly requires Internet connectivity";
++
+     auto url = "https://www.youtube.com/watch?v=1234567890";
+     auto msg = "blah blah " + QString(url) + " blah blah";
+ 
+
+base-commit: a4300308dc8d03d59f620bb5fed753df5cf31ed9
+prerequisite-patch-id: 90a419e7de1f4fa5bb68bc58ad0da2817ed268e0
+-- 
+2.41.0
+
diff --git a/gnu/packages/patches/jami-unbundle-dependencies.patch b/gnu/packages/patches/jami-unbundle-dependencies.patch
new file mode 100644
index 0000000000..dab82b26cb
--- /dev/null
+++ b/gnu/packages/patches/jami-unbundle-dependencies.patch
@@ -0,0 +1,71 @@
+Forwarded here: https://lists.gnu.org/archive/html/jami/2024-01/msg00007.html
+
+From a302dc0a0faf2778331745a1d01bc3071e182d4d Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Mon, 8 Jan 2024 16:07:05 -0500
+Subject: [PATCH] build: Allow using system-provided md4c and tidy libraries.
+
+* CMakeLists.txt <md4c, tidy>: Search for libraries in the system
+first, falling back to bundled copies in case they aren't found.
+
+Series-to: jami@gnu.org
+Fixes: <https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/1506>
+Change-Id: I637959fefce6a21b0ee73a793acb6c3c42dcdce0
+---
+ CMakeLists.txt | 36 +++++++++++++++++++++++++-----------
+ 1 file changed, 25 insertions(+), 11 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 38e7a4e2..3f1bd599 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -545,19 +545,33 @@ add_subdirectory(3rdparty/SortFilterProxyModel)
+ set(SFPM_OBJECTS $<TARGET_OBJECTS:SortFilterProxyModel>)
+ 
+ # md4c
+-set(BUILD_SHARED_LIBS OFF CACHE BOOL "Don't build shared md4c library" FORCE)
+-add_subdirectory(3rdparty/md4c EXCLUDE_FROM_ALL)
+-list(APPEND CLIENT_LINK_DIRS ${MD4C_BINARY_DIR}/src)
+-list(APPEND CLIENT_INCLUDE_DIRS ${MD4C_SOURCE_DIR}/src)
+-list(APPEND CLIENT_LIBS md4c-html)
++find_package(md4c)
++if(md4c_FOUND)
++  message(STATUS "Using system-provided md4c-html")
++  list(APPEND CLIENT_LIBS md4c::md4c-html)
++else()
++  message("Using bundled md4c-html library")
++  set(BUILD_SHARED_LIBS OFF CACHE BOOL "Don't build shared md4c library" FORCE)
++  add_subdirectory(3rdparty/md4c EXCLUDE_FROM_ALL)
++  list(APPEND CLIENT_LINK_DIRS ${MD4C_BINARY_DIR}/src)
++  list(APPEND CLIENT_INCLUDE_DIRS ${MD4C_SOURCE_DIR}/src)
++  list(APPEND CLIENT_LIBS md4c-html)
++endif()
+ 
+ # tidy-html5
+-set(BUILD_SHARED_LIB OFF CACHE BOOL "Don't build shared tidy library" FORCE)
+-set(SUPPORT_CONSOLE_APP OFF CACHE BOOL "Don't build tidy console app" FORCE)
+-add_subdirectory(3rdparty/tidy-html5 EXCLUDE_FROM_ALL)
+-list(APPEND CLIENT_LINK_DIRS ${tidy_BINARY_DIR}/Release)
+-list(APPEND CLIENT_INCLUDE_DIRS ${tidy_SOURCE_DIR}/include)
+-list(APPEND CLIENT_LIBS tidy-static)
++pkg_check_modules(tidy IMPORTED_TARGET tidy)
++if(tidy_FOUND)
++  message(STATUS "Using system-provided tidy")
++  list(APPEND CLIENT_LIBS PkgConfig::tidy)
++else()
++  message("Using bundled tidy library")
++  set(BUILD_SHARED_LIB OFF CACHE BOOL "Don't build shared tidy library" FORCE)
++  set(SUPPORT_CONSOLE_APP OFF CACHE BOOL "Don't build tidy console app" FORCE)
++  add_subdirectory(3rdparty/tidy-html5 EXCLUDE_FROM_ALL)
++  list(APPEND CLIENT_LINK_DIRS ${tidy_BINARY_DIR}/Release)
++  list(APPEND CLIENT_INCLUDE_DIRS ${tidy_SOURCE_DIR}/include)
++  list(APPEND CLIENT_LIBS tidy-static)
++endif()
+ 
+ # common executable sources
+ qt_add_executable(
+
+base-commit: a4300308dc8d03d59f620bb5fed753df5cf31ed9
+-- 
+2.41.0
+
diff --git a/gnu/packages/patches/libjami-ac-config-files.patch b/gnu/packages/patches/libjami-ac-config-files.patch
new file mode 100644
index 0000000000..8508d55ee1
--- /dev/null
+++ b/gnu/packages/patches/libjami-ac-config-files.patch
@@ -0,0 +1,52 @@
+Forwarded here: https://lists.gnu.org/archive/html/jami/2024-01/msg00003.html
+
+From 20a1702d881b381979d31c456f1b8cf5e0f728ad Mon Sep 17 00:00:00 2001
+From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
+Date: Sun, 7 Jan 2024 16:40:41 -0500
+Subject: [PATCH] configure.ac: Expand AC_CONFIG_FILES to fix a race.
+
+The commands apparently run for each file listed, or something
+similar, leading to:
+
+  configure: creating ./config.status
+  config.status: creating test/agent/Makefile
+  chmod: cannot access 'test/agent/pre-inst-env': No such file or directory
+  chmod: cannot access 'test/agent/scenarios/bulk-calls/run-scenario': No such file or directory
+  config.status: creating test/agent/pre-inst-env
+  chmod: cannot access 'test/agent/scenarios/bulk-calls/run-scenario': No such file or directory
+
+* configure.ac [ENABLE_AGENT]: Separate AC_CONFIG_FILES uses per file.
+
+Series-to: jami@gnu.org
+Series-postfix: daemon
+Change-Id: Ib283955b73540248e09bf31ef44ef3d178b216fa
+---
+ configure.ac | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index cdea5ff1c..2ab96d817 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -61,11 +61,11 @@ AC_ARG_ENABLE([agent],
+     [Build agent]))
+ AM_CONDITIONAL([ENABLE_AGENT], [test "x$enable_agent" = "xyes"])
+ AM_COND_IF([ENABLE_AGENT],
+-           [AC_CONFIG_FILES([test/agent/Makefile
+-                             test/agent/pre-inst-env:test/agent/build-aux/pre-inst-env.in
+-                             test/agent/scenarios/bulk-calls/run-scenario],
+-                            [chmod +x test/agent/pre-inst-env
+-                             chmod +x test/agent/scenarios/bulk-calls/run-scenario])])
++  [AC_CONFIG_FILES([test/agent/Makefile])
++   AC_CONFIG_FILES([test/agent/pre-inst-env:test/agent/build-aux/pre-inst-env.in],
++                   [chmod +x test/agent/pre-inst-env])
++   AC_CONFIG_FILES([test/agent/scenarios/bulk-calls/run-scenario],
++                   [chmod +x test/agent/scenarios/bulk-calls/run-scenario])])
+ 
+ AC_ARG_ENABLE([tracepoints], AS_HELP_STRING([--enable-tracepoints], [Enable tracepoints]))
+ 
+
+base-commit: e246fb2e090c9b3de55e2d455eee5a6f05a5b286
+-- 
+2.41.0
+