~ruther/guix-local

3b8d7b10aeeebaf4523accd8388f58e0a05b7a2e — Maxim Cournoyer a month ago 25e2662
gnu: jami: Update to 20251212.0.

* gnu/packages/jami.scm (libjami): Update to 20251212.0.
[source]: Add libjami-pkgconf.patch and libjami-simdutf.patch patches.
[inputs]: Add simdutf.
(jami) Update to 20251212.0.
[source]: Remove jami-unbundle-dependencies.patch,
jami-libjami-headers-search.patch, jami-skip-tests-requiring-internet.patch
and jami-find-package-avutil.patch; add jami-allow-system-zxing-cpp.patch,
jami-libjami-cmake.patch and jami-avutil-link.patch patches.
[inputs]: Delete qrencode.
* gnu/packages/patches/jami-allow-system-zxing-cpp.patch: New file.
* gnu/packages/patches/jami-avutil-link.patch: Likewise.
* gnu/packages/patches/jami-libjami-cmake.patch: Likewise.
* gnu/packages/patches/libjami-pkgconf.patch: Likewise.
* gnu/packages/patches/libjami-simdutf.patch: Likewise.
* gnu/packages/patches/jami-find-package-avutil.patch: Delete file.
* gnu/packages/patches/jami-libjami-headers-search.patch: Likewise.
* gnu/packages/patches/jami-skip-tests-requiring-internet.patch: Likewise.
* gnu/packages/patches/jami-unbundle-dependencies.patch: Likewise.
* gnu/packages/patches/libjami-ac-config-files.patch: Likewise.
* gnu/packages/patches/libjami-sdbus-cpp-v2.patch: Likewise.
* gnu/packages/patches/jami-qwindowkit.patch: Update upstream status.
* gnu/local.mk (dist_patch_DATA): Update accordingly.

Change-Id: I03ff9f4a892e1fead81d2c6e547f1c0cf405eb5f
13 files changed, 259 insertions(+), 374 deletions(-)

M gnu/local.mk
M gnu/packages/jami.scm
R gnu/packages/patches/{jami-unbundle-dependencies => jami-allow-system-zxing-cpp}.patch
A gnu/packages/patches/jami-avutil-link.patch
D gnu/packages/patches/jami-find-package-avutil.patch
A gnu/packages/patches/jami-libjami-cmake.patch
D gnu/packages/patches/jami-libjami-headers-search.patch
M gnu/packages/patches/jami-qwindowkit.patch
D gnu/packages/patches/jami-skip-tests-requiring-internet.patch
D gnu/packages/patches/libjami-ac-config-files.patch
A gnu/packages/patches/libjami-pkgconf.patch
D gnu/packages/patches/libjami-sdbus-cpp-v2.patch
A gnu/packages/patches/libjami-simdutf.patch
M gnu/local.mk => gnu/local.mk +5 -5
@@ 19,7 19,7 @@
# Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
# Copyright © 2018, 2019, 2020, 2021, 2022, 2024, 2025 Oleg Pykhalov <go.wigust@gmail.com>
# Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
# Copyright © 2018, 2020-2025 Maxim Cournoyer <maxim@guixotic.coop>
# Copyright © 2018, 2020-2026 Maxim Cournoyer <maxim@guixotic.coop>
# Copyright © 2019, 2020, 2021, 2022, 2024 Guillaume Le Vaillant <glv@posteo.net>
# Copyright © 2019, 2020 John Soo <jsoo1@asu.edu>
# Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>


@@ 1631,11 1631,9 @@ dist_patch_DATA =						\
  %D%/packages/patches/irrlicht-link-against-needed-libs.patch	\
  %D%/packages/patches/isl-0.11.1-aarch64-support.patch		\
  %D%/packages/patches/ispell-for-linphone-cmake.patch		\
  %D%/packages/patches/jami-find-package-avutil.patch		\
  %D%/packages/patches/jami-libjami-headers-search.patch	\
  %D%/packages/patches/jami-allow-system-zxing-cpp.patch        \
  %D%/packages/patches/jami-avutil-link.patch   		\
  %D%/packages/patches/jami-qwindowkit.patch			\
  %D%/packages/patches/jami-skip-tests-requiring-internet.patch	\
  %D%/packages/patches/jami-unbundle-dependencies.patch		\
  %D%/packages/patches/jamvm-1.5.1-aarch64-support.patch	\
  %D%/packages/patches/jamvm-1.5.1-armv7-support.patch	\
  %D%/packages/patches/jamvm-2.0.0-aarch64-support.patch	\


@@ 1681,6 1679,8 @@ dist_patch_DATA =						\
  %D%/packages/patches/libgeotiff-fix-tests-on-i386.patch	\
  %D%/packages/patches/libguestfs-syms.patch            	\
  %D%/packages/patches/libinfinity-renew-test-certificate.patch \
  %D%/packages/patches/libjami-pkgconf.patch                    \
  %D%/packages/patches/libjami-simdutf.patch                    \
  %D%/packages/patches/libretro-dolphin-emu-data.patch		\
  %D%/packages/patches/libretro-dolphin-emu-gc-font-tool.patch  \
  %D%/packages/patches/libretro-dolphin-emu-libusb-assert.patch \

M gnu/packages/jami.scm => gnu/packages/jami.scm +29 -25
@@ 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-2025 Maxim Cournoyer <maxim@guixotic.coop>
;;; Copyright © 2020-2026 Maxim Cournoyer <maxim@guixotic.coop>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 26,6 26,7 @@
  #:use-module (gnu packages autotools)
  #:use-module (gnu packages backup)
  #:use-module (gnu packages base)
  #:use-module (gnu packages c)
  #:use-module (gnu packages check)
  #:use-module (gnu packages crypto)
  #:use-module (gnu packages documentation)


@@ 43,6 44,7 @@
  #:use-module (gnu packages networking)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages pretty-print)
  #:use-module (gnu packages pulseaudio)
  #:use-module (gnu packages python)
  #:use-module (gnu packages qt)


@@ 78,9 80,9 @@

;;; 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 "20251003.0")
(define %jami-daemon-commit "afe2446133eb3c9279e42b0d1dcfdd9a3c76a35f")
;;; <https://git.jami.net/savoirfairelinux/jami-daemon/-/blob/master/contrib/src/ffmpeg/rules.mak>.
(define %jami-nightly-version "20251212.0")
(define %jami-daemon-commit "663dc3f7b625abcd05e516d819c70fd883a3c9f2")

(define-public libjami
  (package


@@ 94,7 96,9 @@
              (file-name (git-file-name name version))
              (sha256
               (base32
                "05vjykg3nzf91bwzrhh95c6mndiz5n6gz204y2nrfrszx161irh9"))))
                "1379vq5afqgrjgwhl2qwapzrs9irjsxr2gzm35jrsg31rms5xgzb"))
              (patches (search-patches "libjami-pkgconf.patch"
                                       "libjami-simdutf.patch"))))
    (outputs '("out" "bin" "debug"))    ;"bin' contains jamid
    (build-system gnu-build-system)
    (arguments


@@ 102,14 106,15 @@
      ;; XXX: The test suites reportedly takes 2 h 30 to run by upstream's CI.
      ;; Many tests also fail, within and without the containerized
      ;; environment.  Some issues have recently been fixed, so try again in
      ;; the next release.
      ;; the next release.  More problematically, it currently fails to build
      ;; at all (see: <https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/1168>).
      #: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 general purpose Scheme bindings are made
      ;; available (see: test/agent/README.md).
      ;; FIXME: compiling the agent currently fails (see:
      ;; https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/1139).
      ;; <https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/1139>).
      #:configure-flags #~(list "--disable-agent" "--enable-debug")
      #:make-flags #~(list"V=1")        ;build verbosely
      #:phases


@@ 138,6 143,14 @@
                (mkdir-p share)
                (rename-file (search-input-directory outputs "share/dbus-1")
                             (string-append share "/dbus-1"))))))))
    (native-inputs
     (list autoconf
           automake
           cppunit
           libtool
           perl                         ;to generate manpages with pod2man
           pkg-config
           which))
    (inputs
     (list alsa-lib
           asio


@@ 159,16 172,9 @@
           sdbus-c++
           speex
           speexdsp
           simdutf
           webrtc-audio-processing-0.3
           yaml-cpp))
    (native-inputs
     (list autoconf
           automake
           cppunit
           libtool
           perl                         ;to generate manpages with pod2man
           pkg-config
           which))
    (synopsis "Jami core library and daemon")
    (description "This package provides a library and daemon implementing the
Jami core functionality.  Jami is a secure and distributed voice, video and


@@ 231,13 237,12 @@ QSortFilterProxyModel conveniently exposed for QML.")
              (file-name (git-file-name name version))
              (sha256
               (base32
                "1ivgs7ckc5wcjlg1p2v7nsw4skcr2hfgv7yk9kx1hd4pbiknr6hk"))
                "13mpv62pw4f8cb9h8qaplxkn2ydsy9d2fr4v4p54r225ynzbq04h"))
              (patches (search-patches
                        "jami-unbundle-dependencies.patch"
                        "jami-libjami-headers-search.patch"
                        "jami-allow-system-zxing-cpp.patch"
                        "jami-libjami-cmake.patch"
                        "jami-qwindowkit.patch"
                        "jami-skip-tests-requiring-internet.patch"
                        "jami-find-package-avutil.patch"))))
                        "jami-avutil-link.patch"))))
    (build-system qt-build-system)
    (outputs '("out" "debug"))
    (arguments


@@ 267,7 272,7 @@ QSortFilterProxyModel conveniently exposed for QML.")
              ;; 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).
              ;; <https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/1504>).
              (setenv "XDG_SESSION_TYPE" "x11")))
          (replace 'check
            (lambda* (#:key tests? parallel-tests? #:allow-other-keys)


@@ 288,9 293,9 @@ QSortFilterProxyModel conveniently exposed for QML.")

                  ;; The QML test suite is currently disabled as it segfaults
                  ;; (see:
                  ;; https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/1631).
                  ;; (display "Running functional tests...\n") (apply invoke
                  ;; "ctest" "-R" "Qml_Tests" ctest-args)
                  ;; <https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/1631>).
                  ;;(display "Running functional tests...\n")
                  ;;(apply invoke "ctest" "-R" "Qml_Tests" ctest-args)
                  )))))))
    (native-inputs
     (list git-minimal


@@ 311,7 316,6 @@ QSortFilterProxyModel conveniently exposed for QML.")
           libxkbcommon
           md4c
           network-manager
           qrencode
           qt5compat
           qtdeclarative
           qtmultimedia

R gnu/packages/patches/jami-unbundle-dependencies.patch => gnu/packages/patches/jami-allow-system-zxing-cpp.patch +12 -17
@@ 1,37 1,32 @@
Upstream-status: https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/1506
Upstream-status: https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/2073
Upstream-status: <https://review.jami.net/c/jami-client-qt/+/31461>

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e802357f..6d2dccfb 100644
index c046b597..3251762e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -696,12 +696,19 @@ add_subdirectory(3rdparty/SortFilterProx
@@ -714,13 +714,18 @@ else()
 endif()
 
 # ZXing-cpp configuration
-set(BUILD_EXAMPLES OFF CACHE BOOL "")
-set(BUILD_BLACKBOX_TESTS OFF CACHE BOOL "")
-set(ZXING_EXAMPLES OFF CACHE BOOL "")
-set(ZXING_BLACKBOX_TESTS OFF CACHE BOOL "")
-add_subdirectory(3rdparty/zxing-cpp EXCLUDE_FROM_ALL)
-
-# Add ZXing-cpp to includes and libraries
-list(APPEND CLIENT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/zxing-cpp/core/src)
-list(APPEND CLIENT_LIBS ZXing)
+pkg_check_modules(zxing IMPORTED_TARGET zxing)
+if(zxing_FOUND)
+  message(STATUS "Using system-provided ZXing-cpp")
+  list(APPEND CLIENT_INCLUDE_DIRS ${zxing_INCLUDE_DIRS})
+  list(APPEND CLIENT_LIBS PkgConfig::zxing)
+else()
+  set(BUILD_EXAMPLES OFF CACHE BOOL "")
+  set(BUILD_BLACKBOX_TESTS OFF CACHE BOOL "")
+  set(ZXING_EXAMPLES OFF CACHE BOOL "")
+  set(ZXING_BLACKBOX_TESTS OFF CACHE BOOL "")
+  add_subdirectory(3rdparty/zxing-cpp EXCLUDE_FROM_ALL)
 
 # Add ZXing-cpp to includes and libraries
-list(APPEND CLIENT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/zxing-cpp/core/src)
-list(APPEND CLIENT_LIBS ZXing)
+  list(APPEND CLIENT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/zxing-cpp/core/src)
+  list(APPEND CLIENT_LIBS ZXing)
+endif()
 
 # common executable sources
 qt_add_executable(

base-commit: a4300308dc8d03d59f620bb5fed753df5cf31ed9
-- 
2.41.0


A gnu/packages/patches/jami-avutil-link.patch => gnu/packages/patches/jami-avutil-link.patch +17 -0
@@ 0,0 1,17 @@
Upstream-status: <https://review.jami.net/c/jami-client-qt/+/32710>

diff --git a/src/libclient/CMakeLists.txt b/src/libclient/CMakeLists.txt
index 5c35e402..5e3929bc 100644
--- a/src/libclient/CMakeLists.txt
+++ b/src/libclient/CMakeLists.txt
@@ -325,6 +325,10 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
 else()
   set(CC_MACHINE "")
 endif()
+find_library(AVUTIL_LIBRARY avutil
+  HINTS
+  ${LIBJAMI_CONTRIB_DIR}/${CC_MACHINE}/lib
+  ${LIBJAMI_CONTRIB_DIR}/apple-darwin/lib)
 
 if(ENABLE_LIBWRAP)
   list(APPEND LIBCLIENT_HEADERS directrenderer.h)

D gnu/packages/patches/jami-find-package-avutil.patch => gnu/packages/patches/jami-find-package-avutil.patch +0 -54
@@ 1,54 0,0 @@
kestrelwx: The upstream CMake recipe does not link ffmpeg's libavutil,
resulting in a build failure. INCLUDE_DIRS from pkg-config here are actually
empty inside the build enviornment, but don't seem to affect the build.
Relevant upstream issue:
https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/2110

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 29bfde9a..db46776e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -453,12 +453,6 @@ endif()
 
 # For libavutil/avframe.
 set(LIBJAMI_CONTRIB_DIR "${DAEMON_DIR}/contrib")
-find_path(AVUTIL_INCLUDE_DIR libavutil/avutil.h
-  PATHS
-  ${LIBJAMI_CONTRIB_DIR}/native/ffmpeg
-  ${LIBJAMI_CONTRIB_DIR}/${CONTRIB_DARWIN_FOLDER}/include/
-  ${LIBJAMI_CONTRIB_DIR}/build/ffmpeg/Build/win32/x64/include)
-include_directories(${AVUTIL_INCLUDE_DIR})
 
 find_package(Vulkan)
 if(Vulkan_FOUND)
@@ -479,6 +473,11 @@ endif()
 
 find_package(PkgConfig REQUIRED)
 
+# avutil
+pkg_search_module(avutil IMPORTED_TARGET libavutil)
+list(APPEND CLIENT_LIBS PkgConfig::avutil)
+include_directories(${avutil_INCLUDE_DIRS})
+
 # hunspell
 pkg_search_module(hunspell IMPORTED_TARGET hunspell)
 if(hunspell_FOUND)
diff --git a/src/libclient/CMakeLists.txt b/src/libclient/CMakeLists.txt
index 01405038..b56a621b 100644
--- a/src/libclient/CMakeLists.txt
+++ b/src/libclient/CMakeLists.txt
@@ -318,11 +318,9 @@ if(APPLE)
   endif()
 endif()
 
-find_path(AVUTIL_INCLUDE_DIR libavutil/avutil.h
-  PATHS
-  ${LIBJAMI_CONTRIB_DIR}/native/ffmpeg
-  ${LIBJAMI_CONTRIB_DIR}/${CONTRIB_DARWIN_FOLDER}/include/
-  ${LIBJAMI_CONTRIB_DIR}/build/ffmpeg/Build/win32/x64/include)
+pkg_search_module(AVUTIL libavutil)
+set(AVUTIL_INCLUDE_DIR ${AVUTIL_INCLUDE_DIRS})
+set(AVUTIL_LIBRARY ${AVUTIL_LIBRARIES})
 include_directories(${AVUTIL_INCLUDE_DIR})
 if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
   execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine

A gnu/packages/patches/jami-libjami-cmake.patch => gnu/packages/patches/jami-libjami-cmake.patch +127 -0
@@ 0,0 1,127 @@
Upstream-status: <https://review.jami.net/c/jami-client-qt/+/32711>

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c046b597..8ee7b16d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -60,7 +60,6 @@ endif()
 
 if(JAMICORE_AS_SUBDIR)
   add_subdirectory(${DAEMON_DIR} EXCLUDE_FROM_ALL)
-  set(LIBJAMI_LIB jami-core)
 endif()
 
 # init some variables for includes, libs, etc.
@@ -236,9 +235,6 @@ endif()
 list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/extras/build/cmake/modules)
 if (NOT JAMICORE_AS_SUBDIR)
   find_package(LibJami REQUIRED)
-  if(LIBJAMI_FOUND)
-    include_directories(${LIBJAMI_INCLUDE_DIR})
-  endif()
 endif()
 
 include(FindPython3)
@@ -751,7 +747,7 @@ if(MSVC)
     WIN32_EXECUTABLE TRUE)
 
   list(APPEND CLIENT_LIBS
-    ${LIBJAMI_LIB}
+    LibJami::LibJami
     ${GNUTLS_LIB}
     ${LIBCLIENT_NAME}
     ${QT_LIBS}
@@ -794,7 +790,8 @@ elseif (NOT APPLE)
     ${LIBNOTIFY_LIBRARIES}
     ${LIBGDKPIXBUF_LIBRARIES}
     ${GLIB_LIBRARIES}
-    ${GIO_LIBRARIES})
+    ${GIO_LIBRARIES}
+    LibJami::LibJami)
 
   install(
     TARGETS ${PROJECT_NAME}
diff --git a/extras/build/cmake/modules/FindLibJami.cmake b/extras/build/cmake/modules/FindLibJami.cmake
index ee2bf6d9..31ec9c02 100644
--- a/extras/build/cmake/modules/FindLibJami.cmake
+++ b/extras/build/cmake/modules/FindLibJami.cmake
@@ -14,17 +14,26 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA.
 
-# Once done, this find module will set:
-#
-#   LIBJAMI_INCLUDE_DIR - libjami include directory
-#   LIBJAMI_FOUND - whether it was able to find the include directories
-#   LIBJAMI_LIB - path to libjami or libring library
+# Once done, this find module will set the LibJami::LibJami imported
+# target, which references all what is needed (headers, libraries,
+# dependencies).
 
 set(LIBJAMI_FOUND true)
 
 if(WITH_DAEMON_SUBMODULE)
   set(LIBJAMI_INCLUDE_DIR ${DAEMON_DIR}/src/jami)
 else()
+  # Preferably find libjami via pkg-config.
+  find_package(PkgConfig QUIET)
+  if(PKG_CONFIG_FOUND)
+    pkg_check_modules(LIBJAMI QUIET IMPORTED_TARGET jami)
+    if(LIBJAMI_FOUND)
+      add_library(LibJami::LibJami ALIAS PkgConfig::LIBJAMI)
+      message(STATUS "Found LibJami via pkg-config")
+      return()
+    endif()
+  endif()
+
   find_path(LIBJAMI_INCLUDE_DIR jami.h PATH_SUFFIXES jami)
   if(NOT LIBJAMI_INCLUDE_DIR)
     message(STATUS "Jami daemon headers not found!
@@ -109,5 +118,15 @@ endif()
 # Restore the original value of CMAKE_FIND_LIBRARY_SUFFIXES.
 set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_orig})
 
+# Assemble a CMake imported target with the above information gathered
+# by other means than pkg-config.
+if(LIBJAMI_FOUND AND LIBJAMI_LIB AND LIBJAMI_INCLUDE_DIR)
+  add_library(LibJami::LibJami UNKNOWN IMPORTED)
+  set_target_properties(LibJami::LibJami PROPERTIES
+    IMPORTED_LOCATION "${LIBJAMI_LIB}"
+    INTERFACE_INCLUDE_DIRECTORIES "${LIBJAMI_INCLUDE_DIR}"
+  )
+endif()
+
 message(STATUS "Jami daemon headers are in " ${LIBJAMI_INCLUDE_DIR})
 message(STATUS "Jami daemon library is at " ${LIBJAMI_LIB})
diff --git a/src/libclient/CMakeLists.txt b/src/libclient/CMakeLists.txt
index 5c35e402..94d77523 100644
--- a/src/libclient/CMakeLists.txt
+++ b/src/libclient/CMakeLists.txt
@@ -47,9 +47,6 @@ endif()
 set(CMAKE_MODULE_PATH
   ${CMAKE_MODULE_PATH} "${EXTRAS_DIR}/build/cmake/modules")
 find_package(LibJami REQUIRED)
-if(LIBJAMI_FOUND)
-  include_directories(${LIBJAMI_INCLUDE_DIR})
-endif()
 
 string(SUBSTRING ${CMAKE_GENERATOR} 0 14 CMAKE_GENERATOR_SHORT)
 if(CMAKE_GENERATOR_SHORT MATCHES "Visual Studio ")
diff --git a/src/libclient/qtwrapper/CMakeLists.txt b/src/libclient/qtwrapper/CMakeLists.txt
index 761278c9..b4b5a708 100644
--- a/src/libclient/qtwrapper/CMakeLists.txt
+++ b/src/libclient/qtwrapper/CMakeLists.txt
@@ -39,7 +39,6 @@ else()
 endif()
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
-include_directories(${LIBJAMI_INCLUDE_DIR})
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../dbus)
 
@@ -49,4 +48,4 @@ add_library(${PROJECT_NAME} STATIC
 
 target_link_libraries(${PROJECT_NAME}
   Qt::Core
-  ${LIBJAMI_LIB})
+  LibJami::LibJami)

D gnu/packages/patches/jami-libjami-headers-search.patch => gnu/packages/patches/jami-libjami-headers-search.patch +0 -21
@@ 1,21 0,0 @@
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

The remaining hunk was reverted by 22be4be8.
Submitted:
https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/2112

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 29bfde9a..3b4c7a92 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -237,6 +237,6 @@ list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/extras/build/cmake/modules)
 if (NOT JAMICORE_AS_SUBDIR)
   find_package(LibJami REQUIRED)
   if(LIBJAMI_FOUND)
-    include_directories(${LIBJAMI_INCLUDE_DIRS})
+    include_directories(${LIBJAMI_INCLUDE_DIR})
   endif()
 endif()

M gnu/packages/patches/jami-qwindowkit.patch => gnu/packages/patches/jami-qwindowkit.patch +3 -5
@@ 1,9 1,7 @@
Upstream-status: https://lists.gnu.org/archive/html/jami/2024-03/msg00008.html

This makes it possible to use the system-provided qwindowkit library.
Upstream-status: <https://review.jami.net/c/jami-client-qt/+/31456>

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 29bfde9a..3b4c7a92 100644
index c046b597..366758f5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -101,13 +101,13 @@ endif()


@@ 23,7 21,7 @@ index 29bfde9a..3b4c7a92 100644
 
 # If ENABLE_CRASHREPORTS is enabled, we will use crashpad_cmake for now.
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index c5228ccf..816f97a7 100644
index a1aeb22f..94f558e0 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -61,7 +61,7 @@ target_include_directories(test_common_obj PRIVATE

D gnu/packages/patches/jami-skip-tests-requiring-internet.patch => gnu/packages/patches/jami-skip-tests-requiring-internet.patch +0 -51
@@ 1,51 0,0 @@
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


D gnu/packages/patches/libjami-ac-config-files.patch => gnu/packages/patches/libjami-ac-config-files.patch +0 -52
@@ 1,52 0,0 @@
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


A gnu/packages/patches/libjami-pkgconf.patch => gnu/packages/patches/libjami-pkgconf.patch +15 -0
@@ 0,0 1,15 @@
Upstream-status: <https://review.jami.net/c/jami-daemon/+/32709>

diff --git a/jami.pc.in b/jami.pc.in
index fb8bac58a..3b741e7ed 100644
--- a/jami.pc.in
+++ b/jami.pc.in
@@ -1,7 +1,7 @@
 prefix=@prefix@
 exec_prefix=@exec_prefix@
 libdir=@libdir@
-includedir=@includedir@
+includedir=@includedir@/jami
 
 Name: jami
 Description: Jami core library and daemon

D gnu/packages/patches/libjami-sdbus-cpp-v2.patch => gnu/packages/patches/libjami-sdbus-cpp-v2.patch +0 -144
@@ 1,144 0,0 @@
Upstream-status: <https://review.jami.net/c/jami-daemon/+/31504>

diff --git a/bin/dbus/dbuscallmanager.hpp b/bin/dbus/dbuscallmanager.hpp
index b79e0cd6f..918d8bc30 100644
--- a/bin/dbus/dbuscallmanager.hpp
+++ b/bin/dbus/dbuscallmanager.hpp
@@ -23,7 +23,7 @@ class DBusCallManager : public sdbus::AdaptorInterfaces<cx::ring::Ring::CallMana
 {
 public:
     DBusCallManager(sdbus::IConnection& connection)
-        : AdaptorInterfaces(connection, "/cx/ring/Ring/CallManager")
+        : AdaptorInterfaces(connection, sdbus::ObjectPath("/cx/ring/Ring/CallManager"))
     {
         registerAdaptor();
         registerSignalHandlers();
diff --git a/bin/dbus/dbusconfigurationmanager.hpp b/bin/dbus/dbusconfigurationmanager.hpp
index a6bb8e4e9..895c7690d 100644
--- a/bin/dbus/dbusconfigurationmanager.hpp
+++ b/bin/dbus/dbusconfigurationmanager.hpp
@@ -33,7 +33,7 @@ public:
                                            std::vector<std::map<std::string, std::string>>,
                                            std::map<std::string, int32_t>>;
     DBusConfigurationManager(sdbus::IConnection& connection)
-        : AdaptorInterfaces(connection, "/cx/ring/Ring/ConfigurationManager")
+        : AdaptorInterfaces(connection, sdbus::ObjectPath("/cx/ring/Ring/ConfigurationManager"))
     {
         registerAdaptor();
         registerSignalHandlers();
diff --git a/bin/dbus/dbusinstance.hpp b/bin/dbus/dbusinstance.hpp
index d45c033e1..184fd2c7d 100644
--- a/bin/dbus/dbusinstance.hpp
+++ b/bin/dbus/dbusinstance.hpp
@@ -28,7 +28,7 @@ class DBusInstance : public sdbus::AdaptorInterfaces<cx::ring::Ring::Instance_ad
 {
 public:
     DBusInstance(sdbus::IConnection& connection)
-        : AdaptorInterfaces(connection, "/cx/ring/Ring/Instance")
+        : AdaptorInterfaces(connection, sdbus::ObjectPath("/cx/ring/Ring/Instance"))
     {
         registerAdaptor();
     }
diff --git a/bin/dbus/dbuspluginmanagerinterface.hpp b/bin/dbus/dbuspluginmanagerinterface.hpp
index c063a9903..132674e9f 100644
--- a/bin/dbus/dbuspluginmanagerinterface.hpp
+++ b/bin/dbus/dbuspluginmanagerinterface.hpp
@@ -23,7 +23,7 @@ class DBusPluginManagerInterface : public sdbus::AdaptorInterfaces<cx::ring::Rin
 {
 public:
     DBusPluginManagerInterface(sdbus::IConnection& connection)
-        : AdaptorInterfaces(connection, "/cx/ring/Ring/PluginManagerInterface")
+        : AdaptorInterfaces(connection, sdbus::ObjectPath("/cx/ring/Ring/PluginManagerInterface"))
     {
         registerAdaptor();
         registerSignalHandlers();
diff --git a/bin/dbus/dbuspresencemanager.hpp b/bin/dbus/dbuspresencemanager.hpp
index ca8ba7f2a..27b93eee4 100644
--- a/bin/dbus/dbuspresencemanager.hpp
+++ b/bin/dbus/dbuspresencemanager.hpp
@@ -23,7 +23,7 @@ class DBusPresenceManager : public sdbus::AdaptorInterfaces<cx::ring::Ring::Pres
 {
 public:
     DBusPresenceManager(sdbus::IConnection& connection)
-        : AdaptorInterfaces(connection, "/cx/ring/Ring/PresenceManager")
+        : AdaptorInterfaces(connection, sdbus::ObjectPath("/cx/ring/Ring/PresenceManager"))
     {
         registerAdaptor();
         registerSignalHandlers();
diff --git a/bin/dbus/dbusvideomanager.hpp b/bin/dbus/dbusvideomanager.hpp
index 7fbca2492..96f73e99b 100644
--- a/bin/dbus/dbusvideomanager.hpp
+++ b/bin/dbus/dbusvideomanager.hpp
@@ -23,7 +23,7 @@ class DBusVideoManager : public sdbus::AdaptorInterfaces<cx::ring::Ring::VideoMa
 {
 public:
     DBusVideoManager(sdbus::IConnection& connection)
-        : AdaptorInterfaces(connection, "/cx/ring/Ring/VideoManager")
+        : AdaptorInterfaces(connection, sdbus::ObjectPath("/cx/ring/Ring/VideoManager"))
     {
         registerAdaptor();
         registerSignalHandlers();
diff --git a/bin/dbus/main.cpp b/bin/dbus/main.cpp
index ee8a349cc..4d7adc95e 100644
--- a/bin/dbus/main.cpp
+++ b/bin/dbus/main.cpp
@@ -180,7 +180,7 @@ main(int argc, char *argv [])
     }
 
     try {
-        connection = sdbus::createSessionBusConnection("cx.ring.Ring");
+        connection = sdbus::createSessionBusConnection(sdbus::ServiceName("cx.ring.Ring"));
         DBusCallManager callManager(*connection);
         DBusConfigurationManager configurationManager(*connection);
         DBusInstance instanceManager(*connection);
diff --git a/configure.ac b/configure.ac
index 66e52ee62..68de32497 100644
--- a/configure.ac
+++ b/configure.ac
@@ -420,7 +420,7 @@ AC_ARG_WITH([dbus],
   [],
   [with_dbus=yes])
 AS_IF([test "x$with_dbus" = "xyes"],
-  [PKG_CHECK_MODULES(SDBUSCPP, [sdbus-c++],,
+  [PKG_CHECK_MODULES(SDBUSCPP, [sdbus-c++ >= 2.0.0],,
      AC_MSG_ERROR([sdbus-c++ not found]))
 
    AC_CONFIG_FILES([bin/dbus/Makefile])
diff --git a/contrib/src/sdbus-cpp/SHA512SUMS b/contrib/src/sdbus-cpp/SHA512SUMS
index a48ebec1c..009d0b81b 100644
--- a/contrib/src/sdbus-cpp/SHA512SUMS
+++ b/contrib/src/sdbus-cpp/SHA512SUMS
@@ -1 +1 @@
-dab2c4d9a5ea6d626672a5a6ee6f3490c60c6fdd160769801a4d6b4cf3df4983fad57ff0230132a5d637ec78a55993200ce217fa89461016e101865cc2777d7d  sdbus-cpp-1.2.0.tar.gz
+4247d49f0d5231e2768c0c96fa9c266bbcc340292c9c3d748f9c37ff992b82301faea798300f916e9a5c992d77adfe56186866c91a4c7d4157750ff09ba5a047  sdbus-cpp-2.1.0.tar.gz
diff --git a/contrib/src/sdbus-cpp/rules.mak b/contrib/src/sdbus-cpp/rules.mak
index 397d18d3b..d00fa97ca 100644
--- a/contrib/src/sdbus-cpp/rules.mak
+++ b/contrib/src/sdbus-cpp/rules.mak
@@ -1,4 +1,4 @@
-SDBUS_CPP_VERSION := 1.2.0
+SDBUS_CPP_VERSION := 2.1.0
 SDBUS_CPP_URL := https://github.com/Kistler-Group/sdbus-cpp/archive/refs/tags/v$(SDBUS_CPP_VERSION).tar.gz
 
 ifdef HAVE_LINUX
@@ -7,17 +7,14 @@ PKGS += sdbus-cpp
 endif
 endif
 
-ifeq ($(call need_pkg,"sdbus-c++ >= 1.2.0"),)
+ifeq ($(call need_pkg,"sdbus-c++ >= 2.0.0"),)
 PKGS_FOUND += sdbus-cpp
 endif
 
 SDBUS_CPP_CMAKECONF := -D CMAKE_BUILD_TYPE=Release \
                        -D BUILD_SHARED_LIBS=OFF \
-                       -D BUILD_CODE_GEN=ON \
-                       -D BUILD_LIBSYSTEMD=OFF \
-                       -D BUILD_TESTS=OFF \
-                       -D BUILD_EXAMPLES=OFF \
-                       -D BUILD_DOC=OFF
+                       -D SDBUSCPP_BUILD_CODEGEN=ON \
+                       -D SDBUSCPP_BUILD_DOCS=OFF
 
 $(TARBALLS)/sdbus-cpp-$(SDBUS_CPP_VERSION).tar.gz:
 	$(call download,$(SDBUS_CPP_URL))

A gnu/packages/patches/libjami-simdutf.patch => gnu/packages/patches/libjami-simdutf.patch +51 -0
@@ 0,0 1,51 @@
Upstream-status: <https://review.jami.net/c/jami-daemon/+/32708>

diff --git a/configure.ac b/configure.ac
index 055151670..f6e4ae978 100644
--- a/configure.ac
+++ b/configure.ac
@@ -590,6 +590,8 @@ PKG_CHECK_MODULES([SECP256K1], [libsecp256k1 >= 0.1],,
 PKG_CHECK_MODULES([FMT], [fmt >= 7.0],,
   AC_MSG_FAILURE([Missing {fmt}]))
 
+PKG_CHECK_MODULES([SIMDUTF], [simdutf])
+
 # SHM
 dnl check for shm
 AS_IF([test "x$with_dbus" == xyes],
diff --git a/meson.build b/meson.build
index c0f98c7f8..3ad0bd0ba 100644
--- a/meson.build
+++ b/meson.build
@@ -32,6 +32,7 @@ deplibavutil      = dependency('libavutil', version: '>= 55.75.100')
 depfmt            = dependency('fmt', version: '>= 5.3')
 depyamlcpp        = dependency('yaml-cpp', version: '>= 0.5.1')
 depjsoncpp        = dependency('jsoncpp', version: '>= 1.6.5')
+depsimdutf        = dependency('simdutf')
 depzlib           = dependency('zlib')
 
 if get_option('interfaces').contains('dbus')
diff --git a/src/Makefile.am b/src/Makefile.am
index 8d874223e..cee546126 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -52,6 +52,7 @@ libjami_la_LIBADD += \
 	$(FMT_LIBS) \
 	$(LIBSSL_LIBS) \
 	$(LIBCRYPTO_LIBS) \
+	$(SIMDUTF_LIBS) \
 	$(ZLIB_LIBS)
 
 # XXX: It seems this should be the default value when otherwise left
diff --git a/src/meson.build b/src/meson.build
index 22d026abc..bfc809cba 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -140,6 +140,7 @@ libjami_dependencies = [
     depfmt,
     depyamlcpp,
     depjsoncpp,
+    depsimdutf,
     depzlib,
     depopenssl
 ]