[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
?