Upgrade Nheko

  • Done
  • quality assurance status badge
Details
4 participants
  • Nicolò Balzarotti
  • Ludovic Courtès
  • Maxime Devos
  • Tobias Geerinckx-Rice
Owner
unassigned
Submitted by
Nicolò Balzarotti
Severity
normal
Merged with
N
N
Nicolò Balzarotti wrote on 21 Jan 2021 01:37
(address . guix-patches@gnu.org)
875z3ryvk0.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Hi guix! Today nheko 0.8.0 was released.

This patch series upgrades it and its dependency, mtxclient.
I alsotook some time to unbundle all its dependencies (adding
cpp-httplib, blurhash, and single-applicaiton-qt5).

About this last dependency (single-applicaiton-qt5), I'm unsure on how
to name it. Also, devs are suggested to include its source directly,
and by default builds a static library. The main SingleApplication
class inherit from a Qt*Application class which is choosen at build
time, so the library to be useful in the target program must be built
with the correct flag (I'm using the one used by nheko by default).

Nheko builds and run fine. It should support voice call now, but I
cannot test it (I get `[error] WebRTC: failed to start device monitor',
not sure if the problem is in my setup, in gstreamer or in my package).
From 38be202dce880dd77a5ce774c0c8877bed84975e Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Wed, 20 Jan 2021 10:08:20 +0100
Subject: [PATCH 1/5] gnu: Add cpp-httplib.

* gnu/packages/cpp.scm (cpp-httplib): New variable.
---
gnu/packages/cpp.scm | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)

Toggle diff (67 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 45d3faeafb..2a03ec58c5 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -16,6 +16,7 @@
;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org>
;;; Copyright © 2020 Greg Hogan <code@greghogan.com>
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -57,6 +58,7 @@
#:use-module (gnu packages logging)
#:use-module (gnu packages maths)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages python)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages pretty-print)
@@ -475,6 +477,44 @@ tools:
@end itemize\n")
(license license:bsd-3)))
+(define-public cpp-httplib
+ (package
+ (name "cpp-httplib")
+ (version "0.8.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/yhirose/cpp-httplib")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32 "1l9n58ml7sygy723ws0z6brdbx4spc6fya6vgim11hpiy5b7zdkx"))
+ (file-name (git-file-name name version))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ '("-DBUILD_SHARED_LIBS=ON"
+ "-DHTTPLIB_COMPILE=ON")
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key source #:allow-other-keys)
+ ;; openssl genrsa wants to write a file in the git checkout
+ (copy-file (string-append source "/test") "test")
+ (chmod "test" #o744)
+ (invoke "make"))))))
+ (native-inputs
+ `(("python" ,python) ; required to build shared lib
+ ;; required for tests
+ ("openssl" ,openssl)
+ ("zlib" ,zlib)))
+ (home-page "https://github.com/yhirose/cpp-httplib")
+ (synopsis "C++ header-only HTTP/HTTPS server and client library")
+ (description "cpp-httplib is a C++11 single-file header-only cross
+platform blocking HTTP/HTTPS library, easy to setup. Just include the
+@file{httplib.h} file in your code!")
+ (license license:expat)))
+
(define-public cpplint
(package
(name "cpplint")
--
2.29.2
From 8fb37dd519fcc7038e54cdc858310983e29770f1 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Wed, 20 Jan 2021 17:56:04 +0100
Subject: [PATCH 2/5] gnu: Add blurhash.

* gnu/packages/image.scm (blurhash): New variable.
---
gnu/packages/image.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (53 lines)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 935333dee2..d633b2aeab 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -28,6 +28,7 @@
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -59,6 +60,7 @@
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gimp)
#:use-module (gnu packages gl)
@@ -1996,6 +1998,30 @@ SNG is implemented by a compiler/decompiler called sng that
losslessly translates between SNG and PNG.")
(license license:zlib)))
+(define-public blurhash
+ (package
+ (name "blurhash")
+ (version "0.0.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Nheko-Reborn/blurhash")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0jy2iigarskwfhskyladbb6l92x1fb3i3vz4bvcks0za4w5hfxk5"))))
+ (build-system meson-build-system)
+ (native-inputs
+ `(("cmake" ,cmake)
+ ("doctest" ,doctest)
+ ("gcc" ,gcc-8)))
+ (home-page "https://github.com/Nheko-Reborn/blurhash")
+ (synopsis "C++ blurhash encoder/decoder")
+ (description "Simple encoder and decoder for blurhashes. Contains a
+command line program as well as a shared library.")
+ (license license:boost1.0)))
+
(define-public lodepng
;; There are no tags in the repository, so we take the version as defined in
;; lodepng.cpp.
--
2.29.2
From 170fd188f809dd5f1f613a7bbfcf336efc191bd0 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Wed, 20 Jan 2021 17:59:24 +0100
Subject: [PATCH 3/5] gnu: mtxclient: Update to 0.4.0.

* gnu/packages/messaging.scm (mtxclient): Update to 0.4.0.
---
gnu/packages/messaging.scm | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

Toggle diff (33 lines)
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index c585326124..0368780fa6 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -18,7 +18,7 @@
;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si>
-;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
+;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
@@ -2227,7 +2227,7 @@ QMatrixClient project.")
(define-public mtxclient
(package
(name "mtxclient")
- (version "0.3.1")
+ (version "0.4.0")
(source
(origin
(method git-fetch)
@@ -2236,7 +2236,7 @@ QMatrixClient project.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1dg4dq20g0ah62j5s3gpsxqq4ny7lxkxdxa9q6g54hdwkrb9ms7x"))))
+ (base32 "1x820rcfz5r203dc8a0rzavcjjx10fsv1dicqg65m6kxx1w95j5r"))))
(arguments
`(#:configure-flags
(list
--
2.29.2
From e04e1025240dbe2abb990d7dcc39189a39179d69 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Wed, 20 Jan 2021 19:23:17 +0100
Subject: [PATCH 4/5] gnu: Add single-application-qt5.

* gnu/packages/qt.scm (single-application-qt5): New variable.
---
gnu/packages/qt.scm | 56 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)

Toggle diff (76 lines)
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 79d41b3e73..205d99c017 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -20,6 +20,7 @@
;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1947,6 +1948,61 @@ using the Chromium browser project. The Chromium source code has Google service
and binaries removed, and adds modular support for using system libraries.")
(license license:lgpl2.1+)))
+(define-public single-application-qt5
+ ;; Change in function signature, nheko requires at least this commit
+ (let ((commit "dc8042b5db58f36e06ba54f16f38b16c5eea9053"))
+ (package
+ (name "single-application-qt5")
+ (version (string-append "3.2.0-" (string-take commit 7)))
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/itay-grudev/SingleApplication")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "163aa2x2qb0h8w26si5ql833ilj427jjbdwlz1p2p8iaq6dh0vq1"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ; no check target
+ ;; Projects can decide how to build this library. You might need to
+ ;; override this flag (QApplication, QGuiApplication or
+ ;; QCoreApplication).
+ #:configure-flags '("-DQAPPLICATION_CLASS=QApplication")
+ #:phases
+ (modify-phases %standard-phases
+ ;; No install target, install things manually
+ (replace 'install
+ (lambda* (#:key inputs outputs source #:allow-other-keys)
+ (let* ((qt (assoc-ref inputs "qtbase"))
+ (qt-version ,(version-major (package-version qt)))
+ (out (assoc-ref outputs "out")))
+ (install-file
+ "libSingleApplication.a" (string-append out "/lib"))
+ (for-each
+ (lambda (file)
+ (install-file
+ (string-append source "/" file)
+ (string-append out "/include")))
+ '("SingleApplication"
+ "singleapplication.h" "singleapplication_p.h"))
+ #t))))))
+ (inputs
+ `(("qtbase" ,qtbase)))
+ (home-page "https://github.com/itay-grudev/SingleApplication")
+ (synopsis "Replacement of QtSingleApplication for Qt5 and Qt6")
+ (description
+ "SingleApplication is a replacement of the QtSingleApplication for Qt5 and Qt6.
+
+nKeeps the Primary Instance of your Application and kills each subsequent
+instances. It can (if enabled) spawn secondary (non-related to the primary)
+instances and can send data to the primary instance from secondary
+instances.")
+ (license license:expat))))
+
(define-public python-sip
(package
(name "python-sip")
--
2.29.2
From 5308eda5d0210beb1edfb0cdf44530a13673af41 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Wed, 20 Jan 2021 18:00:51 +0100
Subject: [PATCH 5/5] gnu: nheko: Update to 0.8.0.

* gnu/packages/messaging.scm (nheko): Update to 0.8.0.
---
gnu/packages/messaging.scm | 50 +++++++++++++++++++++++++++++---------
1 file changed, 39 insertions(+), 11 deletions(-)

Toggle diff (97 lines)
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 0368780fa6..c5e0c828b0 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -2277,7 +2277,7 @@ for the Matrix protocol. It is built on to of @code{Boost.Asio}.")
(define-public nheko
(package
(name "nheko")
- (version "0.7.2")
+ (version "0.8.0")
(source
(origin
(method git-fetch)
@@ -2286,19 +2286,40 @@ for the Matrix protocol. It is built on to of @code{Boost.Asio}.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1cbhgaf9klgxdirrxj571fqwspm0byl75c1xc40l727a6qswvp7s"))))
+ (base32 "00d6wx3lcgbks74jkdyifqxf8nlravqh88fyljd0sy7kzbah9msf"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (delete-file-recursively "third_party")
+ #t))))
(arguments
`(#:tests? #f ;no test target
#:configure-flags
- (list
- "-DCMAKE_BUILD_TYPE=Release"
- "-DCMAKE_CXX_FLAGS=-fpermissive")
+ '("-DCMAKE_BUILD_TYPE=Release"
+ "-DBUILD_DOCS=ON"
+ ;; Fix required because we are using a static SingleApplication
+ "-DCMAKE_CXX_FLAGS= \"-DQAPPLICATION_CLASS=QApplication\" "
+ ;; Compile Qml will make Nheko faster, but you will need to recompile
+ ;; it, when you update Qt. That's fine for us.
+ "-DCOMPILE_QML=ON")
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'remove-Werror
- (lambda _
- (substitute* "CMakeLists.txt"
- (("-Werror") ""))
+ (add-after 'unpack 'unbundle-dependencies
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((single-app (assoc-ref inputs "single-application")))
+ (substitute* "CMakeLists.txt"
+ ;; Remove include and source dirs,replace with the correct one
+ (("third_party/blurhash/blurhash.cpp") "")
+ (("third_party/cpp-httplib-0.5.12")
+ (string-append "\"" single-app "/include\""))
+ (("add_subdirectory.*third_party/SingleApplication.*") "")
+ ;; Link using the correct static/shared libs
+ (("SingleApplication::SingleApplication")
+ (string-append
+ ;; Dynamic libraries
+ "httplib" "\n" "blurhash" "\n"
+ ;; Static library
+ single-app "/lib/libSingleApplication.a"))))
#t))
(add-after 'unpack 'fix-determinism
(lambda _
@@ -2308,7 +2329,10 @@ for the Matrix protocol. It is built on to of @code{Boost.Asio}.")
(build-system qt-build-system)
(inputs
`(("boost" ,boost)
+ ("blurhash" ,blurhash)
+ ("cpp-httplib" ,cpp-httplib)
("cmark" ,cmark)
+ ("gst-plugins-bad" ,gst-plugins-bad) ; sdp & webrtc for calls
("json-modern-cxx" ,json-modern-cxx)
("libolm" ,libolm)
("lmdb" ,lmdb)
@@ -2317,6 +2341,7 @@ for the Matrix protocol. It is built on to of @code{Boost.Asio}.")
("openssl" ,openssl)
("qtbase" ,qtbase)
("qtdeclarative" ,qtdeclarative)
+ ("qtkeychain" ,qtkeychain)
("qtgraphicaleffects" ,qtgraphicaleffects)
("qtmultimedia" ,qtmultimedia)
("qtquickcontrols2" ,qtquickcontrols2)
@@ -2325,8 +2350,11 @@ for the Matrix protocol. It is built on to of @code{Boost.Asio}.")
("tweeny" ,tweeny)
("zlib" ,zlib)))
(native-inputs
- `(("pkg-config" ,pkg-config)
- ("qtlinguist" ,qttools)))
+ `(("doxygen" ,doxygen)
+ ("graphviz" ,graphviz)
+ ("pkg-config" ,pkg-config)
+ ("qtlinguist" ,qttools)
+ ("single-application" ,single-application-qt5)))
(home-page "https://github.com/Nheko-Reborn/nheko")
(synopsis "Desktop client for Matrix using Qt and C++14")
(description "@code{Nheko} want to provide a native desktop app for the
--
2.29.2
N
N
Nicolò Balzarotti wrote on 28 Jan 2021 00:02
Re: bug#46012: Acknowledgement (Upgrade Nheko)
(address . 46012@debbugs.gnu.org)
87ft2mc7a4.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
In the meanwhile a new version has been released, so here's the update
patch set. Discussion happened on bug#46013, v3, compared to v2, just
updates mtxclient to v 0.4.1 (with relative hash) and nheko to 0.8.1.
From 06f9fa6103ce202299bb51bea8ff2b1e46a39644 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Wed, 27 Jan 2021 23:44:04 +0100
Subject: [PATCH v3 1/4] gnu: Add cpp-httplib.

* gnu/packages/cpp.scm (cpp-httplib): New variable.
---
gnu/packages/cpp.scm | 40 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)

Toggle diff (67 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 73a3ceb2df..a1bef2332f 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -16,6 +16,7 @@
;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org>
;;; Copyright © 2020, 2021 Greg Hogan <code@greghogan.com>
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
+;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -57,6 +58,7 @@
#:use-module (gnu packages logging)
#:use-module (gnu packages maths)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages python)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages pretty-print)
@@ -475,6 +477,44 @@ tools:
@end itemize\n")
(license license:bsd-3)))
+(define-public cpp-httplib
+ (package
+ (name "cpp-httplib")
+ (version "0.8.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/yhirose/cpp-httplib")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32 "1l9n58ml7sygy723ws0z6brdbx4spc6fya6vgim11hpiy5b7zdkx"))
+ (file-name (git-file-name name version))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ '("-DBUILD_SHARED_LIBS=ON"
+ "-DHTTPLIB_COMPILE=ON")
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key source #:allow-other-keys)
+ ;; openssl genrsa wants to write a file in the git checkout
+ (copy-file (string-append source "/test") "test")
+ (chmod "test" #o744)
+ (invoke "make"))))))
+ (native-inputs
+ `(("python" ,python) ; required to build shared lib
+ ;; required for tests
+ ("openssl" ,openssl)
+ ("zlib" ,zlib)))
+ (home-page "https://github.com/yhirose/cpp-httplib")
+ (synopsis "C++ header-only HTTP/HTTPS server and client library")
+ (description "cpp-httplib is a C++11 single-file header-only cross
+platform blocking HTTP/HTTPS library, easy to setup. Just include the
+@file{httplib.h} file in your code!")
+ (license license:expat)))
+
(define-public cpplint
(package
(name "cpplint")
--
2.30.0
From a465b378ec920f990b72e80df31a42a6083c3f23 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Wed, 20 Jan 2021 17:56:04 +0100
Subject: [PATCH v3 2/4] gnu: Add blurhash.

* gnu/packages/image.scm (blurhash): New variable.
---
gnu/packages/image.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (53 lines)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 935333dee2..d633b2aeab 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -28,6 +28,7 @@
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -59,6 +60,7 @@
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gimp)
#:use-module (gnu packages gl)
@@ -1996,6 +1998,30 @@ SNG is implemented by a compiler/decompiler called sng that
losslessly translates between SNG and PNG.")
(license license:zlib)))
+(define-public blurhash
+ (package
+ (name "blurhash")
+ (version "0.0.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Nheko-Reborn/blurhash")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0jy2iigarskwfhskyladbb6l92x1fb3i3vz4bvcks0za4w5hfxk5"))))
+ (build-system meson-build-system)
+ (native-inputs
+ `(("cmake" ,cmake)
+ ("doctest" ,doctest)
+ ("gcc" ,gcc-8)))
+ (home-page "https://github.com/Nheko-Reborn/blurhash")
+ (synopsis "C++ blurhash encoder/decoder")
+ (description "Simple encoder and decoder for blurhashes. Contains a
+command line program as well as a shared library.")
+ (license license:boost1.0)))
+
(define-public lodepng
;; There are no tags in the repository, so we take the version as defined in
;; lodepng.cpp.
--
2.30.0
T
T
Tobias Geerinckx-Rice wrote on 27 Apr 2021 15:13
(no subject)
(address . control@debbugs.gnu.org)
877dknswe4.fsf@nckx
merge 47273 46012 48057
N
N
Nicolò Balzarotti wrote on 27 Apr 2021 15:56
Re: [bug#46012] Acknowledgement (Upgrade Nheko)
(address . 46012@debbugs.gnu.org)
87k0onrfu7.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Nicolò Balzarotti <anothersms@gmail.com> writes:

Toggle quote (3 lines)
> In the meanwhile a new version has been released, so here's the update
> patch set. Discussion happened on bug#46013, v3, compared to v2, just
> updates mtxclient to v 0.4.1 (with relative hash) and nheko to 0.8.1.
A new version has been release. I updated the patchset accordingly.
This (v4) updates mtxclient to 0.5.1, changes lmdbxx repo to the one
used by nheko (nheko is the only package in guix using lmdbxx) and
upgrades nheko to 0.8.2. I upgraded them all in the same commit as each
upgrade breaks the other package.

Thanks!
From 438b0f93f2f962be12f7b0f0ce6e3f6f81fa8a03 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Wed, 27 Jan 2021 23:44:04 +0100
Subject: [PATCH v4 1/4] gnu: Add cpp-httplib.

* gnu/packages/cpp.scm (cpp-httplib): New variable.
---
gnu/packages/cpp.scm | 41 ++++++++++++++++++++++++++++++++++++++++-
1 file changed, 40 insertions(+), 1 deletion(-)

Toggle diff (68 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 58345e7c33..77af6a05f9 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -18,7 +18,7 @@
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2020 Milkey Mouse <milkeymouse@meme.institute>
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
-
+;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -65,6 +65,7 @@
#:use-module (gnu packages maths)
#:use-module (gnu packages onc-rpc)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages python)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages pretty-print)
@@ -555,6 +556,44 @@ tools:
@end itemize\n")
(license license:bsd-3)))
+(define-public cpp-httplib
+ (package
+ (name "cpp-httplib")
+ (version "0.8.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/yhirose/cpp-httplib")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32 "1l9n58ml7sygy723ws0z6brdbx4spc6fya6vgim11hpiy5b7zdkx"))
+ (file-name (git-file-name name version))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ '("-DBUILD_SHARED_LIBS=ON"
+ "-DHTTPLIB_COMPILE=ON")
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* (#:key source #:allow-other-keys)
+ ;; openssl genrsa wants to write a file in the git checkout
+ (copy-file (string-append source "/test") "test")
+ (chmod "test" #o744)
+ (invoke "make"))))))
+ (native-inputs
+ `(("python" ,python) ; required to build shared lib
+ ;; required for tests
+ ("openssl" ,openssl)
+ ("zlib" ,zlib)))
+ (home-page "https://github.com/yhirose/cpp-httplib")
+ (synopsis "C++ header-only HTTP/HTTPS server and client library")
+ (description "cpp-httplib is a C++11 single-file header-only cross
+platform blocking HTTP/HTTPS library, easy to setup. Just include the
+@file{httplib.h} file in your code!")
+ (license license:expat)))
+
(define-public cpplint
(package
(name "cpplint")
--
2.31.1
From 38ee912b3664a23b68015e011340a773cd0a4073 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Wed, 20 Jan 2021 17:56:04 +0100
Subject: [PATCH v4 2/4] gnu: Add blurhash.

* gnu/packages/image.scm (blurhash): New variable.
---
gnu/packages/image.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (53 lines)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index d0c12016ca..a12d067ed7 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -29,6 +29,7 @@
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
+;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -60,6 +61,7 @@
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gimp)
#:use-module (gnu packages gl)
@@ -2035,6 +2037,30 @@ SNG is implemented by a compiler/decompiler called sng that
losslessly translates between SNG and PNG.")
(license license:zlib)))
+(define-public blurhash
+ (package
+ (name "blurhash")
+ (version "0.0.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Nheko-Reborn/blurhash")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0jy2iigarskwfhskyladbb6l92x1fb3i3vz4bvcks0za4w5hfxk5"))))
+ (build-system meson-build-system)
+ (native-inputs
+ `(("cmake" ,cmake)
+ ("doctest" ,doctest)
+ ("gcc" ,gcc-8)))
+ (home-page "https://github.com/Nheko-Reborn/blurhash")
+ (synopsis "C++ blurhash encoder/decoder")
+ (description "Simple encoder and decoder for blurhashes. Contains a
+command line program as well as a shared library.")
+ (license license:boost1.0)))
+
(define-public lodepng
;; There are no tags in the repository, so we take the version as defined in
;; lodepng.cpp.
--
2.31.1
From a843f4b89ceaa1bf9d269ff3037f948bb0edbd47 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Wed, 20 Jan 2021 19:23:17 +0100
Subject: [PATCH v4 3/4] gnu: Add single-application-qt5.

* gnu/packages/qt.scm (single-application-qt5): New variable.
---
gnu/packages/qt.scm | 56 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)

Toggle diff (76 lines)
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index b206deaeba..c9eef185c9 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -21,6 +21,7 @@
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
+;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1806,6 +1807,61 @@ using the Chromium browser project. The Chromium source code has Google service
and binaries removed, and adds modular support for using system libraries.")
(license license:lgpl2.1+)))
+(define-public single-application-qt5
+ ;; Change in function signature, nheko requires at least this commit
+ (let ((commit "dc8042b5db58f36e06ba54f16f38b16c5eea9053"))
+ (package
+ (name "single-application-qt5")
+ (version (string-append "3.2.0-" (string-take commit 7)))
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/itay-grudev/SingleApplication")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "163aa2x2qb0h8w26si5ql833ilj427jjbdwlz1p2p8iaq6dh0vq1"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ; no check target
+ ;; Projects can decide how to build this library. You might need to
+ ;; override this flag (QApplication, QGuiApplication or
+ ;; QCoreApplication).
+ #:configure-flags '("-DQAPPLICATION_CLASS=QApplication")
+ #:phases
+ (modify-phases %standard-phases
+ ;; No install target, install things manually
+ (replace 'install
+ (lambda* (#:key inputs outputs source #:allow-other-keys)
+ (let* ((qt (assoc-ref inputs "qtbase"))
+ (qt-version ,(version-major (package-version qt)))
+ (out (assoc-ref outputs "out")))
+ (install-file
+ "libSingleApplication.a" (string-append out "/lib"))
+ (for-each
+ (lambda (file)
+ (install-file
+ (string-append source "/" file)
+ (string-append out "/include")))
+ '("SingleApplication"
+ "singleapplication.h" "singleapplication_p.h"))
+ #t))))))
+ (inputs
+ `(("qtbase" ,qtbase)))
+ (home-page "https://github.com/itay-grudev/SingleApplication")
+ (synopsis "Replacement of QtSingleApplication for Qt5 and Qt6")
+ (description
+ "SingleApplication is a replacement of the QtSingleApplication for Qt5 and Qt6.
+
+nKeeps the Primary Instance of your Application and kills each subsequent
+instances. It can (if enabled) spawn secondary (non-related to the primary)
+instances and can send data to the primary instance from secondary
+instances.")
+ (license license:expat))))
+
(define-public python-sip
(package
(name "python-sip")
--
2.31.1
M
M
Maxime Devos wrote on 27 Apr 2021 20:09
0d873a1e5f8db448e279d558d9f6845e161cccb7.camel@telenet.be
Nicolò Balzarotti schreef op di 27-04-2021 om 15:56 [+0200]:
Toggle quote (5 lines)
> + (synopsis "C++ header-only HTTP/HTTPS server and client library")
> + (description "cpp-httplib is a C++11 single-file header-only cross
> +platform blocking HTTP/HTTPS library, easy to setup. Just include the
> +@file{httplib.h} file in your code!")

This is a little misleading, as shared libraries are build, as BUILD_SHARED_LIBS
is enabled. Maybe "cpp-http is a single-file header-only library" -->
"cpp-http can be used as a single-file header-only
library"?

About ‘header-only’: this is true, but ultimately irrelevant to the user
(= C++ developer on a Guix System or using Guix on top of a foreign distro).
But there's also a desirable thing called ‘portability’, the user might be
searching for a single-header web server software to distribute to other
people (not on Guix) in source form ...

I'm conflicted if "single-file header" should be included in the description.
If you decide to remove it, I suggest you add a comment like

;; this package is not graftable, as everything is implemented in a single
;; header

to prevent trouble in a (admittedly somewhat far-fetched, no insult intended
to its developers) future where cpp-httplib becomes a very popular dependency
in Guix.

Toggle quote (9 lines)
> + #:phases
> + (modify-phases %standard-phases
> + (replace 'check
> + (lambda* (#:key source #:allow-other-keys)
> + ;; openssl genrsa wants to write a file in the git checkout
> + (copy-file (string-append source "/test") "test")
> + (chmod "test" #o744)
> + (invoke "make"))))))

Tests most likely should not be run when cross-compiling. I'm not 100% sure,
but you might need to do something like

Toggle quote (4 lines)
> + (lambda* (#:key tests? source #:allow-other-keys)
> + ;; openssl genrsa wants to write a file in the git checkout
> + (when tests?
> + (copy-file
(string-append source "/test") "test")
Toggle quote (3 lines)
> + (chmod "test" #o744)
> + (invoke "make")))))))

Search for example for "when tests?" in gnu/packages/python-xyz.scm.

Toggle quote (2 lines)
> + ("zlib" ,zlib)))

a few lines

#ifdef CPPHTTPLIB_ZLIB_SUPPORT
#include <zlib.h>
#endif

so it seems zlib should be in (inputs ...) instead.

I also saw these lines:

#ifdef CPPHTTPLIB_BROTLI_SUPPORT
#include <brotli/decode.h>
#include <brotli/encode.h>
#endif

Would it be useful to include brotli?

#ifdef CPPHTTPLIB_OPENSSL_SUPPORT
#include <openssl/err.h>
#include <openssl/md5.h>
...

Likewise, for openssl?

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

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYIhTRBccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7vk4AQDTpwkB30S1On0jKIQEbcdCWT4u
eEqjY2juhlzJibCa6QEApqJrVdZepIHcGbb3A/KgU69qUJh7XDBl1KSHAqDUOg8=
=uVKs
-----END PGP SIGNATURE-----


N
N
Nicolò Balzarotti wrote on 27 Apr 2021 23:00
87eeevqw7t.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me
Hi Maxime, many thanks for the review!

Maxime Devos <maximedevos@telenet.be> writes:

Toggle quote (11 lines)
> Nicolò Balzarotti schreef op di 27-04-2021 om 15:56 [+0200]:
>> + (synopsis "C++ header-only HTTP/HTTPS server and client library")
>> + (description "cpp-httplib is a C++11 single-file header-only cross
>> +platform blocking HTTP/HTTPS library, easy to setup. Just include the
>> +@file{httplib.h} file in your code!")
>
> This is a little misleading, as shared libraries are build, as BUILD_SHARED_LIBS
> is enabled. Maybe "cpp-http is a single-file header-only library" -->
> "cpp-http can be used as a single-file header-only
> library"?
>
I removed it from the synopsis, and reworded the description to: 1. make
it sound less like marketing, and keeping the single-header thing as a bonus.

Toggle quote (16 lines)
> About ‘header-only’: this is true, but ultimately irrelevant to the user
> (= C++ developer on a Guix System or using Guix on top of a foreign distro).
> But there's also a desirable thing called ‘portability’, the user might be
> searching for a single-header web server software to distribute to other
> people (not on Guix) in source form ...
>
> I'm conflicted if "single-file header" should be included in the description.
> If you decide to remove it, I suggest you add a comment like
>
> ;; this package is not graftable, as everything is implemented in a single
> ;; header
>
> to prevent trouble in a (admittedly somewhat far-fetched, no insult intended
> to its developers) future where cpp-httplib becomes a very popular dependency
> in Guix.
>
I don't know enought about grafts, so I trust you on that. I did not
know where to put the comment, so I added it at the very top.

I also noticed that this was updated since last time, so I updated it to
0.8.8 (latest tagged version).

Toggle quote (22 lines)
>> + #:phases
>> + (modify-phases %standard-phases
>> + (replace 'check
>> + (lambda* (#:key source #:allow-other-keys)
>> + ;; openssl genrsa wants to write a file in the git checkout
>> + (copy-file (string-append source "/test") "test")
>> + (chmod "test" #o744)
>> + (invoke "make"))))))
>
> Tests most likely should not be run when cross-compiling.

> I'm not 100% sure, but you might need to do something like
>
>> + (lambda* (#:key tests? source #:allow-other-keys)
>> + ;; openssl genrsa wants to write a file in the git checkout
>> + (when tests?
>> + (copy-file
> (string-append source "/test") "test")
>> + (chmod "test" #o744)
>> + (invoke "make")))))))
>

Didn't think about that, I wrapped it in a `when tests?` (and added
`tests?` as argument to the lambda) as you suggested. I also changed it
a bit making it more clear. There are now tests requiring network
access, so I disabled them.

Toggle quote (28 lines)
>
>> + ("zlib" ,zlib)))
>
> In <https://github.com/yhirose/cpp-httplib/blob/master/httplib.h> I see
> a few lines
>
> #ifdef CPPHTTPLIB_ZLIB_SUPPORT
> #include <zlib.h>
> #endif
>
> so it seems zlib should be in (inputs ...) instead.
>

> I also saw these lines:
>
> #ifdef CPPHTTPLIB_BROTLI_SUPPORT
> #include <brotli/decode.h>
> #include <brotli/encode.h>
> #endif
>
> Would it be useful to include brotli?
>
> #ifdef CPPHTTPLIB_OPENSSL_SUPPORT
> #include <openssl/err.h>
> #include <openssl/md5.h>
> ...
>
> Likewise, for openssl?
Sure, added brotli and moved openssl to inputs. I also aadded the
"HTTPLIB_REQUIRE_" flags just to be sure they are used int the build.
They shouldn't be needed as HTTPLIB_USE_*_IF_AVAILABLE defaults to ON,
but if they change default we are covered.


Regarding why openssl and zlib were in native-inputs, this is (probably)
how it went: I built it without openssl, tests failed to run because the
command openssl was required to generate a certificate, so I added it to
native-inputs. Then probably I added zlib not noticing I placed it
under native-inputs, at least that's how I think it went.

nheko still builds and run, so here the v5 of the series.

Toggle quote (4 lines)
>
> Greetings,
> Maxime.

Thanks, Nicolò
From 5ea66aa57f81976d39c60f59357ddf6027fadabb Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Wed, 27 Jan 2021 23:44:04 +0100
Subject: [PATCH v5 1/4] gnu: Add cpp-httplib.

* gnu/packages/cpp.scm (cpp-httplib): New variable.
---
gnu/packages/cpp.scm | 63 +++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 62 insertions(+), 1 deletion(-)

Toggle diff (90 lines)
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 58345e7c33..307e5c3028 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -18,7 +18,7 @@
;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2020 Milkey Mouse <milkeymouse@meme.institute>
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
-
+;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -65,6 +65,7 @@
#:use-module (gnu packages maths)
#:use-module (gnu packages onc-rpc)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages python)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages pretty-print)
@@ -555,6 +556,66 @@ tools:
@end itemize\n")
(license license:bsd-3)))
+(define-public cpp-httplib
+ ;; this package is not graftable, as everything is implemented in a single
+ ;; header
+ (package
+ (name "cpp-httplib")
+ (version "0.8.8")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/yhirose/cpp-httplib")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32 "0c0gyfbvm34bgrqy9fhfxw1f8nb9zhf063j7xq91k892flb7qm1c"))
+ (file-name (git-file-name name version))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ '("-DBUILD_SHARED_LIBS=ON"
+ "-DHTTPLIB_COMPILE=ON"
+ "-DHTTPLIB_REQUIRE_BROTLI=ON"
+ "-DHTTPLIB_REQUIRE_OPENSSL=ON"
+ "-DHTTPLIB_REQUIRE_ZLIB=ON")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'disable-network-tests
+ (lambda _
+ (for-each
+ (lambda (test)
+ (substitute* "test/test.cc"
+ (((string-append "\\(" test))
+ (string-append "(DISABLED_" test))))
+ ;; There are tests requiring network access, disable them
+ '("AbsoluteRedirectTest" "BaseAuthTest" "CancelTest"
+ "ChunkedEncodingTest" "ChunkedEncodingTest"
+ "DecodeWithChunkedEncoding" "DefaultHeadersTest"
+ "DigestAuthTest" "HttpsToHttpRedirectTest"
+ "RangeTest" "RedirectTest" "RelativeRedirectTest"
+ "SSLClientTest" "SendAPI" "TooManyRedirectTest" "UrlWithSpace"
+ "YahooRedirectTest" "YahooRedirectTest"))))
+ (replace 'check
+ (lambda* (#:key source tests? #:allow-other-keys)
+ ;; openssl genrsa wants to write a file in the git checkout
+ (when tests?
+ (with-directory-excursion "../source/test"
+ (invoke "make"))))))))
+ (native-inputs
+ ;; required to build shared lib
+ `(("python" ,python)))
+ (inputs
+ `(("brotli" ,brotli)
+ ("openssl" ,openssl)
+ ("zlib" ,zlib)))
+ (home-page "https://github.com/yhirose/cpp-httplib")
+ (synopsis "C++ HTTP/HTTPS server and client library")
+ (description "cpp-httplib is a C++11 single-file cross platform blocking
+HTTP/HTTPS library, easy to setup. It can also be used as a single-header
+library.")
+ (license license:expat)))
+
(define-public cpplint
(package
(name "cpplint")
--
2.31.1
From f2982d9f3a8f6fcf66950ed78259125f3750ca08 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Wed, 20 Jan 2021 17:56:04 +0100
Subject: [PATCH v5 2/4] gnu: Add blurhash.

* gnu/packages/image.scm (blurhash): New variable.
---
gnu/packages/image.scm | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)

Toggle diff (53 lines)
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index d0c12016ca..a12d067ed7 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -29,6 +29,7 @@
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
+;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -60,6 +61,7 @@
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gimp)
#:use-module (gnu packages gl)
@@ -2035,6 +2037,30 @@ SNG is implemented by a compiler/decompiler called sng that
losslessly translates between SNG and PNG.")
(license license:zlib)))
+(define-public blurhash
+ (package
+ (name "blurhash")
+ (version "0.0.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Nheko-Reborn/blurhash")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0jy2iigarskwfhskyladbb6l92x1fb3i3vz4bvcks0za4w5hfxk5"))))
+ (build-system meson-build-system)
+ (native-inputs
+ `(("cmake" ,cmake)
+ ("doctest" ,doctest)
+ ("gcc" ,gcc-8)))
+ (home-page "https://github.com/Nheko-Reborn/blurhash")
+ (synopsis "C++ blurhash encoder/decoder")
+ (description "Simple encoder and decoder for blurhashes. Contains a
+command line program as well as a shared library.")
+ (license license:boost1.0)))
+
(define-public lodepng
;; There are no tags in the repository, so we take the version as defined in
;; lodepng.cpp.
--
2.31.1
From a709f28a8dacd890a46eb848bbf6b42efaa6a447 Mon Sep 17 00:00:00 2001
From: nixo <nicolo@nixo.xyz>
Date: Wed, 20 Jan 2021 19:23:17 +0100
Subject: [PATCH v5 3/4] gnu: Add single-application-qt5.

* gnu/packages/qt.scm (single-application-qt5): New variable.
---
gnu/packages/qt.scm | 56 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)

Toggle diff (76 lines)
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index b206deaeba..c9eef185c9 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -21,6 +21,7 @@
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
+;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1806,6 +1807,61 @@ using the Chromium browser project. The Chromium source code has Google service
and binaries removed, and adds modular support for using system libraries.")
(license license:lgpl2.1+)))
+(define-public single-application-qt5
+ ;; Change in function signature, nheko requires at least this commit
+ (let ((commit "dc8042b5db58f36e06ba54f16f38b16c5eea9053"))
+ (package
+ (name "single-application-qt5")
+ (version (string-append "3.2.0-" (string-take commit 7)))
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/itay-grudev/SingleApplication")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "163aa2x2qb0h8w26si5ql833ilj427jjbdwlz1p2p8iaq6dh0vq1"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:tests? #f ; no check target
+ ;; Projects can decide how to build this library. You might need to
+ ;; override this flag (QApplication, QGuiApplication or
+ ;; QCoreApplication).
+ #:configure-flags '("-DQAPPLICATION_CLASS=QApplication")
+ #:phases
+ (modify-phases %standard-phases
+ ;; No install target, install things manually
+ (replace 'install
+ (lambda* (#:key inputs outputs source #:allow-other-keys)
+ (let* ((qt (assoc-ref inputs "qtbase"))
+ (qt-version ,(version-major (package-version qt)))
+ (out (assoc-ref outputs "out")))
+ (install-file
+ "libSingleApplication.a" (string-append out "/lib"))
+ (for-each
+ (lambda (file)
+ (install-file
+ (string-append source "/" file)
+ (string-append out "/include")))
+ '("SingleApplication"
+ "singleapplication.h" "singleapplication_p.h"))
+ #t))))))
+ (inputs
+ `(("qtbase" ,qtbase)))
+ (home-page "https://github.com/itay-grudev/SingleApplication")
+ (synopsis "Replacement of QtSingleApplication for Qt5 and Qt6")
+ (description
+ "SingleApplication is a replacement of the QtSingleApplication for Qt5 and Qt6.
+
+nKeeps the Primary Instance of your Application and kills each subsequent
+instances. It can (if enabled) spawn secondary (non-related to the primary)
+instances and can send data to the primary instance from secondary
+instances.")
+ (license license:expat))))
+
(define-public python-sip
(package
(name "python-sip")
--
2.31.1
L
L
Ludovic Courtès wrote on 3 Sep 2021 22:07
Re: bug#46012: Upgrade Nheko
(name . Nicolò Balzarotti)(address . anothersms@gmail.com)
87y28dzamc.fsf_-_@gnu.org
Hi Nicolò,

Nicolò Balzarotti <anothersms@gmail.com> skribis:

Toggle quote (7 lines)
>>From 5ea66aa57f81976d39c60f59357ddf6027fadabb Mon Sep 17 00:00:00 2001
> From: nixo <nicolo@nixo.xyz>
> Date: Wed, 27 Jan 2021 23:44:04 +0100
> Subject: [PATCH v5 1/4] gnu: Add cpp-httplib.
>
> * gnu/packages/cpp.scm (cpp-httplib): New variable.

[...]

Toggle quote (7 lines)
>>From f2982d9f3a8f6fcf66950ed78259125f3750ca08 Mon Sep 17 00:00:00 2001
> From: nixo <nicolo@nixo.xyz>
> Date: Wed, 20 Jan 2021 17:56:04 +0100
> Subject: [PATCH v5 2/4] gnu: Add blurhash.
>
> * gnu/packages/image.scm (blurhash): New variable.

[...]

Toggle quote (7 lines)
>>From a709f28a8dacd890a46eb848bbf6b42efaa6a447 Mon Sep 17 00:00:00 2001
> From: nixo <nicolo@nixo.xyz>
> Date: Wed, 20 Jan 2021 19:23:17 +0100
> Subject: [PATCH v5 3/4] gnu: Add single-application-qt5.
>
> * gnu/packages/qt.scm (single-application-qt5): New variable.

[...]

Toggle quote (19 lines)
>>From 2564b19691b0721407ee48f90de18353796278d0 Mon Sep 17 00:00:00 2001
> From: nixo <nicolo@nixo.xyz>
> Date: Wed, 27 Jan 2021 23:54:55 +0100
> Subject: [PATCH v5 4/4] gnu: nheko: Update to 0.8.2.
>
> * gnu/packages/messaging.scm (nheko): Update to 0.8.2.
> [source snippet]: Remove third_party folder.
> [arguments]: Remove -fpermissive flag, remove remove-Werror phase, add phase
> wrap-program and unbundle-dependencies.
> [inputs]: Add gst-plugins-base, gst-plugins-bad, libnice, qtkeychain,
> and unbundle blurhash, cpp-httplib and single-application, remove tweeny.
> [native-inputs]: Add doxygen, graphviz used to build documentation.
> [description]: Simplify by removing the long list, add new features.
> (mtxclient): Update to 0.5.1.
> [arguments]: Remove set-home phase.
> * gnu/packages/databases.scm (lmdbxx): Update to 1.0.0.
> [source]: Change repository to a fork required by nheko.
> [home-page]: Update accordingly.

I’m really sorry that it took 7 months (!), but I’ve now applied this
series. I had to tweak ‘single-application-qt5’ to adjust it to the
qtbase -> qtbase-5 rename, but that’s about it.

Thank you, and thanks Maxime for the review—much appreciated, as always!

Ludo’.
Closed
?