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
This commit is contained in:
Maxim Cournoyer 2023-08-18 01:11:25 -04:00
parent d9c9b97e93
commit 8237f4e997
No known key found for this signature in database
GPG key ID: 1260E46482E63562
8 changed files with 280 additions and 52 deletions

View file

@ -1467,6 +1467,9 @@ dist_patch_DATA = \
%D%/packages/patches/itk-snap-alt-glibc-compat.patch \
%D%/packages/patches/jami-disable-integration-tests.patch \
%D%/packages/patches/jami-libjami-headers-search.patch \
%D%/packages/patches/jami-qml-tests-discovery.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 \
@ -1557,6 +1560,7 @@ dist_patch_DATA = \
%D%/packages/patches/libgnome-encoding.patch \
%D%/packages/patches/libgnomeui-utf8.patch \
%D%/packages/patches/libgrss-CVE-2016-2001.patch \
%D%/packages/patches/libjami-ac-config-files.patch \
%D%/packages/patches/libjxr-fix-function-signature.patch \
%D%/packages/patches/libjxr-fix-typos.patch \
%D%/packages/patches/libofa-ftbfs-1.diff \

View file

@ -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 @@ (define-module (gnu packages jami)
#: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 @@ (define-module (gnu packages jami)
#: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 @@ (define-module (gnu packages jami)
#: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 @@ (define-public libjami
;; 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 @@ (define-public libjami
(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 @@ (define-public libjami
openssl
pjproject-jami
pulseaudio
sdbus-c++
speex
speexdsp
webrtc-audio-processing
@ -214,15 +230,29 @@ (define sortfilterproxymodel
(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 @@ (define-public jami
"-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 @@ (define-public jami
(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 @@ (define-public jami
;; 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 @@ (define-public jami
libnotify
libxcb
libxkbcommon
md4c
network-manager
qrencode
qt5compat
@ -290,6 +319,7 @@ (define-public jami
qtnetworkauth
qtpositioning
qtsvg
tidy-html ;used by src/app/htmlparser.h
vulkan-loader))
(home-page "https://jami.net")
(synopsis "Qt Jami client")

View file

@ -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 ########

View file

@ -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

View file

@ -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}

View file

@ -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

View file

@ -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

View file

@ -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