[PATCH 00/12] Update jami and add jami-qt

  • Done
  • quality assurance status badge
Details
3 participants
  • Jack Hill
  • Maxim Cournoyer
  • Maxime Devos
Owner
unassigned
Submitted by
Maxim Cournoyer
Severity
normal
M
M
Maxim Cournoyer wrote on 31 Mar 2021 07:14
(address . guix-patches@gnu.org)
87y2e3kifn.fsf@gmail.com
Hello!

I've finally picked up the packaging of Jami, which was becoming quite
outdated in Guix. I haven't had much time to test the result yet, but a
priori it seems to function as intended.

Let me know how it works for you!

Maxim

Maxim Cournoyer (12):
gnu: asio: Update to 1.18.1.
gnu: restbed: Update to 4.7.
gnu: restinio: Update to 0.6.13.
gnu: Add nettle-3.7.
gnu: opendht: Update to 2.2.0rc4.
gnu: pjproject: Update to 2.11.
gnu: pjproject-jami: Fix CVE-2020-15260 and CVE-2021-21375.
ffmpeg-jami: Patch with the patches from Jami 20210326.1.cfba013.
gnu: libring: Update to 20210326.1.cfba013.
gnu: libringclient: Update to 20210326.1.cfba013.
gnu: jami: Update to 20210326.1.cfba013 and rename to jami-gnome.
gnu: Add jami-qt.

gnu/local.mk | 1 -
gnu/packages/emulators.scm | 2 +-
gnu/packages/jami.scm | 287 ++++++++++++--------
gnu/packages/nettle.scm | 17 +-
gnu/packages/networking.scm | 131 +++++----
gnu/packages/patches/opendht-fix-jami.patch | 33 ---
gnu/packages/telephony.scm | 22 +-
7 files changed, 272 insertions(+), 221 deletions(-)
delete mode 100644 gnu/packages/patches/opendht-fix-jami.patch

--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 07:23
[PATCH 01/12] gnu: asio: Update to 1.18.1.
(address . 47513@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210331052348.5164-1-maxim.cournoyer@gmail.com
* gnu/packages/networking.scm (asio): Update to 1.18.1.
(asio-1.12): New variable.
* gnu/packages/emulators.scm (mame)[inputs]: Use asio-1.12, otherwise it fails
to build.
---
gnu/packages/emulators.scm | 2 +-
gnu/packages/networking.scm | 17 +++++++++++++++--
2 files changed, 16 insertions(+), 3 deletions(-)

Toggle diff (57 lines)
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 1cd23c3e6c..cfe909b3a6 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1743,7 +1743,7 @@ This is a part of the TiLP project.")
("texinfo" ,texinfo)))
(inputs
`(("alsa-lib" ,alsa-lib)
- ("asio" ,asio)
+ ("asio" ,asio-1.12) ;the bundled copy is at 1.11
("expat" ,expat)
("flac" ,flac)
("fontconfig" ,fontconfig)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index ecc6f57f4e..fe2499815b 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -26,7 +26,7 @@
;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
-;;; Copyright © 2019, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Vasile Dumitrascu <va511e@yahoo.com>
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
@@ -3027,7 +3027,8 @@ eight bytes) tools
;; Either BSD-3 or GPL-2 can be used.
(license (list license:bsd-3 license:gpl2))))
-(define-public asio
+;;; This is an old version required by rested.
+(define-public asio-1.12
(package
(name "asio")
(version "1.12.2")
@@ -3054,6 +3055,18 @@ low-level I/O programming that provides developers with a consistent
asynchronous model using a modern C++ approach.")
(license license:boost1.0)))
+(define-public asio
+ (package
+ (inherit asio-1.12)
+ (version "1.18.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/asio/asio/"
+ version " (Stable)/asio-" version ".tar.bz2"))
+ (sha256
+ (base32 "04wi69d72l1p5c7d63z1dz06zn8pdqsbgx1if98dszs9ymfqgyaa"))))))
+
(define-public shadowsocks
;; There are some security fixes after the last release.
(let* ((commit "e332ec93e9c90f1cbee676b022bf2c5d5b7b1239")
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 07:23
[PATCH 02/12] gnu: restbed: Update to 4.7.
(address . 47513@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210331052348.5164-2-maxim.cournoyer@gmail.com
* gnu/packages/networking.scm (restbed): Update to 4.7.
---
gnu/packages/networking.scm | 97 ++++++++++++++++++-------------------
1 file changed, 48 insertions(+), 49 deletions(-)

Toggle diff (112 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index fe2499815b..ff0ccc95fc 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -3332,57 +3332,56 @@ never see any machines other than the one Dante is running on.")
(license (license:non-copyleft "file://LICENSE"))))
(define-public restbed
- (let ((commit "6eb385fa9051203f28bf96cc1844bbb5a9a6481f"))
- (package
- (name "restbed")
- (version (git-version "4.6" "1" commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/Corvusoft/restbed/")
- (commit commit)))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32 "0k60i5drklqqrb4khb25fzkgz9y0sncxf1sp6lh2bm1m0gh0661n"))))
- (build-system cmake-build-system)
- (inputs
- `(("asio" ,asio)
- ("catch" ,catch-framework)
- ("openssl" ,openssl)))
- (arguments
- `(#:tests? #f
- #:configure-flags
- '("-DBUILD_TESTS=NO"
- "-DBUILD_EXAMPLES=NO"
- "-DBUILD_SSL=NO"
- "-DBUILD_SHARED=NO")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'apply-patches-and-fix-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((asio (assoc-ref inputs "asio"))
- (catch (assoc-ref inputs "catch"))
- (openssl (assoc-ref inputs "openssl")))
- (substitute* "cmake/Findasio.cmake"
- (("(find_path\\( asio_INCLUDE asio\\.hpp HINTS ).*$" all begin)
- (string-append begin " \"" asio "/include\" )")))
- (substitute* "cmake/Findcatch.cmake"
- (("(find_path\\( catch_INCLUDE catch\\.hpp HINTS ).*$" all begin)
- (string-append begin " \"" catch "/include\" )")))
- (substitute* "cmake/Findopenssl.cmake"
- (("(find_library\\( ssl_LIBRARY ssl ssleay32 HINTS ).*$" all begin)
- (string-append begin " \"" openssl "/lib\" )"))
- (("(find_library\\( crypto_LIBRARY crypto libeay32 HINTS ).*$" all begin)
- (string-append begin " \"" openssl "/lib\" )"))
- (("(find_path\\( ssl_INCLUDE openssl/ssl\\.h HINTS ).*$" all begin)
- (string-append begin " \"" openssl "/include\" )")))))))))
- (synopsis "Asynchronous RESTful functionality to C++11 applications")
- (description "Restbed is a comprehensive and consistent programming
+ (package
+ (name "restbed")
+ (version "4.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Corvusoft/restbed/")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "055qicb773a599dsqbcz5xf0xj1wpk33mdrkyi0fsmyjmn8d2p9d"))))
+ (build-system cmake-build-system)
+ (inputs
+ `(("asio" ,asio-1.12)
+ ("catch" ,catch-framework)
+ ("openssl" ,openssl)))
+ (arguments
+ `(#:tests? #f
+ #:configure-flags
+ '("-DBUILD_TESTS=NO"
+ "-DBUILD_EXAMPLES=NO"
+ "-DBUILD_SSL=NO"
+ "-DBUILD_SHARED=NO")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'apply-patches-and-fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((asio (assoc-ref inputs "asio"))
+ (catch (assoc-ref inputs "catch"))
+ (openssl (assoc-ref inputs "openssl")))
+ (substitute* "cmake/Findasio.cmake"
+ (("(find_path\\( asio_INCLUDE asio\\.hpp HINTS ).*$" all begin)
+ (string-append begin " \"" asio "/include\" )")))
+ (substitute* "cmake/Findcatch.cmake"
+ (("(find_path\\( catch_INCLUDE catch\\.hpp HINTS ).*$" all begin)
+ (string-append begin " \"" catch "/include\" )")))
+ (substitute* "cmake/Findopenssl.cmake"
+ (("(find_library\\( ssl_LIBRARY ssl ssleay32 HINTS ).*$" all begin)
+ (string-append begin " \"" openssl "/lib\" )"))
+ (("(find_library\\( crypto_LIBRARY crypto libeay32 HINTS ).*$" all begin)
+ (string-append begin " \"" openssl "/lib\" )"))
+ (("(find_path\\( ssl_INCLUDE openssl/ssl\\.h HINTS ).*$" all begin)
+ (string-append begin " \"" openssl "/include\" )")))))))))
+ (synopsis "Asynchronous RESTful functionality to C++11 applications")
+ (description "Restbed is a comprehensive and consistent programming
model for building applications that require seamless and secure
communication over HTTP.")
- (home-page "https://github.com/Corvusoft/restbed")
- (license license:agpl3+))))
+ (home-page "https://github.com/Corvusoft/restbed")
+ (license license:agpl3+)))
(define-public restinio
(package
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 07:23
[PATCH 03/12] gnu: restinio: Update to 0.6.13.
(address . 47513@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210331052348.5164-3-maxim.cournoyer@gmail.com
* gnu/packages/networking.scm (restinio): Update to 0.6.13.
---
gnu/packages/networking.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index ff0ccc95fc..464192ad7e 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -3386,7 +3386,7 @@ communication over HTTP.")
(define-public restinio
(package
(name "restinio")
- (version "0.6.1.1")
+ (version "0.6.13")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -3395,7 +3395,7 @@ communication over HTTP.")
(file-name (git-file-name name version))
(sha256
(base32
- "141a96hx8zhcdv121g6cs91n46kb47y040v25pnvz5f54964z7f5"))))
+ "0gb0yc88hdzwm08zdiviay6s08q427za33kfbygib7bdzp2wr2dm"))))
(build-system cmake-build-system)
(inputs ; TODO: Need to force-keep references on some inputs, e.g. boost.
`(("zlib" ,zlib)
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 07:23
[PATCH 04/12] gnu: Add nettle-3.7.
(address . 47513@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210331052348.5164-4-maxim.cournoyer@gmail.com
While nettle cannot be upgraded wholesale on the master branch, we can at
least also offer the latest version available.

* gnu/packages/nettle.scm (nettle-3.5, nettle-3.7): New variables.
(nettle): Redefine as a binding to nettle-3.5, which is the current version.
---
gnu/packages/nettle.scm | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)

Toggle diff (41 lines)
diff --git a/gnu/packages/nettle.scm b/gnu/packages/nettle.scm
index f5e7188ff0..753e2d6e7e 100644
--- a/gnu/packages/nettle.scm
+++ b/gnu/packages/nettle.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -71,7 +72,7 @@ cryptographic toolkits for object-oriented languages or in applications
themselves.")
(license gpl2+)))
-(define-public nettle
+(define-public nettle-3.5
;; This version is not API-compatible with version 2. In particular, lsh
;; cannot use it yet. So keep it separate.
(package (inherit nettle-2)
@@ -89,3 +90,17 @@ themselves.")
;; Build "fat" binaries where the right implementation is chosen
;; at run time based on CPU features (starting from 3.1.)
`(cons "--enable-fat" ,flags))))))
+
+(define-public nettle-3.7
+ (package (inherit nettle-3.5)
+ (version "3.7.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/nettle/nettle-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0qpi1qp3bcvqdsaxy2pzg530db95x8qjahkynxgwvr6dy5760ald"))))))
+
+;;; Upgrading Nettle on master would cause 10000+ packages to be rebuilt.
+(define-public nettle nettle-3.5)
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 07:23
[PATCH 06/12] gnu: pjproject: Update to 2.11.
(address . 47513@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210331052348.5164-6-maxim.cournoyer@gmail.com
* gnu/packages/telephony.scm (pjproject): Update to 2.11. Remove trailing #t.
[patches]: Delete field. The patches are preserved because pjproject-jami
still needs them.
---
gnu/packages/telephony.scm | 22 +++++++---------------
1 file changed, 7 insertions(+), 15 deletions(-)

Toggle diff (78 lines)
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 5c8d247e68..af7148bf84 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -17,7 +17,7 @@
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
-;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2021 LibreMiami <packaging-guix@libremiami.org>
;;;
@@ -723,7 +723,7 @@ your calls and messages.")
(define-public pjproject
(package
(name "pjproject")
- (version "2.10")
+ (version "2.11")
(source
(origin
(method git-fetch)
@@ -733,12 +733,8 @@ your calls and messages.")
(file-name (git-file-name name version))
(sha256
(base32
- "1aklicpgwc88578k03i5d5cm5h8mfm7hmx8vfprchbmaa2p8f4z0"))
+ "1kn9g1x1vmh4130ghph8mldz5m89gsjs4vpdzlzm98m3808gk5an"))
(modules '((guix build utils)))
- ;; The patches upstream status can be tracked at:
- ;; https://github.com/pjsip/pjproject/pull/2501.
- (patches (search-patches "pjproject-correct-the-cflags-field.patch"
- "pjproject-fix-pkg-config-ldflags.patch"))
(snippet
'(begin
;; Remove bundled libraries.
@@ -746,8 +742,7 @@ your calls and messages.")
(substitute* "aconfigure.ac"
(("third_party/build/os-auto.mak") ""))
(substitute* "Makefile"
- (("third_party/build") ""))
- #t))))
+ (("third_party/build") ""))))))
(build-system gnu-build-system)
(outputs '("out" "debug" "static"))
(arguments
@@ -785,8 +780,7 @@ your calls and messages.")
;; Make all the files writable to prevent the following error:
;; "autom4te: cannot open aconfigure: Permission denied".
(lambda _
- (for-each make-file-writable (find-files "."))
- #t))
+ (for-each make-file-writable (find-files "."))))
(add-before 'build 'build-dep
(lambda _ (invoke "make" "dep")))
;; The check phases is moved after the install phase so to
@@ -800,8 +794,7 @@ your calls and messages.")
(with-directory-excursion out
(for-each (lambda (f)
(rename-file f (string-append s "/" (basename f))))
- (find-files "." "\\.a$")))
- #t)))
+ (find-files "." "\\.a$"))))))
(add-after 'install 'check
(assoc-ref %standard-phases 'check))
(add-before 'patch-source-shebangs 'autoconf
@@ -844,8 +837,7 @@ your calls and messages.")
;; Disable the pjnath and pjsua tests, which require an actual
;; network and an actual sound card, respectively.
(("pjnath-test pjmedia-test pjsip-test pjsua-test")
- "pjmedia-test pjsip-test"))
- #t)))))
+ "pjmedia-test pjsip-test")))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 07:23
[PATCH 05/12] gnu: opendht: Update to 2.2.0rc4.
(address . 47513@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210331052348.5164-5-maxim.cournoyer@gmail.com
* gnu/packages/patches/opendht-fix-jami.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): Un-register it.
* gnu/packages/networking.scm (opendht): Update to 2.2.0rc4.
[patches]: Remove field.
[inputs]: Use nettle-3.7.
[native-inputs]: Move restinio to...
[propagated-inputs]: ... here.
---
gnu/local.mk | 1 -
gnu/packages/networking.scm | 13 ++++----
gnu/packages/patches/opendht-fix-jami.patch | 33 ---------------------
3 files changed, 6 insertions(+), 41 deletions(-)
delete mode 100644 gnu/packages/patches/opendht-fix-jami.patch

Toggle diff (95 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index deb4ddcede..9bc7ae7564 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1469,7 +1469,6 @@ dist_patch_DATA = \
%D%/packages/patches/opencascade-oce-glibc-2.26.patch \
%D%/packages/patches/opencv-fix-build-of-grfmt_jpeg2000.cpp.patch \
%D%/packages/patches/opencv-rgbd-aarch64-test-fix.patch \
- %D%/packages/patches/opendht-fix-jami.patch \
%D%/packages/patches/openfoam-4.1-cleanup.patch \
%D%/packages/patches/openjdk-10-idlj-reproducibility.patch \
%D%/packages/patches/openmpi-mtl-priorities.patch \
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 464192ad7e..7a09c48651 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -3428,40 +3428,39 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
(define-public opendht
(package
(name "opendht")
- (version "2.1.4")
+ (version "2.2.0rc4") ;jami requires >= 2.2.0
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/savoirfairelinux/opendht")
(commit version)))
(file-name (git-file-name name version))
- (patches (search-patches "opendht-fix-jami.patch"))
(sha256
(base32
- "1ax26ri1ifb6s8ppd28jmanka9yf8mw3np65q2h4djhhik0phhal"))))
+ "1wc0f6cnvnlmhxnx64nxqgsx93k4g7ljdaqjl40ml74jg3nqrzcl"))))
;; Since 2.0, the gnu-build-system does not seem to work anymore, upstream bug?
(build-system cmake-build-system)
(inputs
`(("argon2" ,argon2)
- ("nettle" ,nettle)
+ ("nettle" ,nettle-3.7)
("readline" ,readline)
("jsoncpp" ,jsoncpp)
("openssl" ,openssl) ;required for the DHT proxy
("fmt" ,fmt)))
(propagated-inputs
`(("gnutls" ,gnutls) ;included in opendht/crypto.h
- ("msgpack" ,msgpack))) ;included in several installed headers
+ ("msgpack" ,msgpack) ;included in several installed headers
+ ("restinio" ,restinio))) ;included in opendht/http.h
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("pkg-config" ,pkg-config)
- ("restinio" ,restinio) ;headers only library
("libtool" ,libtool)
("cppunit" ,cppunit)))
(arguments
`(#:tests? #f ; Tests require network connection.
#:configure-flags
- '(;; "-DOPENDHT_TESTS=on"
+ '(;;"-DOPENDHT_TESTS=on"
"-DOPENDHT_TOOLS=off"
"-DOPENDHT_PYTHON=off"
"-DOPENDHT_PROXY_SERVER=on"
diff --git a/gnu/packages/patches/opendht-fix-jami.patch b/gnu/packages/patches/opendht-fix-jami.patch
deleted file mode 100644
index 9718a84a41..0000000000
--- a/gnu/packages/patches/opendht-fix-jami.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From e2b39dd3a0742853e00f9c3e8c46c911da20bed7 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
-Date: Tue, 30 Jun 2020 10:42:49 -0400
-Subject: [PATCH 1/4] http/request: make terminate public
-
----
- include/opendht/http.h | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/include/opendht/http.h b/include/opendht/http.h
-index cc8d5f9..46b722c 100644
---- a/include/opendht/http.h
-+++ b/include/opendht/http.h
-@@ -294,6 +294,7 @@ public:
- * User action to cancel the Request and call the completion callbacks.
- */
- void cancel();
-+ void terminate(const asio::error_code& ec);
-
- private:
- using OnCompleteCb = std::function<void()>;
-@@ -320,8 +321,6 @@ private:
-
- void connect(std::vector<asio::ip::tcp::endpoint>&& endpoints, HandlerCb cb = {});
-
-- void terminate(const asio::error_code& ec);
--
- void post();
-
- void handle_request(const asio::error_code& ec);
---
-2.27.0
-
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 07:23
[PATCH 07/12] gnu: pjproject-jami: Fix CVE-2020-15260 and CVE-2021-21375.
(address . 47513@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210331052348.5164-7-maxim.cournoyer@gmail.com
The custom pjproject package used by Jami is updated with the latest patches
found in the 20210326.1.cfba013 release of Jami.

* gnu/packages/jami.scm (%jami-version): Update to 20210326.1.cfba013.
(jami-source) [snippet]: Update comment. Add client-electron and client-ios
to the list of deleted directories. Remove client-windows from the list, as
it no longer exists.
(jami-apply-dependency-patches): Update comment. Ignore whitespace
when applying patches, otherwise the pjproject patches would not apply.
(pjproject-jami): Add comment.
[source]: Define the source; the parent pjproject package was
updated was updated to 2.11, but the patches only apply against 2.10.
[phases] <apply-patches>: Update the list of patches used with those found in
the release tarball.
---
gnu/packages/jami.scm | 52 ++++++++++++++++++++++++++++++-------------
1 file changed, 36 insertions(+), 16 deletions(-)

Toggle diff (119 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 3773c1ab0a..35d84bb37b 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 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -63,7 +63,7 @@
#:use-module (guix utils)
#:use-module (srfi srfi-1))
-(define %jami-version "20200710.1.6bd18d2")
+(define %jami-version "20210326.1.cfba013")
(define* (jami-source #:key keep-contrib-patches?)
"Return an origin object of the tarball release sources archive of Jami.
@@ -78,7 +78,7 @@ of Jami."
(modules '((guix build utils)))
(snippet
`(begin
- ;; Delete over 200 MiB of bundled tarballs. The contrib directory
+ ;; Delete multiple MiBs of bundled tarballs. The contrib directory
;; contains the custom patches for pjproject and other libraries used
;; by Savoir-faire Linux.
(if ,keep-contrib-patches?
@@ -86,21 +86,21 @@ of Jami."
(delete-file-recursively "daemon/contrib"))
;; Remove code from unused Jami clients.
(for-each delete-file-recursively '("client-android"
+ "client-electron"
+ "client-ios"
"client-macosx"
- "client-uwp"
- "client-windows"))
- #t))
+ "client-uwp"))))
(sha256
(base32
- "0lg61jv39x7kc9lq30by246xb6gcgp1rzj49ak7ff8nqpfzyfvva"))))
+ "1h0avma8bdzyznkz39crjyv2888bii4f49md15jg7970dyp5pdyz"))))
(define %sfl-patches (jami-source #:keep-contrib-patches? #t))
(define %jami-sources (jami-source))
-;; Savoir-faire Linux modifies many libraries to add features
-;; to Jami. This procedure makes applying patches to a given
-;; package easy.
+;; Savoir-faire Linux maintains a set of patches for some key dependencies
+;; (currently pjproject and ffmpeg) of Jami that haven't yet been integrated
+;; upstream. This procedure simplifies the process of applying these patches.x
(define jami-apply-dependency-patches
'(lambda* (#:key inputs dep-name patches)
(let ((patches-directory "sfl-patches"))
@@ -112,15 +112,30 @@ of Jami."
dep-name))
(for-each
(lambda (file)
- (invoke "patch" "--force" "-p1" "-i"
+ (invoke "patch" "--force" "--ignore-whitespace" "-p1" "-i"
(string-append patches-directory "/"
file ".patch")))
patches))))
+;;; Jami maintains pjproject patches that add the ability to do ICE over TCP,
+;;; among other things. The patches are currently based on pjproject 2.10.
(define-public pjproject-jami
(package
(inherit pjproject)
(name "pjproject-jami")
+ (version "2.10")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pjsip/pjproject")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1aklicpgwc88578k03i5d5cm5h8mfm7hmx8vfprchbmaa2p8f4z0"))
+ (patches (search-patches
+ "pjproject-correct-the-cflags-field.patch"
+ "pjproject-fix-pkg-config-ldflags.patch"))))
(native-inputs
`(("sfl-patches" ,%sfl-patches)
,@(package-native-inputs pjproject)))
@@ -140,14 +155,19 @@ of Jami."
"0004-multiple_listeners"
"0005-fix_ebusy_turn"
"0006-ignore_ipv6_on_transport_check"
- "0007-pj_ice_sess"
+ "0007-upnp-srflx-nat-assisted-cand"
"0008-fix_ioqueue_ipv6_sendto"
"0009-add-config-site"
- ;; Note: The base pjproject is already patched with
- ;; "0010-fix-pkgconfig".
+ ;; Already taken care of via the origin patches.
+ ;;"0010-fix-pkgconfig"
"0011-fix-tcp-death-detection"
- "0012-fix-turn-shutdown-crash"))
- #t))))))))
+ "0012-fix-turn-shutdown-crash"
+ "0013-Assign-unique-local-preferences-for-candidates-with-"
+ "0014-Add-new-compile-time-setting-PJ_ICE_ST_USE_TURN_PERM"
+ "0015-update-local-preference-for-peer-reflexive-candidate"
+ "0016-use-addrinfo-instead-CFHOST"
+ "0017-CVE-2020-15260"
+ "0018-CVE-2021-21375"))))))))))
;; The following variables are configure flags used by ffmpeg-jami. They're
;; from the ring-project/daemon/contrib/src/ffmpeg/rules.mak file. We try to
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 07:23
[PATCH 08/12] ffmpeg-jami: Patch with the patches from Jami 20210326.1.cfba013.
(address . 47513@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210331052348.5164-8-maxim.cournoyer@gmail.com
* gnu/packages/jami.scm (ffmpeg-jami): Remove trailing #t.
[phases] <apply-patches>: Add libopusdec-enable-FEC and
libopusenc-enable-FEC to the list of patches to apply.
---
gnu/packages/jami.scm | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)

Toggle diff (38 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 35d84bb37b..9d5d00c60c 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -403,21 +403,22 @@ of Jami."
`(modify-phases ,phases
(add-after 'unpack 'make-git-checkout-writable
(lambda _
- (for-each make-file-writable (find-files "."))
- #t))
+ (for-each make-file-writable (find-files "."))))
(add-after 'unpack 'apply-patches
(lambda* (#:key inputs #:allow-other-keys)
(let ((jami-apply-dependency-patches
,jami-apply-dependency-patches))
;; These patches come from:
;; "ring-project/daemon/contrib/src/ffmpeg/rules.mak".
- (jami-apply-dependency-patches #:inputs inputs
- #:dep-name "ffmpeg"
- #:patches
- '("remove-mjpeg-log"
- "change-RTCP-ratio"
- "rtp_ext_abs_send_time"))
- #t))))))))))
+ (jami-apply-dependency-patches
+ #:inputs inputs
+ #:dep-name "ffmpeg"
+ #:patches
+ '("remove-mjpeg-log"
+ "change-RTCP-ratio"
+ "rtp_ext_abs_send_time"
+ "libopusdec-enable-FEC"
+ "libopusenc-enable-FEC"))))))))))))
(define-public libring
(package
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 07:23
[PATCH 09/12] gnu: libring: Update to 20210326.1.cfba013.
(address . 47513@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210331052348.5164-9-maxim.cournoyer@gmail.com
* gnu/packages/jami.scm (libring): Update to 20210326.1.cfba013. Remove
trailing #t.
[inputs]: Remove boost, flac, gmp, gsm, libogg, libva, opus, pcre,
libsamplerate, libsndfile, libvorbis, libx264, libvdpau, zlib, python,
python-wrapper, restinio, and libx11. Add webrtc-audio-processing.
[native-inputs]: Remove cppunit. Add gcc-8.
[make-flags]: Add the V=1 flag.
[synopsis]: More explicitly describe what this component is.
[description]: Describe the specifics before the generalities.
---
gnu/packages/jami.scm | 61 ++++++++++++++-----------------------------
1 file changed, 20 insertions(+), 41 deletions(-)

Toggle diff (105 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 9d5d00c60c..ddb4b35349 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -31,6 +31,7 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
#:use-module (gnu packages documentation)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
@@ -428,71 +429,49 @@ of Jami."
(build-system gnu-build-system)
(inputs
`(("alsa-lib" ,alsa-lib)
- ("boost" ,boost)
+ ("asio" ,asio)
("dbus-c++" ,dbus-c++)
("eudev" ,eudev)
("ffmpeg" ,ffmpeg-jami)
- ("flac" ,flac)
- ("gmp" ,gmp)
- ("gsm" ,gsm)
("jack" ,jack-1)
("jsoncpp" ,jsoncpp)
("libarchive" ,libarchive)
("libnatpmp" ,libnatpmp)
- ("libogg" ,libogg)
- ("libva" ,libva)
+ ("libsecp256k1" ,libsecp256k1)
+ ("libupnp" ,libupnp)
("opendht" ,opendht)
- ("opus" ,opus)
- ("pcre" ,pcre)
+ ("openssl" ,openssl)
+ ("pjproject" ,pjproject-jami)
("pulseaudio" ,pulseaudio)
- ("libsamplerate" ,libsamplerate)
- ("libsndfile" ,libsndfile)
("speex" ,speex)
("speexdsp" ,speexdsp)
- ("libupnp" ,libupnp)
- ("libvorbis" ,libvorbis)
- ("libx264" ,libx264)
- ("libvdpau" ,libvdpau)
- ("yaml-cpp" ,yaml-cpp)
- ("zlib" ,zlib)
- ("openssl" ,openssl)
- ("libsecp256k1" ,libsecp256k1)
- ("python" ,python)
- ("python-wrapper" ,python-wrapper)
- ("restinio" ,restinio)
- ("libx11" ,libx11)
- ("asio" ,asio)
- ;; TODO: Upstream seems to rely on a custom pjproject (a.k.a. pjsip) version.
- ;; See https://git.jami.net/savoirfairelinux/ring-daemon/issues/24.
- ("pjproject" ,pjproject-jami)))
+ ("webrtc-audio-processing" ,webrtc-audio-processing)
+ ("yaml-cpp" ,yaml-cpp)))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
+ ("gcc" ,gcc-8) ;charconv requires GCC 8.1+
("libtool" ,libtool)
+ ("perl" ,perl) ;to generate manpages with pod2man
("pkg-config" ,pkg-config)
- ("which" ,which)
- ("cppunit" ,cppunit)
- ("perl" ,perl))) ; Needed for documentation.
+ ("which" ,which)))
(arguments
`(#:tests? #f ; The tests fail to compile due to missing headers.
+ #:make-flags '("V=1") ;build verbosely
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'change-directory
(lambda _
- (chdir "daemon")
- #t))
+ (chdir "daemon")))
(add-before 'build 'add-lib-dir
(lambda _
- (mkdir-p "src/lib")
- #t)))))
- (synopsis "Distributed multimedia communications platform")
- (description "Jami (formerly GNU Ring) 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.
-
-This package provides a library and daemon implementing the Jami core
-functionality.")
+ (mkdir-p "src/lib"))))))
+ (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
+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+)))
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 07:23
[PATCH 10/12] gnu: libringclient: Update to 20210326.1.cfba013.
(address . 47513@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210331052348.5164-10-maxim.cournoyer@gmail.com
* gnu/packages/jami.scm (libringclient): Update to 20210326.1.cfba013. Remove
trailing #t. Do not inherit from libring.
[version, source]: Specify fields.
[propagated-inputs]: Remove qttools. Move libring to ...
[inputs]: ... here. Add network-manager.
[configure-flags] Define the RING_XML_INTERFACES_DIR variable.
[phases]{fix-dbus-interfaces-path}: Delete.
[synopsis]: More explicitly describe what this component is.
[description]: Describe the specifics before the generalities.
---
gnu/packages/jami.scm | 38 +++++++++++++++++---------------------
1 file changed, 17 insertions(+), 21 deletions(-)

Toggle diff (61 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index ddb4b35349..41fa69dd48 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -477,37 +477,33 @@ protocols, as well as decentralized calling using P2P-DHT.")
(define-public libringclient
(package
- (inherit libring)
(name "libringclient")
+ (version %jami-version)
+ (source %jami-sources)
(build-system cmake-build-system)
+ (inputs
+ `(("libring" ,libring)
+ ("network-manager" ,network-manager)))
(propagated-inputs
- `(("libring" ,libring) ; For 'dring'.
- ("qtbase" ,qtbase) ; Qt is included in several installed headers.
- ("qttools" ,qttools)))
+ `(("qtbase" ,qtbase))) ; Qt is included in several installed headers.
(arguments
`(#:tests? #f ; There is no testsuite.
#:configure-flags
- (list (string-append "-DRING_BUILD_DIR="
- (assoc-ref %build-inputs "libring") "/include"))
+ (let ((libring (assoc-ref %build-inputs "libring")))
+ (list (string-append "-DRING_XML_INTERFACES_DIR="
+ libring "/share/dbus-1/interfaces")
+ (string-append "-DRING_BUILD_DIR=" libring "/include")))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'change-directory
(lambda _
- (chdir "lrc")
- #t))
- (add-before 'configure 'fix-dbus-interfaces-path
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "CMakeLists.txt"
- (("\\$\\{CMAKE_INSTALL_PREFIX\\}(/share/dbus-1/interfaces)" _ dbus-interfaces-path-suffix)
- (string-append (assoc-ref inputs "libring")
- dbus-interfaces-path-suffix))))))))
- (synopsis "Distributed multimedia communications platform")
- (description "Jami (formerly GNU Ring) 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.
-
-This package provides a library common to all Jami clients.")
+ (chdir "lrc"))))))
+ (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+)))
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 07:23
[PATCH 11/12] gnu: jami: Update to 20210326.1.cfba013 and rename to jami-gnome.
(address . 47513@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210331052348.5164-11-maxim.cournoyer@gmail.com
* gnu/packages/jami.scm (jami): Update to 20210326.1.cfba013. Rename to ...
(jami-gnome): In prevision of the soon released Jami Qt client.
(jami): Define as obsoleted by jami-gnome.
[inputs]: Sort lexico-graphically. Add libappindicator and network-manager.
[native-inputs]: Add a comment and fix a typo. Remove doxygen.
[propagated-inputs]: Remove evolution-data-server.
[synopsis]: More explicitly describe what this package is.
[description]: Describe the specifics before the generalities.
---
gnu/packages/jami.scm | 53 +++++++++++++++++++++++--------------------
1 file changed, 29 insertions(+), 24 deletions(-)

Toggle diff (87 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 41fa69dd48..79dbb39f5a 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -31,6 +31,7 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
#:use-module (gnu packages documentation)
+ #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
@@ -507,44 +508,48 @@ decentralized calling using P2P-DHT.")
(home-page "https://jami.net")
(license license:gpl3+)))
-(define-public jami
+(define-public jami-gnome
(package
- (inherit libring)
- (name "jami")
+ (name "jami-gnome")
+ (version %jami-version)
+ (source %jami-sources)
(build-system cmake-build-system)
(inputs
- `(("libringclient" ,libringclient)
- ("gtk+" ,gtk+)
- ("qrencode" ,qrencode)
- ("libnotify" ,libnotify)
- ("clutter" ,clutter)
+ `(("clutter" ,clutter)
("clutter-gtk" ,clutter-gtk)
+ ("gtk+" ,gtk+)
("libcanberra" ,libcanberra)
- ("webkitgtk" ,webkitgtk)
- ("sqlite" ,sqlite)))
+ ("libappindicator" ,libappindicator)
+ ("libnotify" ,libnotify)
+ ("libringclient" ,libringclient)
+ ("network-manager" ,network-manager)
+ ("qrencode" ,qrencode)
+ ("sqlite" ,sqlite)
+ ("webkitgtk" ,webkitgtk)))
(native-inputs
`(("pkg-config" ,pkg-config)
("gettext" ,gettext-minimal)
- ("glib:bin" ,glib "bin")
- ("doxygen" ,doxygen)))
+ ("glib:bin" ,glib "bin"))) ;for glib-compile-resources
(propagated-inputs
- `(("libring" ,libring) ; Contains `dring', the daemon, which is automatically by d-bus.
- ("adwaita-icon-theme" ,adwaita-icon-theme)
- ("evolution-data-server" ,evolution-data-server)))
+ `(("libring" ,libring) ; Contains 'dring', the daemon, which is
+ ; automatically started by DBus.
+ ("adwaita-icon-theme" ,adwaita-icon-theme)))
(arguments
`(#:tests? #f ; There is no testsuite.
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'change-directory
(lambda _
- (chdir "client-gnome")
- #t)))))
- (synopsis "Distributed, privacy-respecting communication program")
- (description "Jami (formerly GNU Ring) 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.
-
-This package provides the Jami client for the GNOME desktop.")
+ (chdir "client-gnome"))))))
+ (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+)))
+
+;;; Keep this until the Qt client matures enough to become the
+;;; main 'jami' client.
+(deprecated-package jami jami-gnome)
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 07:23
[PATCH 12/12] gnu: Add jami-qt.
(address . 47513@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20210331052348.5164-12-maxim.cournoyer@gmail.com
* gnu/packages/jami.scm (jami-qt): New variable.
---
gnu/packages/jami.scm | 66 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 66 insertions(+)

Toggle diff (90 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 79dbb39f5a..67befe63a2 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -36,6 +36,7 @@
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
+ #:use-module (gnu packages graphviz)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libcanberra)
#:use-module (gnu packages linux)
@@ -59,6 +60,7 @@
#:use-module (gnu packages)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system qt)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix packages)
@@ -553,3 +555,67 @@ decentralized calling using P2P-DHT.")
;;; Keep this until the Qt client matures enough to become the
;;; main 'jami' client.
(deprecated-package jami jami-gnome)
+
+(define-public jami-qt
+ (package
+ (name "jami-qt") ;to be renamed 'jami' at some point
+ (version %jami-version)
+ ;; The Qt client code is not yet part of the release tarball; fetch it
+ ;; from git for now.
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.jami.net/savoirfairelinux/jami-client-qt.git")
+ (commit "ae21c17da5e8f730ae3895ccbc4da8047e3be1eb")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1rf3lpk8c4qc12pi6pn4rdp7i8b83xv64yqr0q47rzv9s518qyjp"))))
+ (build-system qt-build-system)
+ (arguments
+ `(#:tests? #f ;no test suite
+ #:phases
+ (modify-phases %standard-phases
+ ;; TODO: Uncomment after switching back to the tarball source.
+ ;; (add-after 'unpack 'change-directory
+ ;; (lambda _
+ ;; (chdir "client-qt")))
+ (add-after 'install 'wrap
+ ;; The program fails to find the QtWebEngineProcess program, so we
+ ;; set QTWEBENGINEPROCESS_PATH to help it.
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
+ (qtwebengineprocess (string-append
+ (assoc-ref inputs "qtwebengine")
+ "/lib/qt5/libexec/QtWebEngineProcess")))
+ (for-each (lambda (program)
+ (wrap-program program
+ `("QTWEBENGINEPROCESS_PATH" =
+ (,qtwebengineprocess))))
+ (find-files bin ".*"))))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("qttools" ,qttools)
+ ("doxygen" ,doxygen)
+ ("graphviz" ,graphviz)))
+ (inputs
+ `(("network-manager" ,network-manager)
+ ("qrencode" ,qrencode)
+ ("qtsvg" ,qtsvg)
+ ("qtwebengine" ,qtwebengine)
+ ("qtwebchannel" ,qtwebchannel)
+ ("qtmultimedia" ,qtmultimedia)
+ ("qtdeclarative" ,qtdeclarative)
+ ("qtgraphicaleffects" ,qtgraphicaleffects)
+ ("qtquickcontrols" ,qtquickcontrols)
+ ("qtquickcontrols2" ,qtquickcontrols2)))
+ (propagated-inputs
+ `(("libringclient" ,libringclient)))
+ (home-page "https://jami.net")
+ (synopsis "Qt Jami client")
+ (description "This package provides the Jami Qt client. 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.")
+ (license license:gpl3+)))
--
2.31.1
J
J
Jack Hill wrote on 31 Mar 2021 08:08
Re: [bug#47513] [PATCH 11/12] gnu: jami: Update to 20210326.1.cfba013 and rename to jami-gnome.
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)(address . 47513@debbugs.gnu.org)
alpine.DEB.2.21.2103310204540.8138@marsh.hcoop.net
Thanks for working on these patches. I'm excited to try out the new Jami
version.

On Wed, 31 Mar 2021, Maxim Cournoyer wrote:

Toggle quote (4 lines)
> * gnu/packages/jami.scm (jami): Update to 20210326.1.cfba013. Rename to ...
> (jami-gnome): In prevision of the soon released Jami Qt client.
> (jami): Define as obsoleted by jami-gnome.

However, I wonder if something has gone wrong with the renaming. I applied
the whole series on top of fea1eea452e9659b79f88fa80a45ca7c03cded1f.
However, running make in the Guix checkout now fails as follows. I did
re-run ./bootstrap and ./configure for good measure:

```
jackhill@alperton ~/repos/guix [env]$ make
make all-recursive
make[1]: Entering directory '/home/jackhill/repos/guix'
Making all in po/guix
make[2]: Entering directory '/home/jackhill/repos/guix/po/guix'
make[2]: Leaving directory '/home/jackhill/repos/guix/po/guix'
Making all in po/packages
make[2]: Entering directory '/home/jackhill/repos/guix/po/packages'
make[2]: Leaving directory '/home/jackhill/repos/guix/po/packages'
make[2]: Entering directory '/home/jackhill/repos/guix'
Compiling Scheme modules...
[ 8%] LOAD gnu/packages/build-tools.scm
;;; note: source file ./gnu/packages/build-tools.scm
;;; newer than compiled /home/jackhill/repos/guix/gnu/packages/build-tools.go
;;; note: source file ./gnu/packages/build-tools.scm
;;; newer than compiled /home/jackhill/repos/guix/gnu/packages/build-tools.go
;;; note: source file ./gnu/packages/networking.scm
;;; newer than compiled /home/jackhill/repos/guix/gnu/packages/networking.go
;;; note: source file ./gnu/packages/networking.scm
;;; newer than compiled /home/jackhill/repos/guix/gnu/packages/networking.go
;;; note: source file ./gnu/packages/nettle.scm
;;; newer than compiled /home/jackhill/repos/guix/gnu/packages/nettle.go
;;; note: source file ./gnu/packages/nettle.scm
;;; newer than compiled /home/jackhill/repos/guix/gnu/packages/nettle.go
;;; note: source file ./gnu/packages/telephony.scm
;;; newer than compiled /home/jackhill/repos/guix/gnu/packages/telephony.go
;;; note: source file ./gnu/packages/telephony.scm
;;; newer than compiled /home/jackhill/repos/guix/gnu/packages/telephony.go
[ 17%] LOAD gnu/packages/emulators.scm
;;; note: source file ./gnu/packages/emulators.scm
;;; newer than compiled /home/jackhill/repos/guix/gnu/packages/emulators.go
;;; note: source file ./gnu/packages/emulators.scm
;;; newer than compiled /home/jackhill/repos/guix/gnu/packages/emulators.go
[ 25%] LOAD gnu/packages/jami.scm
;;; note: source file ./gnu/packages/jami.scm
;;; newer than compiled /home/jackhill/repos/guix/gnu/packages/jami.go
;;; note: source file ./gnu/packages/jami.scm
;;; newer than compiled /home/jackhill/repos/guix/gnu/packages/jami.go
ice-9/eval.scm:293:34: error: jami: unbound variable
hint: Did you forget a `use-modules' form?

make[2]: *** [Makefile:6318: make-go] Error 1
make[2]: Leaving directory '/home/jackhill/repos/guix'
make[1]: *** [Makefile:5366: all-recursive] Error 1
make[1]: Leaving directory '/home/jackhill/repos/guix'
make: *** [Makefile:3697: all] Error 2
```

Unfortunately, I don't see any place the old binding is referenced.

Best,
Jack
M
M
Maxime Devos wrote on 31 Mar 2021 08:49
Re: [bug#47513] [PATCH 00/12] Update jami and add jami-qt
7c287ce50911cbfe78d6e9621b16d415cb0f7511.camel@telenet.be
On Wed, 2021-03-31 at 01:14 -0400, Maxim Cournoyer wrote:
Toggle quote (8 lines)
> Hello!
>
> I've finally picked up the packaging of Jami, which was becoming quite
> outdated in Guix. I haven't had much time to test the result yet, but a
> priori it seems to function as intended.
>
> Let me know how it works for you!

I read through the patch set and don't see any obvious problems.
Now I'll test this.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYIADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYGQbbxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7gKqAQDOrUDU2q5IHzMoXdE9BFjS1Kgl
KEUV5WZDQdcmWkygHAEApdrln21cZY4k2sDeaMjcyHIhkc5pJxRJdg4P2g3HFwI=
=Y89t
-----END PGP SIGNATURE-----


M
M
Maxime Devos wrote on 31 Mar 2021 15:23
ffaac63c3953799c44dc68df26133af05852fcd0.camel@telenet.be
On Wed, 2021-03-31 at 01:14 -0400, Maxim Cournoyer wrote:
Toggle quote (10 lines)
> Hello!
>
> I've finally picked up the packaging of Jami, which was becoming quite
> outdated in Guix. I haven't had much time to test the result yet, but a
> priori it seems to function as intended.
>
> Let me know how it works for you!
>
> Maxim

Something went wrong with sending the patch.
Snipped from first patch from

<start snip>
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
To: 47513@debbugs.gnu.org
Subject: [PATCH 01/12] gnu: asio: Update to 1.18.1.
Date: Wed, 31 Mar 2021 01:23:37 -0400
Message-Id: <20210331052348.5164-1-maxim.cournoyer@gmail.com>
X-Mailer: git-send-email 2.31.1
MIME-Version: 1.0
Content-Type: text/plain; charset=yes
Content-Transfer-Encoding: 8bit
<end snip>

What character encoding is 'yes'?
I manually changed 'yes' to 'utf-8' and only then the
patch series applied.

Now trying to build jami-gnome.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYIADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYGR3whccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7tACAQCd0jspTZlM1TsltvVhH7Xoe3lo
WgQ83jOKki+B0I4pogD/e1t5OFzLJ9LPRpOmxdOIpupEz5nWuJz7oQwmP6xE5QQ=
=9own
-----END PGP SIGNATURE-----


J
J
Jack Hill wrote on 31 Mar 2021 17:21
Re: [bug#47513] [PATCH 11/12] gnu: jami: Update to 20210326.1.cfba013 and rename to jami-gnome.
(address . 47513@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
alpine.DEB.2.21.2103311119510.8138@marsh.hcoop.net
Toggle quote (17 lines)
> [ 25%] LOAD gnu/packages/jami.scm
> ;;; note: source file ./gnu/packages/jami.scm
> ;;; newer than compiled /home/jackhill/repos/guix/gnu/packages/jami.go
> ;;; note: source file ./gnu/packages/jami.scm
> ;;; newer than compiled /home/jackhill/repos/guix/gnu/packages/jami.go
> ice-9/eval.scm:293:34: error: jami: unbound variable
> hint: Did you forget a `use-modules' form?
>
> make[2]: *** [Makefile:6318: make-go] Error 1
> make[2]: Leaving directory '/home/jackhill/repos/guix'
> make[1]: *** [Makefile:5366: all-recursive] Error 1
> make[1]: Leaving directory '/home/jackhill/repos/guix'
> make: *** [Makefile:3697: all] Error 2
> ```
>
> Unfortunately, I don't see any place the old binding is referenced.

Oops, this seems be be my mistake. A `make clean-go` fixed it. Sorry for
the noise.

Best,
Jack
J
J
Jack Hill wrote on 31 Mar 2021 17:23
(address . 47513@debbugs.gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
alpine.DEB.2.21.2103311122220.8138@marsh.hcoop.net
On Wed, 31 Mar 2021, Jack Hill wrote:

Toggle quote (22 lines)
>> [ 25%] LOAD gnu/packages/jami.scm
>> ;;; note: source file ./gnu/packages/jami.scm
>> ;;; newer than compiled
>> /home/jackhill/repos/guix/gnu/packages/jami.go
>> ;;; note: source file ./gnu/packages/jami.scm
>> ;;; newer than compiled
>> /home/jackhill/repos/guix/gnu/packages/jami.go
>> ice-9/eval.scm:293:34: error: jami: unbound variable
>> hint: Did you forget a `use-modules' form?
>>
>> make[2]: *** [Makefile:6318: make-go] Error 1
>> make[2]: Leaving directory '/home/jackhill/repos/guix'
>> make[1]: *** [Makefile:5366: all-recursive] Error 1
>> make[1]: Leaving directory '/home/jackhill/repos/guix'
>> make: *** [Makefile:3697: all] Error 2
>> ```
>>
>> Unfortunately, I don't see any place the old binding is referenced.
>
> Oops, this seems be be my mistake. A `make clean-go` fixed it. Sorry for the
> noise.

Oops again. It seems like a spoke too soon. I'm still having the problem
after a clean-go (I had forgotten that I was looking at something else in
my guix repository and didn't have these patches applied at the moment).
M
M
Maxim Cournoyer wrote on 31 Mar 2021 18:57
Re: [bug#47513] [PATCH 00/12] Update jami and add jami-qt
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 47513@debbugs.gnu.org)
877dlnjm6e.fsf@gmail.com
Hi!

Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (31 lines)
> On Wed, 2021-03-31 at 01:14 -0400, Maxim Cournoyer wrote:
>> Hello!
>>
>> I've finally picked up the packaging of Jami, which was becoming quite
>> outdated in Guix. I haven't had much time to test the result yet, but a
>> priori it seems to function as intended.
>>
>> Let me know how it works for you!
>>
>> Maxim
>
> Something went wrong with sending the patch.
> Snipped from first patch from
> <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=47513#5>:
>
> <start snip>
> From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
> To: 47513@debbugs.gnu.org
> Subject: [PATCH 01/12] gnu: asio: Update to 1.18.1.
> Date: Wed, 31 Mar 2021 01:23:37 -0400
> Message-Id: <20210331052348.5164-1-maxim.cournoyer@gmail.com>
> X-Mailer: git-send-email 2.31.1
> MIME-Version: 1.0
> Content-Type: text/plain; charset=yes
> Content-Transfer-Encoding: 8bit
> <end snip>
>
> What character encoding is 'yes'?
> I manually changed 'yes' to 'utf-8' and only then the
> patch series applied.

Oh, sorry about this! I'm not sure what happened, as I generated the
series with 'git format-patch', and send it via 'git send-email',
without specifying any special options for the encoding.

I guess I simply replied 'yes' without reading through the questions git
send-email asked me (it was late :-)).

I'll resend the series now to spare anyone else the trouble of figuring
that out.

Thanks for letting me know!

Toggle quote (2 lines)
> Now trying to build jami-gnome.

And for testing it!

Maxim
M
M
Maxim Cournoyer wrote on 31 Mar 2021 19:22
[PATCH v2 01/12] gnu: asio: Update to 1.18.1.
(address . 47513@debbugs.gnu.org)
20210331172232.22483-1-maxim.cournoyer@gmail.com
* gnu/packages/networking.scm (asio): Update to 1.18.1.
(asio-1.12): New variable.
* gnu/packages/emulators.scm (mame)[inputs]: Use asio-1.12, otherwise it fails
to build.
---
gnu/packages/emulators.scm | 2 +-
gnu/packages/networking.scm | 17 +++++++++++++++--
2 files changed, 16 insertions(+), 3 deletions(-)

Toggle diff (57 lines)
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 1cd23c3e6c..cfe909b3a6 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1743,7 +1743,7 @@ This is a part of the TiLP project.")
("texinfo" ,texinfo)))
(inputs
`(("alsa-lib" ,alsa-lib)
- ("asio" ,asio)
+ ("asio" ,asio-1.12) ;the bundled copy is at 1.11
("expat" ,expat)
("flac" ,flac)
("fontconfig" ,fontconfig)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 7dd484fa94..efbcb68e23 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -26,7 +26,7 @@
;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
-;;; Copyright © 2019, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2019, 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Vasile Dumitrascu <va511e@yahoo.com>
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
@@ -3027,7 +3027,8 @@ eight bytes) tools
;; Either BSD-3 or GPL-2 can be used.
(license (list license:bsd-3 license:gpl2))))
-(define-public asio
+;;; This is an old version required by rested.
+(define-public asio-1.12
(package
(name "asio")
(version "1.12.2")
@@ -3054,6 +3055,18 @@ low-level I/O programming that provides developers with a consistent
asynchronous model using a modern C++ approach.")
(license license:boost1.0)))
+(define-public asio
+ (package
+ (inherit asio-1.12)
+ (version "1.18.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/asio/asio/"
+ version " (Stable)/asio-" version ".tar.bz2"))
+ (sha256
+ (base32 "04wi69d72l1p5c7d63z1dz06zn8pdqsbgx1if98dszs9ymfqgyaa"))))))
+
(define-public shadowsocks
;; There are some security fixes after the last release.
(let* ((commit "e332ec93e9c90f1cbee676b022bf2c5d5b7b1239")
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 19:22
[PATCH v2 02/12] gnu: restbed: Update to 4.7.
(address . 47513@debbugs.gnu.org)
20210331172232.22483-2-maxim.cournoyer@gmail.com
* gnu/packages/networking.scm (restbed): Update to 4.7.
---
gnu/packages/networking.scm | 97 ++++++++++++++++++-------------------
1 file changed, 48 insertions(+), 49 deletions(-)

Toggle diff (112 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index efbcb68e23..f114e65d17 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -3332,57 +3332,56 @@ never see any machines other than the one Dante is running on.")
(license (license:non-copyleft "file://LICENSE"))))
(define-public restbed
- (let ((commit "6eb385fa9051203f28bf96cc1844bbb5a9a6481f"))
- (package
- (name "restbed")
- (version (git-version "4.6" "1" commit))
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/Corvusoft/restbed/")
- (commit commit)))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32 "0k60i5drklqqrb4khb25fzkgz9y0sncxf1sp6lh2bm1m0gh0661n"))))
- (build-system cmake-build-system)
- (inputs
- `(("asio" ,asio)
- ("catch" ,catch-framework)
- ("openssl" ,openssl)))
- (arguments
- `(#:tests? #f
- #:configure-flags
- '("-DBUILD_TESTS=NO"
- "-DBUILD_EXAMPLES=NO"
- "-DBUILD_SSL=NO"
- "-DBUILD_SHARED=NO")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'apply-patches-and-fix-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((asio (assoc-ref inputs "asio"))
- (catch (assoc-ref inputs "catch"))
- (openssl (assoc-ref inputs "openssl")))
- (substitute* "cmake/Findasio.cmake"
- (("(find_path\\( asio_INCLUDE asio\\.hpp HINTS ).*$" all begin)
- (string-append begin " \"" asio "/include\" )")))
- (substitute* "cmake/Findcatch.cmake"
- (("(find_path\\( catch_INCLUDE catch\\.hpp HINTS ).*$" all begin)
- (string-append begin " \"" catch "/include\" )")))
- (substitute* "cmake/Findopenssl.cmake"
- (("(find_library\\( ssl_LIBRARY ssl ssleay32 HINTS ).*$" all begin)
- (string-append begin " \"" openssl "/lib\" )"))
- (("(find_library\\( crypto_LIBRARY crypto libeay32 HINTS ).*$" all begin)
- (string-append begin " \"" openssl "/lib\" )"))
- (("(find_path\\( ssl_INCLUDE openssl/ssl\\.h HINTS ).*$" all begin)
- (string-append begin " \"" openssl "/include\" )")))))))))
- (synopsis "Asynchronous RESTful functionality to C++11 applications")
- (description "Restbed is a comprehensive and consistent programming
+ (package
+ (name "restbed")
+ (version "4.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Corvusoft/restbed/")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "055qicb773a599dsqbcz5xf0xj1wpk33mdrkyi0fsmyjmn8d2p9d"))))
+ (build-system cmake-build-system)
+ (inputs
+ `(("asio" ,asio-1.12)
+ ("catch" ,catch-framework)
+ ("openssl" ,openssl)))
+ (arguments
+ `(#:tests? #f
+ #:configure-flags
+ '("-DBUILD_TESTS=NO"
+ "-DBUILD_EXAMPLES=NO"
+ "-DBUILD_SSL=NO"
+ "-DBUILD_SHARED=NO")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'apply-patches-and-fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((asio (assoc-ref inputs "asio"))
+ (catch (assoc-ref inputs "catch"))
+ (openssl (assoc-ref inputs "openssl")))
+ (substitute* "cmake/Findasio.cmake"
+ (("(find_path\\( asio_INCLUDE asio\\.hpp HINTS ).*$" all begin)
+ (string-append begin " \"" asio "/include\" )")))
+ (substitute* "cmake/Findcatch.cmake"
+ (("(find_path\\( catch_INCLUDE catch\\.hpp HINTS ).*$" all begin)
+ (string-append begin " \"" catch "/include\" )")))
+ (substitute* "cmake/Findopenssl.cmake"
+ (("(find_library\\( ssl_LIBRARY ssl ssleay32 HINTS ).*$" all begin)
+ (string-append begin " \"" openssl "/lib\" )"))
+ (("(find_library\\( crypto_LIBRARY crypto libeay32 HINTS ).*$" all begin)
+ (string-append begin " \"" openssl "/lib\" )"))
+ (("(find_path\\( ssl_INCLUDE openssl/ssl\\.h HINTS ).*$" all begin)
+ (string-append begin " \"" openssl "/include\" )")))))))))
+ (synopsis "Asynchronous RESTful functionality to C++11 applications")
+ (description "Restbed is a comprehensive and consistent programming
model for building applications that require seamless and secure
communication over HTTP.")
- (home-page "https://github.com/Corvusoft/restbed")
- (license license:agpl3+))))
+ (home-page "https://github.com/Corvusoft/restbed")
+ (license license:agpl3+)))
(define-public restinio
(package
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 19:22
[PATCH v2 03/12] gnu: restinio: Update to 0.6.13.
(address . 47513@debbugs.gnu.org)
20210331172232.22483-3-maxim.cournoyer@gmail.com
* gnu/packages/networking.scm (restinio): Update to 0.6.13.
---
gnu/packages/networking.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (24 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index f114e65d17..bd6201bcbf 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -3386,7 +3386,7 @@ communication over HTTP.")
(define-public restinio
(package
(name "restinio")
- (version "0.6.1.1")
+ (version "0.6.13")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -3395,7 +3395,7 @@ communication over HTTP.")
(file-name (git-file-name name version))
(sha256
(base32
- "141a96hx8zhcdv121g6cs91n46kb47y040v25pnvz5f54964z7f5"))))
+ "0gb0yc88hdzwm08zdiviay6s08q427za33kfbygib7bdzp2wr2dm"))))
(build-system cmake-build-system)
(inputs ; TODO: Need to force-keep references on some inputs, e.g. boost.
`(("zlib" ,zlib)
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 19:22
[PATCH v2 04/12] gnu: Add nettle-3.7.
(address . 47513@debbugs.gnu.org)
20210331172232.22483-4-maxim.cournoyer@gmail.com
While nettle cannot be upgraded wholesale on the master branch, we can at
least also offer the latest version available.

* gnu/packages/nettle.scm (nettle-3.5, nettle-3.7): New variables.
(nettle): Redefine as a binding to nettle-3.5, which is the current version.
---
gnu/packages/nettle.scm | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)

Toggle diff (41 lines)
diff --git a/gnu/packages/nettle.scm b/gnu/packages/nettle.scm
index f5e7188ff0..753e2d6e7e 100644
--- a/gnu/packages/nettle.scm
+++ b/gnu/packages/nettle.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -71,7 +72,7 @@ cryptographic toolkits for object-oriented languages or in applications
themselves.")
(license gpl2+)))
-(define-public nettle
+(define-public nettle-3.5
;; This version is not API-compatible with version 2. In particular, lsh
;; cannot use it yet. So keep it separate.
(package (inherit nettle-2)
@@ -89,3 +90,17 @@ themselves.")
;; Build "fat" binaries where the right implementation is chosen
;; at run time based on CPU features (starting from 3.1.)
`(cons "--enable-fat" ,flags))))))
+
+(define-public nettle-3.7
+ (package (inherit nettle-3.5)
+ (version "3.7.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/nettle/nettle-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0qpi1qp3bcvqdsaxy2pzg530db95x8qjahkynxgwvr6dy5760ald"))))))
+
+;;; Upgrading Nettle on master would cause 10000+ packages to be rebuilt.
+(define-public nettle nettle-3.5)
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 19:22
[PATCH v2 05/12] gnu: opendht: Update to 2.2.0rc4.
(address . 47513@debbugs.gnu.org)
20210331172232.22483-5-maxim.cournoyer@gmail.com
* gnu/packages/patches/opendht-fix-jami.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): Un-register it.
* gnu/packages/networking.scm (opendht): Update to 2.2.0rc4.
[patches]: Remove field.
[inputs]: Use nettle-3.7.
[native-inputs]: Move restinio to...
[propagated-inputs]: ... here.
---
gnu/local.mk | 1 -
gnu/packages/networking.scm | 13 ++++----
gnu/packages/patches/opendht-fix-jami.patch | 33 ---------------------
3 files changed, 6 insertions(+), 41 deletions(-)
delete mode 100644 gnu/packages/patches/opendht-fix-jami.patch

Toggle diff (95 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index d8c548b0eb..bfb7cd80b7 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1469,7 +1469,6 @@ dist_patch_DATA = \
%D%/packages/patches/opencascade-oce-glibc-2.26.patch \
%D%/packages/patches/opencv-fix-build-of-grfmt_jpeg2000.cpp.patch \
%D%/packages/patches/opencv-rgbd-aarch64-test-fix.patch \
- %D%/packages/patches/opendht-fix-jami.patch \
%D%/packages/patches/openfoam-4.1-cleanup.patch \
%D%/packages/patches/openjdk-10-idlj-reproducibility.patch \
%D%/packages/patches/openmpi-mtl-priorities.patch \
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index bd6201bcbf..f4f2532583 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -3428,40 +3428,39 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
(define-public opendht
(package
(name "opendht")
- (version "2.1.4")
+ (version "2.2.0rc4") ;jami requires >= 2.2.0
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/savoirfairelinux/opendht")
(commit version)))
(file-name (git-file-name name version))
- (patches (search-patches "opendht-fix-jami.patch"))
(sha256
(base32
- "1ax26ri1ifb6s8ppd28jmanka9yf8mw3np65q2h4djhhik0phhal"))))
+ "1wc0f6cnvnlmhxnx64nxqgsx93k4g7ljdaqjl40ml74jg3nqrzcl"))))
;; Since 2.0, the gnu-build-system does not seem to work anymore, upstream bug?
(build-system cmake-build-system)
(inputs
`(("argon2" ,argon2)
- ("nettle" ,nettle)
+ ("nettle" ,nettle-3.7)
("readline" ,readline)
("jsoncpp" ,jsoncpp)
("openssl" ,openssl) ;required for the DHT proxy
("fmt" ,fmt)))
(propagated-inputs
`(("gnutls" ,gnutls) ;included in opendht/crypto.h
- ("msgpack" ,msgpack))) ;included in several installed headers
+ ("msgpack" ,msgpack) ;included in several installed headers
+ ("restinio" ,restinio))) ;included in opendht/http.h
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("pkg-config" ,pkg-config)
- ("restinio" ,restinio) ;headers only library
("libtool" ,libtool)
("cppunit" ,cppunit)))
(arguments
`(#:tests? #f ; Tests require network connection.
#:configure-flags
- '(;; "-DOPENDHT_TESTS=on"
+ '(;;"-DOPENDHT_TESTS=on"
"-DOPENDHT_TOOLS=off"
"-DOPENDHT_PYTHON=off"
"-DOPENDHT_PROXY_SERVER=on"
diff --git a/gnu/packages/patches/opendht-fix-jami.patch b/gnu/packages/patches/opendht-fix-jami.patch
deleted file mode 100644
index 9718a84a41..0000000000
--- a/gnu/packages/patches/opendht-fix-jami.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From e2b39dd3a0742853e00f9c3e8c46c911da20bed7 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
-Date: Tue, 30 Jun 2020 10:42:49 -0400
-Subject: [PATCH 1/4] http/request: make terminate public
-
----
- include/opendht/http.h | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/include/opendht/http.h b/include/opendht/http.h
-index cc8d5f9..46b722c 100644
---- a/include/opendht/http.h
-+++ b/include/opendht/http.h
-@@ -294,6 +294,7 @@ public:
- * User action to cancel the Request and call the completion callbacks.
- */
- void cancel();
-+ void terminate(const asio::error_code& ec);
-
- private:
- using OnCompleteCb = std::function<void()>;
-@@ -320,8 +321,6 @@ private:
-
- void connect(std::vector<asio::ip::tcp::endpoint>&& endpoints, HandlerCb cb = {});
-
-- void terminate(const asio::error_code& ec);
--
- void post();
-
- void handle_request(const asio::error_code& ec);
---
-2.27.0
-
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 19:22
[PATCH v2 06/12] gnu: pjproject: Update to 2.11.
(address . 47513@debbugs.gnu.org)
20210331172232.22483-6-maxim.cournoyer@gmail.com
* gnu/packages/telephony.scm (pjproject): Update to 2.11. Remove trailing #t.
[patches]: Delete field. The patches are preserved because pjproject-jami
still needs them.
---
gnu/packages/telephony.scm | 22 +++++++---------------
1 file changed, 7 insertions(+), 15 deletions(-)

Toggle diff (78 lines)
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 5c8d247e68..af7148bf84 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -17,7 +17,7 @@
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
-;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2021 LibreMiami <packaging-guix@libremiami.org>
;;;
@@ -723,7 +723,7 @@ your calls and messages.")
(define-public pjproject
(package
(name "pjproject")
- (version "2.10")
+ (version "2.11")
(source
(origin
(method git-fetch)
@@ -733,12 +733,8 @@ your calls and messages.")
(file-name (git-file-name name version))
(sha256
(base32
- "1aklicpgwc88578k03i5d5cm5h8mfm7hmx8vfprchbmaa2p8f4z0"))
+ "1kn9g1x1vmh4130ghph8mldz5m89gsjs4vpdzlzm98m3808gk5an"))
(modules '((guix build utils)))
- ;; The patches upstream status can be tracked at:
- ;; https://github.com/pjsip/pjproject/pull/2501.
- (patches (search-patches "pjproject-correct-the-cflags-field.patch"
- "pjproject-fix-pkg-config-ldflags.patch"))
(snippet
'(begin
;; Remove bundled libraries.
@@ -746,8 +742,7 @@ your calls and messages.")
(substitute* "aconfigure.ac"
(("third_party/build/os-auto.mak") ""))
(substitute* "Makefile"
- (("third_party/build") ""))
- #t))))
+ (("third_party/build") ""))))))
(build-system gnu-build-system)
(outputs '("out" "debug" "static"))
(arguments
@@ -785,8 +780,7 @@ your calls and messages.")
;; Make all the files writable to prevent the following error:
;; "autom4te: cannot open aconfigure: Permission denied".
(lambda _
- (for-each make-file-writable (find-files "."))
- #t))
+ (for-each make-file-writable (find-files "."))))
(add-before 'build 'build-dep
(lambda _ (invoke "make" "dep")))
;; The check phases is moved after the install phase so to
@@ -800,8 +794,7 @@ your calls and messages.")
(with-directory-excursion out
(for-each (lambda (f)
(rename-file f (string-append s "/" (basename f))))
- (find-files "." "\\.a$")))
- #t)))
+ (find-files "." "\\.a$"))))))
(add-after 'install 'check
(assoc-ref %standard-phases 'check))
(add-before 'patch-source-shebangs 'autoconf
@@ -844,8 +837,7 @@ your calls and messages.")
;; Disable the pjnath and pjsua tests, which require an actual
;; network and an actual sound card, respectively.
(("pjnath-test pjmedia-test pjsip-test pjsua-test")
- "pjmedia-test pjsip-test"))
- #t)))))
+ "pjmedia-test pjsip-test")))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 19:22
[PATCH v2 07/12] gnu: pjproject-jami: Fix CVE-2020-15260 and CVE-2021-21375.
(address . 47513@debbugs.gnu.org)
20210331172232.22483-7-maxim.cournoyer@gmail.com
The custom pjproject package used by Jami is updated with the latest patches
found in the 20210326.1.cfba013 release of Jami.

* gnu/packages/jami.scm (%jami-version): Update to 20210326.1.cfba013.
(jami-source) [snippet]: Update comment. Add client-electron and client-ios
to the list of deleted directories. Remove client-windows from the list, as
it no longer exists.
(jami-apply-dependency-patches): Update comment. Ignore whitespace
when applying patches, otherwise the pjproject patches would not apply.
(pjproject-jami): Add comment.
[source]: Define the source; the parent pjproject package was
updated was updated to 2.11, but the patches only apply against 2.10.
[phases] <apply-patches>: Update the list of patches used with those found in
the release tarball.
---
gnu/packages/jami.scm | 52 ++++++++++++++++++++++++++++++-------------
1 file changed, 36 insertions(+), 16 deletions(-)

Toggle diff (119 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 3773c1ab0a..35d84bb37b 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 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -63,7 +63,7 @@
#:use-module (guix utils)
#:use-module (srfi srfi-1))
-(define %jami-version "20200710.1.6bd18d2")
+(define %jami-version "20210326.1.cfba013")
(define* (jami-source #:key keep-contrib-patches?)
"Return an origin object of the tarball release sources archive of Jami.
@@ -78,7 +78,7 @@ of Jami."
(modules '((guix build utils)))
(snippet
`(begin
- ;; Delete over 200 MiB of bundled tarballs. The contrib directory
+ ;; Delete multiple MiBs of bundled tarballs. The contrib directory
;; contains the custom patches for pjproject and other libraries used
;; by Savoir-faire Linux.
(if ,keep-contrib-patches?
@@ -86,21 +86,21 @@ of Jami."
(delete-file-recursively "daemon/contrib"))
;; Remove code from unused Jami clients.
(for-each delete-file-recursively '("client-android"
+ "client-electron"
+ "client-ios"
"client-macosx"
- "client-uwp"
- "client-windows"))
- #t))
+ "client-uwp"))))
(sha256
(base32
- "0lg61jv39x7kc9lq30by246xb6gcgp1rzj49ak7ff8nqpfzyfvva"))))
+ "1h0avma8bdzyznkz39crjyv2888bii4f49md15jg7970dyp5pdyz"))))
(define %sfl-patches (jami-source #:keep-contrib-patches? #t))
(define %jami-sources (jami-source))
-;; Savoir-faire Linux modifies many libraries to add features
-;; to Jami. This procedure makes applying patches to a given
-;; package easy.
+;; Savoir-faire Linux maintains a set of patches for some key dependencies
+;; (currently pjproject and ffmpeg) of Jami that haven't yet been integrated
+;; upstream. This procedure simplifies the process of applying these patches.x
(define jami-apply-dependency-patches
'(lambda* (#:key inputs dep-name patches)
(let ((patches-directory "sfl-patches"))
@@ -112,15 +112,30 @@ of Jami."
dep-name))
(for-each
(lambda (file)
- (invoke "patch" "--force" "-p1" "-i"
+ (invoke "patch" "--force" "--ignore-whitespace" "-p1" "-i"
(string-append patches-directory "/"
file ".patch")))
patches))))
+;;; Jami maintains pjproject patches that add the ability to do ICE over TCP,
+;;; among other things. The patches are currently based on pjproject 2.10.
(define-public pjproject-jami
(package
(inherit pjproject)
(name "pjproject-jami")
+ (version "2.10")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pjsip/pjproject")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1aklicpgwc88578k03i5d5cm5h8mfm7hmx8vfprchbmaa2p8f4z0"))
+ (patches (search-patches
+ "pjproject-correct-the-cflags-field.patch"
+ "pjproject-fix-pkg-config-ldflags.patch"))))
(native-inputs
`(("sfl-patches" ,%sfl-patches)
,@(package-native-inputs pjproject)))
@@ -140,14 +155,19 @@ of Jami."
"0004-multiple_listeners"
"0005-fix_ebusy_turn"
"0006-ignore_ipv6_on_transport_check"
- "0007-pj_ice_sess"
+ "0007-upnp-srflx-nat-assisted-cand"
"0008-fix_ioqueue_ipv6_sendto"
"0009-add-config-site"
- ;; Note: The base pjproject is already patched with
- ;; "0010-fix-pkgconfig".
+ ;; Already taken care of via the origin patches.
+ ;;"0010-fix-pkgconfig"
"0011-fix-tcp-death-detection"
- "0012-fix-turn-shutdown-crash"))
- #t))))))))
+ "0012-fix-turn-shutdown-crash"
+ "0013-Assign-unique-local-preferences-for-candidates-with-"
+ "0014-Add-new-compile-time-setting-PJ_ICE_ST_USE_TURN_PERM"
+ "0015-update-local-preference-for-peer-reflexive-candidate"
+ "0016-use-addrinfo-instead-CFHOST"
+ "0017-CVE-2020-15260"
+ "0018-CVE-2021-21375"))))))))))
;; The following variables are configure flags used by ffmpeg-jami. They're
;; from the ring-project/daemon/contrib/src/ffmpeg/rules.mak file. We try to
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 19:22
[PATCH v2 08/12] ffmpeg-jami: Patch with the patches from Jami 20210326.1.cfba013.
(address . 47513@debbugs.gnu.org)
20210331172232.22483-8-maxim.cournoyer@gmail.com
* gnu/packages/jami.scm (ffmpeg-jami): Remove trailing #t.
[phases] <apply-patches>: Add libopusdec-enable-FEC and
libopusenc-enable-FEC to the list of patches to apply.
---
gnu/packages/jami.scm | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)

Toggle diff (38 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 35d84bb37b..9d5d00c60c 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -403,21 +403,22 @@ of Jami."
`(modify-phases ,phases
(add-after 'unpack 'make-git-checkout-writable
(lambda _
- (for-each make-file-writable (find-files "."))
- #t))
+ (for-each make-file-writable (find-files "."))))
(add-after 'unpack 'apply-patches
(lambda* (#:key inputs #:allow-other-keys)
(let ((jami-apply-dependency-patches
,jami-apply-dependency-patches))
;; These patches come from:
;; "ring-project/daemon/contrib/src/ffmpeg/rules.mak".
- (jami-apply-dependency-patches #:inputs inputs
- #:dep-name "ffmpeg"
- #:patches
- '("remove-mjpeg-log"
- "change-RTCP-ratio"
- "rtp_ext_abs_send_time"))
- #t))))))))))
+ (jami-apply-dependency-patches
+ #:inputs inputs
+ #:dep-name "ffmpeg"
+ #:patches
+ '("remove-mjpeg-log"
+ "change-RTCP-ratio"
+ "rtp_ext_abs_send_time"
+ "libopusdec-enable-FEC"
+ "libopusenc-enable-FEC"))))))))))))
(define-public libring
(package
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 19:22
[PATCH v2 09/12] gnu: libring: Update to 20210326.1.cfba013.
(address . 47513@debbugs.gnu.org)
20210331172232.22483-9-maxim.cournoyer@gmail.com
* gnu/packages/jami.scm (libring): Update to 20210326.1.cfba013. Remove
trailing #t.
[inputs]: Remove boost, flac, gmp, gsm, libogg, libva, opus, pcre,
libsamplerate, libsndfile, libvorbis, libx264, libvdpau, zlib, python,
python-wrapper, restinio, and libx11. Add webrtc-audio-processing.
[native-inputs]: Remove cppunit. Add gcc-8.
[make-flags]: Add the V=1 flag.
[synopsis]: More explicitly describe what this component is.
[description]: Describe the specifics before the generalities.
---
gnu/packages/jami.scm | 61 ++++++++++++++-----------------------------
1 file changed, 20 insertions(+), 41 deletions(-)

Toggle diff (105 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 9d5d00c60c..ddb4b35349 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -31,6 +31,7 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
#:use-module (gnu packages documentation)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
@@ -428,71 +429,49 @@ of Jami."
(build-system gnu-build-system)
(inputs
`(("alsa-lib" ,alsa-lib)
- ("boost" ,boost)
+ ("asio" ,asio)
("dbus-c++" ,dbus-c++)
("eudev" ,eudev)
("ffmpeg" ,ffmpeg-jami)
- ("flac" ,flac)
- ("gmp" ,gmp)
- ("gsm" ,gsm)
("jack" ,jack-1)
("jsoncpp" ,jsoncpp)
("libarchive" ,libarchive)
("libnatpmp" ,libnatpmp)
- ("libogg" ,libogg)
- ("libva" ,libva)
+ ("libsecp256k1" ,libsecp256k1)
+ ("libupnp" ,libupnp)
("opendht" ,opendht)
- ("opus" ,opus)
- ("pcre" ,pcre)
+ ("openssl" ,openssl)
+ ("pjproject" ,pjproject-jami)
("pulseaudio" ,pulseaudio)
- ("libsamplerate" ,libsamplerate)
- ("libsndfile" ,libsndfile)
("speex" ,speex)
("speexdsp" ,speexdsp)
- ("libupnp" ,libupnp)
- ("libvorbis" ,libvorbis)
- ("libx264" ,libx264)
- ("libvdpau" ,libvdpau)
- ("yaml-cpp" ,yaml-cpp)
- ("zlib" ,zlib)
- ("openssl" ,openssl)
- ("libsecp256k1" ,libsecp256k1)
- ("python" ,python)
- ("python-wrapper" ,python-wrapper)
- ("restinio" ,restinio)
- ("libx11" ,libx11)
- ("asio" ,asio)
- ;; TODO: Upstream seems to rely on a custom pjproject (a.k.a. pjsip) version.
- ;; See https://git.jami.net/savoirfairelinux/ring-daemon/issues/24.
- ("pjproject" ,pjproject-jami)))
+ ("webrtc-audio-processing" ,webrtc-audio-processing)
+ ("yaml-cpp" ,yaml-cpp)))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
+ ("gcc" ,gcc-8) ;charconv requires GCC 8.1+
("libtool" ,libtool)
+ ("perl" ,perl) ;to generate manpages with pod2man
("pkg-config" ,pkg-config)
- ("which" ,which)
- ("cppunit" ,cppunit)
- ("perl" ,perl))) ; Needed for documentation.
+ ("which" ,which)))
(arguments
`(#:tests? #f ; The tests fail to compile due to missing headers.
+ #:make-flags '("V=1") ;build verbosely
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'change-directory
(lambda _
- (chdir "daemon")
- #t))
+ (chdir "daemon")))
(add-before 'build 'add-lib-dir
(lambda _
- (mkdir-p "src/lib")
- #t)))))
- (synopsis "Distributed multimedia communications platform")
- (description "Jami (formerly GNU Ring) 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.
-
-This package provides a library and daemon implementing the Jami core
-functionality.")
+ (mkdir-p "src/lib"))))))
+ (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
+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+)))
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 19:22
[PATCH v2 10/12] gnu: libringclient: Update to 20210326.1.cfba013.
(address . 47513@debbugs.gnu.org)
20210331172232.22483-10-maxim.cournoyer@gmail.com
* gnu/packages/jami.scm (libringclient): Update to 20210326.1.cfba013. Remove
trailing #t. Do not inherit from libring.
[version, source]: Specify fields.
[propagated-inputs]: Remove qttools. Move libring to ...
[inputs]: ... here. Add network-manager.
[configure-flags] Define the RING_XML_INTERFACES_DIR variable.
[phases]{fix-dbus-interfaces-path}: Delete.
[synopsis]: More explicitly describe what this component is.
[description]: Describe the specifics before the generalities.
---
gnu/packages/jami.scm | 38 +++++++++++++++++---------------------
1 file changed, 17 insertions(+), 21 deletions(-)

Toggle diff (61 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index ddb4b35349..41fa69dd48 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -477,37 +477,33 @@ protocols, as well as decentralized calling using P2P-DHT.")
(define-public libringclient
(package
- (inherit libring)
(name "libringclient")
+ (version %jami-version)
+ (source %jami-sources)
(build-system cmake-build-system)
+ (inputs
+ `(("libring" ,libring)
+ ("network-manager" ,network-manager)))
(propagated-inputs
- `(("libring" ,libring) ; For 'dring'.
- ("qtbase" ,qtbase) ; Qt is included in several installed headers.
- ("qttools" ,qttools)))
+ `(("qtbase" ,qtbase))) ; Qt is included in several installed headers.
(arguments
`(#:tests? #f ; There is no testsuite.
#:configure-flags
- (list (string-append "-DRING_BUILD_DIR="
- (assoc-ref %build-inputs "libring") "/include"))
+ (let ((libring (assoc-ref %build-inputs "libring")))
+ (list (string-append "-DRING_XML_INTERFACES_DIR="
+ libring "/share/dbus-1/interfaces")
+ (string-append "-DRING_BUILD_DIR=" libring "/include")))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'change-directory
(lambda _
- (chdir "lrc")
- #t))
- (add-before 'configure 'fix-dbus-interfaces-path
- (lambda* (#:key inputs #:allow-other-keys)
- (substitute* "CMakeLists.txt"
- (("\\$\\{CMAKE_INSTALL_PREFIX\\}(/share/dbus-1/interfaces)" _ dbus-interfaces-path-suffix)
- (string-append (assoc-ref inputs "libring")
- dbus-interfaces-path-suffix))))))))
- (synopsis "Distributed multimedia communications platform")
- (description "Jami (formerly GNU Ring) 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.
-
-This package provides a library common to all Jami clients.")
+ (chdir "lrc"))))))
+ (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+)))
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 19:22
[PATCH v2 12/12] gnu: Add jami-qt.
(address . 47513@debbugs.gnu.org)
20210331172232.22483-12-maxim.cournoyer@gmail.com
* gnu/packages/jami.scm (jami-qt): New variable.
---
gnu/packages/jami.scm | 66 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 66 insertions(+)

Toggle diff (90 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 1b6a2a2ed5..ddfe6a2770 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -36,6 +36,7 @@
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
+ #:use-module (gnu packages graphviz)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libcanberra)
#:use-module (gnu packages linux)
@@ -59,6 +60,7 @@
#:use-module (gnu packages)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system qt)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix packages)
@@ -554,3 +556,67 @@ decentralized calling using P2P-DHT.")
;;; main 'jami' client.
(define-public jami
(deprecated-package "jami" jami-gnome))
+
+(define-public jami-qt
+ (package
+ (name "jami-qt") ;to be renamed 'jami' at some point
+ (version %jami-version)
+ ;; The Qt client code is not yet part of the release tarball; fetch it
+ ;; from git for now.
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://git.jami.net/savoirfairelinux/jami-client-qt.git")
+ (commit "ae21c17da5e8f730ae3895ccbc4da8047e3be1eb")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1rf3lpk8c4qc12pi6pn4rdp7i8b83xv64yqr0q47rzv9s518qyjp"))))
+ (build-system qt-build-system)
+ (arguments
+ `(#:tests? #f ;no test suite
+ #:phases
+ (modify-phases %standard-phases
+ ;; TODO: Uncomment after switching back to the tarball source.
+ ;; (add-after 'unpack 'change-directory
+ ;; (lambda _
+ ;; (chdir "client-qt")))
+ (add-after 'install 'wrap
+ ;; The program fails to find the QtWebEngineProcess program, so we
+ ;; set QTWEBENGINEPROCESS_PATH to help it.
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
+ (qtwebengineprocess (string-append
+ (assoc-ref inputs "qtwebengine")
+ "/lib/qt5/libexec/QtWebEngineProcess")))
+ (for-each (lambda (program)
+ (wrap-program program
+ `("QTWEBENGINEPROCESS_PATH" =
+ (,qtwebengineprocess))))
+ (find-files bin ".*"))))))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("qttools" ,qttools)
+ ("doxygen" ,doxygen)
+ ("graphviz" ,graphviz)))
+ (inputs
+ `(("network-manager" ,network-manager)
+ ("qrencode" ,qrencode)
+ ("qtsvg" ,qtsvg)
+ ("qtwebengine" ,qtwebengine)
+ ("qtwebchannel" ,qtwebchannel)
+ ("qtmultimedia" ,qtmultimedia)
+ ("qtdeclarative" ,qtdeclarative)
+ ("qtgraphicaleffects" ,qtgraphicaleffects)
+ ("qtquickcontrols" ,qtquickcontrols)
+ ("qtquickcontrols2" ,qtquickcontrols2)))
+ (propagated-inputs
+ `(("libringclient" ,libringclient)))
+ (home-page "https://jami.net")
+ (synopsis "Qt Jami client")
+ (description "This package provides the Jami Qt client. 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.")
+ (license license:gpl3+)))
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 19:22
[PATCH v2 11/12] gnu: jami: Update to 20210326.1.cfba013 and rename to jami-gnome.
(address . 47513@debbugs.gnu.org)
20210331172232.22483-11-maxim.cournoyer@gmail.com
* gnu/packages/jami.scm (jami): Update to 20210326.1.cfba013. Rename to ...
(jami-gnome): In prevision of the soon released Jami Qt client.
(jami): Define as obsoleted by jami-gnome.
[inputs]: Sort lexico-graphically. Add libappindicator and network-manager.
[native-inputs]: Add a comment and fix a typo. Remove doxygen.
[propagated-inputs]: Remove evolution-data-server.
[synopsis]: More explicitly describe what this package is.
[description]: Describe the specifics before the generalities.
---
gnu/packages/jami.scm | 54 ++++++++++++++++++++++++-------------------
1 file changed, 30 insertions(+), 24 deletions(-)

Toggle diff (88 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 41fa69dd48..1b6a2a2ed5 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -31,6 +31,7 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
#:use-module (gnu packages documentation)
+ #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
@@ -507,44 +508,49 @@ decentralized calling using P2P-DHT.")
(home-page "https://jami.net")
(license license:gpl3+)))
-(define-public jami
+(define-public jami-gnome
(package
- (inherit libring)
- (name "jami")
+ (name "jami-gnome")
+ (version %jami-version)
+ (source %jami-sources)
(build-system cmake-build-system)
(inputs
- `(("libringclient" ,libringclient)
- ("gtk+" ,gtk+)
- ("qrencode" ,qrencode)
- ("libnotify" ,libnotify)
- ("clutter" ,clutter)
+ `(("clutter" ,clutter)
("clutter-gtk" ,clutter-gtk)
+ ("gtk+" ,gtk+)
("libcanberra" ,libcanberra)
- ("webkitgtk" ,webkitgtk)
- ("sqlite" ,sqlite)))
+ ("libappindicator" ,libappindicator)
+ ("libnotify" ,libnotify)
+ ("libringclient" ,libringclient)
+ ("network-manager" ,network-manager)
+ ("qrencode" ,qrencode)
+ ("sqlite" ,sqlite)
+ ("webkitgtk" ,webkitgtk)))
(native-inputs
`(("pkg-config" ,pkg-config)
("gettext" ,gettext-minimal)
- ("glib:bin" ,glib "bin")
- ("doxygen" ,doxygen)))
+ ("glib:bin" ,glib "bin"))) ;for glib-compile-resources
(propagated-inputs
- `(("libring" ,libring) ; Contains `dring', the daemon, which is automatically by d-bus.
- ("adwaita-icon-theme" ,adwaita-icon-theme)
- ("evolution-data-server" ,evolution-data-server)))
+ `(("libring" ,libring) ; Contains 'dring', the daemon, which is
+ ; automatically started by DBus.
+ ("adwaita-icon-theme" ,adwaita-icon-theme)))
(arguments
`(#:tests? #f ; There is no testsuite.
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'change-directory
(lambda _
- (chdir "client-gnome")
- #t)))))
- (synopsis "Distributed, privacy-respecting communication program")
- (description "Jami (formerly GNU Ring) 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.
-
-This package provides the Jami client for the GNOME desktop.")
+ (chdir "client-gnome"))))))
+ (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+)))
+
+;;; Keep this until the Qt client matures enough to become the
+;;; main 'jami' client.
+(define-public jami
+ (deprecated-package "jami" jami-gnome))
--
2.31.1
M
M
Maxim Cournoyer wrote on 31 Mar 2021 19:23
Re: [bug#47513] [PATCH 00/12] Update jami and add jami-qt
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 47513@debbugs.gnu.org)
8735wbjkyh.fsf@gmail.com
Hi again,

Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (31 lines)
> On Wed, 2021-03-31 at 01:14 -0400, Maxim Cournoyer wrote:
>> Hello!
>>
>> I've finally picked up the packaging of Jami, which was becoming quite
>> outdated in Guix. I haven't had much time to test the result yet, but a
>> priori it seems to function as intended.
>>
>> Let me know how it works for you!
>>
>> Maxim
>
> Something went wrong with sending the patch.
> Snipped from first patch from
> <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=47513#5>:
>
> <start snip>
> From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
> To: 47513@debbugs.gnu.org
> Subject: [PATCH 01/12] gnu: asio: Update to 1.18.1.
> Date: Wed, 31 Mar 2021 01:23:37 -0400
> Message-Id: <20210331052348.5164-1-maxim.cournoyer@gmail.com>
> X-Mailer: git-send-email 2.31.1
> MIME-Version: 1.0
> Content-Type: text/plain; charset=yes
> Content-Transfer-Encoding: 8bit
> <end snip>
>
> What character encoding is 'yes'?
> I manually changed 'yes' to 'utf-8' and only then the
> patch series applied.

Actually, retrying with the following command:

$ git send-email --to='47513@debbugs.gnu.org' [...] -v2 origin/master

again produces:

X-Mailer: git-send-email 2.31.1
MIME-Version: 1.0
Content-Type: text/plain; charset=yes
Content-Transfer-Encoding: 8bit

It had to do with:

$ git config sendemail.assume8bitEncoding
yes

I assumed this flag was a boolean but apparently it takes the encoding
type such as 'UTF-8'

After making this change:

Toggle snippet (5 lines)
modified git/.gitconfig
- assume8bitEncoding = yes
+ assume8bitEncoding = utf-8

It shows up as utf-8, and hopefully will work better on your side! I
just sent a v2.

Thanks for allowing me to realize this mistake of mine.

Maxim
M
M
Maxim Cournoyer wrote on 31 Mar 2021 19:26
Re: [bug#47513] [PATCH 11/12] gnu: jami: Update to 20210326.1.cfba013 and rename to jami-gnome.
(name . Jack Hill)(address . jackhill@jackhill.us)(address . 47513@debbugs.gnu.org)
87y2e3i6a7.fsf@gmail.com
Hi Jack!

Jack Hill <jackhill@jackhill.us> writes:

Toggle quote (27 lines)
> On Wed, 31 Mar 2021, Jack Hill wrote:
>
>>> [ 25%] LOAD gnu/packages/jami.scm
>>> ;;; note: source file ./gnu/packages/jami.scm
>>> ;;; newer than compiled
>>> /home/jackhill/repos/guix/gnu/packages/jami.go
>>> ;;; note: source file ./gnu/packages/jami.scm
>>> ;;; newer than compiled
>>> /home/jackhill/repos/guix/gnu/packages/jami.go
>>> ice-9/eval.scm:293:34: error: jami: unbound variable
>>> hint: Did you forget a `use-modules' form?
>>> make[2]: *** [Makefile:6318: make-go] Error 1
>>> make[2]: Leaving directory '/home/jackhill/repos/guix'
>>> make[1]: *** [Makefile:5366: all-recursive] Error 1
>>> make[1]: Leaving directory '/home/jackhill/repos/guix'
>>> make: *** [Makefile:3697: all] Error 2
>>> ```
>>> Unfortunately, I don't see any place the old binding is referenced.
>>
>> Oops, this seems be be my mistake. A `make clean-go` fixed it. Sorry
>> for the noise.
>
> Oops again. It seems like a spoke too soon. I'm still having the
> problem after a clean-go (I had forgotten that I was looking at
> something else in my guix repository and didn't have these patches
> applied at the moment).

Sorry, there was a mistake in my git sendemail configuration, where I
had mistakenly set assume8bitEncoding to yes instead of to some valid
value such as 'utf-8'.

I've fixed that along the missing jami variable binding and pushed as
v2. Let me know if it works better!

Maxim
M
M
Maxime Devos wrote on 1 Apr 2021 13:10
Re: [bug#47513] [PATCH 00/12] Update jami and add jami-qt
d2af8975e88f7377f1322a5a1e3ce052219cf40b.camel@telenet.be
On Wed, 2021-03-31 at 01:14 -0400, Maxim Cournoyer wrote:
Toggle quote (8 lines)
> Hello!
>
> I've finally picked up the packaging of Jami, which was becoming quite
> outdated in Guix. I haven't had much time to test the result yet, but a
> priori it seems to function as intended.
>
> Let me know how it works for you!

It seems to work for me, however I needed to make a tiny change:

<start snip>
Toggle diff (29 lines)
diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
index 67befe63a2..b73ad027fe 100644
--- a/gnu/packages/jami.scm
+++ b/gnu/packages/jami.scm
@@ -554,7 +554,7 @@ decentralized calling using P2P-DHT.")
;;; Keep this until the Qt client matures enough to become the
;;; main 'jami' client.
-(deprecated-package jami jami-gnome)
+#;(deprecated-package jami jami-gnome)
(define-public jami-qt
(package
<end snip>

Looking at "git grep -F deprecated-package" output, perhaps

(deprecated-package jami jami-gnome)

should have been

(deprecated-package "jami" jami-gnome)

? (untested)

Also, I didn't have any opportunity to actually call someone.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYIADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYGWqCxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7vQhAQDzeUZqCajYf3WyqRcVdRh3GPef
yEZ6+tpb5EqAsPt+agD/fjis32sLdXlPJfYdNB2UETHd3OcZbs5w1efheOMlhwY=
=6e7E
-----END PGP SIGNATURE-----


M
M
Maxim Cournoyer wrote on 2 Apr 2021 13:52
(name . Maxime Devos)(address . maximedevos@telenet.be)
874kgovr7t.fsf@gmail.com
Hi Maxime!

Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (27 lines)
> On Wed, 2021-03-31 at 01:14 -0400, Maxim Cournoyer wrote:
>> Hello!
>>
>> I've finally picked up the packaging of Jami, which was becoming quite
>> outdated in Guix. I haven't had much time to test the result yet, but a
>> priori it seems to function as intended.
>>
>> Let me know how it works for you!
>
> It seems to work for me, however I needed to make a tiny change:
>
> <start snip>
> diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm
> index 67befe63a2..b73ad027fe 100644
> --- a/gnu/packages/jami.scm
> +++ b/gnu/packages/jami.scm
> @@ -554,7 +554,7 @@ decentralized calling using P2P-DHT.")
>
> ;;; Keep this until the Qt client matures enough to become the
> ;;; main 'jami' client.
> -(deprecated-package jami jami-gnome)
> +#;(deprecated-package jami jami-gnome)
>
> (define-public jami-qt
> (package
> <end snip>

Jack in the thread made me notice about that as well; deprecated-package
returns a package object, so it needs to be public-define'd the usual
way:

+
+;;; Keep this until the Qt client matures enough to become the
+;;; main 'jami' client.
+(define-public jami
+ (deprecated-package "jami" jami-gnome))

And yes the package name is a string. I fixed this in a v2 patch series
I sent along a problem propagating libringclient instead of libring for
the jami-qt client (see:
(issues.guix.gnu.org) sadly doesn't seem to have picked it up.

[...]

Toggle quote (2 lines)
> Also, I didn't have any opportunity to actually call someone.

[...]

OK! I've tested it on my side with actual calls, so I feel confident it
works fine. I've made a few last changes (using LIBWRAP when building
libringclient so that it talks directly with libring instead of going
through DBus, which allows to have it work even in a 'guix pack' and
cleaning the list of imports) and pushed to master as
e6b447cf756831e8339e6462647004d88132fa07.

Thanks for the review!

Maxim
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 47513@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 47513
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch