Subject: [bug#38395] Acknowledgement ([PATCH] gnu: mumble: Update to 1.3.0.)

From: Ivan Vilata i Balaguer <[email-masked]>
Date: Sun, 15 Dec 2019 20:44:11 -0500

Efraim Flashner (2019-12-05 11:02:36 +0200) wrote:

> With the 'staging' branch being merged into master the patch no longer
> cleanly applies.
> 
> Also, since you've removed a patch from the gnu/packages/patches folder
> you need to remove it also from gnu/local.mk. The two other things are
> the commit message doesn't list all of the changes and with the new
> qt-build-system that would probably be a better choice than wrapping the
> binaries yourself, but with an updated patch without that I can help
> work on that since it is such a new change.

Hi!  I'm attaching a reviewed set of patches.  The first patch updates the
original one to fix the copyright line (so it applies cleanly again), the
`local.mk` line removal and commit message completeness.  The second patch
adds the update to `qt-build-system`.  From the comments in
`guix/build-system/qt.scm` I gather that no other changes are missing, but I
may be wrong.

Thanks!

-- 
Ivan Vilata i Balaguer -- https://elvil.net/
From aea8a70894c170d3c825c26d25f83b3ef05f2820 Mon Sep 17 00:00:00 2001
From: Ivan Vilata-i-Balaguer <[email-masked]>
Date: Sun, 15 Dec 2019 14:22:08 -0500
Subject: [PATCH 1/2] gnu: mumble: Update to 1.3.0.

Besides the update in itself, bundled software components are enabled as long
as they are not already implemented in an existing package (in which case the
package is used instead).  Some comments were added to indicate why bundled
software components are kept or removed, why features are disabled, and the
reason to include each license.

* gnu/packages/telephony.scm: Add import of (gnu packages gl).
* gnu/packages/telephony.scm (mumble): Update to 1.3.0.
* gnu/packages/patches/mumble-1.2.19-abs.patch: Remove file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                 |   1 -
 gnu/packages/patches/mumble-1.2.19-abs.patch |  31 -----
 gnu/packages/telephony.scm                   | 114 ++++++++++++-------
 3 files changed, 70 insertions(+), 76 deletions(-)
 delete mode 100644 gnu/packages/patches/mumble-1.2.19-abs.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 32b2c141fa..1034e0198d 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1158,7 +1158,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/mrrescue-support-love-11.patch		\
   %D%/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch \
   %D%/packages/patches/mtools-mformat-uninitialized.patch	\
-  %D%/packages/patches/mumble-1.2.19-abs.patch			\
   %D%/packages/patches/mumps-build-parallelism.patch		\
   %D%/packages/patches/mumps-shared-libseq.patch		\
   %D%/packages/patches/mumps-shared-mumps.patch			\
diff --git a/gnu/packages/patches/mumble-1.2.19-abs.patch b/gnu/packages/patches/mumble-1.2.19-abs.patch
deleted file mode 100644
index 683325f4bc..0000000000
--- a/gnu/packages/patches/mumble-1.2.19-abs.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From ea861fe86743c8402bbad77d8d1dd9de8dce447e Mon Sep 17 00:00:00 2001
-From: Mikkel Krautz <[email-masked]>
-Date: Fri, 29 Dec 2017 14:47:25 +0100
-Subject: [PATCH] AudioOutput: do not use non-existant template version of
- std::abs.
-
-This change fixes AudioOutput to use the float overload of std::abs:
-
-    float std::abs(float);
-
-instead of a non-existant template version (for newer Boost 1.66).
-
-Fixes mumble-voip/mumble#3281
-
----
- src/mumble/AudioOutput.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/mumble/AudioOutput.cpp b/src/mumble/AudioOutput.cpp
-index cbe0c0e2b..7a0a5e2ab 100644
---- a/src/mumble/AudioOutput.cpp
-+++ b/src/mumble/AudioOutput.cpp
-@@ -437,7 +437,7 @@ bool AudioOutput::mix(void *outbuff, unsigned int nsamp) {
- 					top[2] = 0.0f;
- 				}
- 
--				if (std::abs<float>(front[0] * top[0] + front[1] * top[1] + front[2] * top[2]) > 0.01f) {
-+				if (std::abs(front[0] * top[0] + front[1] * top[1] + front[2] * top[2]) > 0.01f) {
- 					// Not perpendicular. Assume Y up and rotate 90 degrees.
- 
- 					float azimuth = 0.0f;
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 5b6c578fce..53911f4a94 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -13,6 +13,7 @@
 ;;; Copyright © 2018 Tim Gesthuizen <[email-masked]>
 ;;; Copyright © 2019 Pierre Neidhardt <[email-masked]>
 ;;; Copyright © 2019 Jan Wielkiewicz <[email-masked]>
+;;; Copyright © 2019 Ivan Vilata i Balaguer <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,6 +45,7 @@
   #:use-module (gnu packages file)
   #:use-module (gnu packages protobuf)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
@@ -379,30 +381,34 @@ address of one of the participants.")
 (define-public mumble
   (package
     (name "mumble")
-    (version "1.2.19")
+    (version "1.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://mumble.info/snapshot/"
                                   name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1s60vaici3v034jzzi20x23hsj6mkjlc0glipjq4hffrg9qgnizh"))
-              (patches (search-patches "mumble-1.2.19-abs.patch"))
+                "03dqg5yf6d7ilc1wydpshnv1ndssppcbadqcq20jm5j4fdaf53cs"))
               (modules '((guix build utils)))
               (snippet
                `(begin
                   ;; Remove bundled software.
-                  (for-each delete-file-recursively '("3rdparty"
-                                                      "speex"
-                                                      "speexbuild"
-                                                      "opus-build"
-                                                      "opus-src"
-                                                      "sbcelt-helper-build"
-                                                      "sbcelt-lib-build"
-                                                      "sbcelt-src"))
-                  ;; TODO: Celt is still bundled. It has been merged into Opus
-                  ;; and will be removed after 1.3.0.
-                  ;; https://github.com/mumble-voip/mumble/issues/1999
+                  ;; Keep arc4random, celt-0.7.0, celt-0.11.0, qqbonjour, rnnoise, smallft.
+                  (for-each delete-file-recursively '("3rdparty/GL" ; in mesa
+                                                      "3rdparty/mach-override-build" ; for macx
+                                                      "3rdparty/mach-override-src"
+                                                      "3rdparty/minhook-build" ; for win32
+                                                      "3rdparty/minhook-src"
+                                                      "3rdparty/opus-build" ; in opus
+                                                      "3rdparty/opus-src"
+                                                      "3rdparty/sbcelt-helper-build" ; not enabled
+                                                      "3rdparty/sbcelt-lib-build"
+                                                      "3rdparty/sbcelt-src"
+                                                      "3rdparty/speex-build" ; in speex
+                                                      "3rdparty/speex-src"
+                                                      "3rdparty/speexdsp-src" ; in speexdsp
+                                                      "3rdparty/xinputcheck-build" ; for win32
+                                                      "3rdparty/xinputcheck-src"))
                   #t))))
     (build-system gnu-build-system)
     (arguments
@@ -410,23 +416,25 @@ address of one of the participants.")
        #:phases
        (modify-phases %standard-phases
          (replace 'configure
-           (lambda* (#:key outputs #:allow-other-keys)
-             (invoke "qmake" "main.pro" "-recursive"
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (invoke "qmake" "main.pro" "QMAKE_LRELEASE=lrelease"
+                     (string-append "MUMBLE_PYTHON="
+                                    (string-append (assoc-ref inputs "python") "/bin/python3"))
                      (string-append "CONFIG+="
                                     (string-join
-                                     (list "no-update"
-                                           "no-ice"
+                                     ;; Options used are listed in the same order
+                                     ;; as in the "INSTALL" file
+                                     ;; (plus the final "packaged" and "release").
+                                     (list "no-bundled-speex" ; in speex
+                                           "no-bundled-opus" ; in opus
+                                           "no-g15" ; not packaged
+                                           "no-jackaudio" ; use pulse
+                                           "no-oss" ; use pulse
+                                           "no-alsa" ; use pulse
+                                           "no-update"
                                            "no-embed-qt-translations"
-                                           "no-bundled-speex"
-                                           "pch"
-                                           "no-bundled-opus"
-                                           "no-celt"
-                                           "no-alsa"
-                                           "no-oss"
-                                           "no-portaudio"
-                                           "speechd"
-                                           "no-g15"
-                                           "no-bonjour"
+                                           "no-ice" ; not packaged
+                                           "packaged"
                                            "release")))
                      (string-append "DEFINES+="
                                     "PLUGIN_PATH="
@@ -436,6 +444,10 @@ address of one of the participants.")
            (lambda _
              (substitute* "src/mumble/TextToSpeech_unix.cpp"
                (("libspeechd.h") "speech-dispatcher/libspeechd.h"))))
+         (add-before 'install 'disable-murmur-ice
+           (lambda _
+             (substitute* "scripts/murmur.ini.system"
+               (("^ice=") ";ice="))))
          (replace 'install ; install phase does not exist
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -463,24 +475,38 @@ address of one of the participants.")
                (for-each (lambda (file) (install-file file lib))
                          (find-files "." "\\.so\\."))
                (for-each (lambda (file) (install-file file lib))
-                         (find-files "release/plugins" "\\.so$"))))))))
+                         (find-files "release/plugins" "\\.so$")))))
+         (add-after 'install 'wrap-executable
+           ;; Add path to plugins for SVG support (otherwise many icons are not shown).
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (for-each (lambda (program)
+                           (wrap-program (string-append out "/bin/" program)
+                             `("QT_PLUGIN_PATH" ":" prefix
+                               ,(map (lambda (label)
+                                       (string-append (assoc-ref inputs label)
+                                                      "/lib/qt5/plugins"))
+                                     '("qtbase" "qtsvg")))))
+                         '("mumble" "mumble-overlay"))))))))
     (inputs
      `(("avahi" ,avahi)
-       ("protobuf" ,protobuf-3.5)
-       ("openssl" ,openssl)
-       ("libsndfile" ,libsndfile)
        ("boost" ,boost)
-       ("opus" ,opus)
-       ("speex" ,speex)
-       ("speexdsp" ,speexdsp)
-       ("speech-dispatcher" ,speech-dispatcher)
-       ("libx11" ,libx11)
+       ("libsndfile" ,libsndfile)
        ("libxi" ,libxi)
-       ("qt-4" ,qt-4)
-       ("alsa-lib" ,alsa-lib)
-       ("pulseaudio" ,pulseaudio)))
+       ("mesa" ,mesa) ; avoid bundled
+       ("openssl" ,openssl)
+       ("opus" ,opus) ; avoid bundled
+       ("protobuf" ,protobuf)
+       ("pulseaudio" ,pulseaudio)
+       ("qtbase" ,qtbase)
+       ("qtsvg" ,qtsvg)
+       ("speech-dispatcher" ,speech-dispatcher)
+       ("speex" ,speex) ; avoid bundled
+       ("speexdsp" ,speexdsp))) ; avoid bundled
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+       ("python" ,python)
+       ("qttools" ,qttools)))
     (synopsis "Low-latency, high quality voice chat software")
     (description
      "Mumble is an low-latency, high quality voice chat
@@ -488,9 +514,9 @@ software primarily intended for use while gaming.
 Mumble consists of two applications for separate usage:
 @code{mumble} for the client, and @code{murmur} for the server.")
     (home-page "https://wiki.mumble.info/wiki/Main_Page")
-    (license (list license:bsd-3
-                   ;; The bundled celt is bsd-2. Remove after 1.3.0.
-                   license:bsd-2))))
+    (license (list license:bsd-3 ; mumble celt-0.7.0 qqbonjour rnnoise smallft
+                   license:bsd-2 ; celt-0.11.0
+                   license:isc)))) ; arc4random
 
 (define-public twinkle
   (package
-- 
2.24.0

From b94d83ed7b9ed7fe009e6aa4920970a8ebfa4276 Mon Sep 17 00:00:00 2001
From: Ivan Vilata-i-Balaguer <[email-masked]>
Date: Sun, 15 Dec 2019 20:12:34 -0500
Subject: [PATCH 2/2] gnu: mumble: Use qt-build-system.

* gnu/packages/telephony.scm: Add import of (guix build-system qt).
* gnu/packages/telephony.scm (mumble): Use qt-build-system.
  <phases>: Base on phases from qt-build-system. {wrap-executable}:
  Remove.
---
 gnu/packages/telephony.scm | 21 +++++----------------
 1 file changed, 5 insertions(+), 16 deletions(-)

diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 53911f4a94..e0168d2345 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -79,7 +79,8 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system qt))
 
 (define-public commoncpp
   (package
@@ -410,11 +411,11 @@ address of one of the participants.")
                                                       "3rdparty/xinputcheck-build" ; for win32
                                                       "3rdparty/xinputcheck-src"))
                   #t))))
-    (build-system gnu-build-system)
+    (build-system qt-build-system)
     (arguments
      `(#:tests? #f  ; no "check" target
        #:phases
-       (modify-phases %standard-phases
+       (modify-phases (@ (guix build qt-build-system) %standard-phases)
          (replace 'configure
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (invoke "qmake" "main.pro" "QMAKE_LRELEASE=lrelease"
@@ -475,19 +476,7 @@ address of one of the participants.")
                (for-each (lambda (file) (install-file file lib))
                          (find-files "." "\\.so\\."))
                (for-each (lambda (file) (install-file file lib))
-                         (find-files "release/plugins" "\\.so$")))))
-         (add-after 'install 'wrap-executable
-           ;; Add path to plugins for SVG support (otherwise many icons are not shown).
-           (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out")))
-               (for-each (lambda (program)
-                           (wrap-program (string-append out "/bin/" program)
-                             `("QT_PLUGIN_PATH" ":" prefix
-                               ,(map (lambda (label)
-                                       (string-append (assoc-ref inputs label)
-                                                      "/lib/qt5/plugins"))
-                                     '("qtbase" "qtsvg")))))
-                         '("mumble" "mumble-overlay"))))))))
+                         (find-files "release/plugins" "\\.so$"))))))))
     (inputs
      `(("avahi" ,avahi)
        ("boost" ,boost)
-- 
2.24.0