Subject: bug#38054: mumble: "QSslSocket: cannot resolve <crypto funcs>", Certificate Expiry, segfault

From: Ivan Vilata i Balaguer <[email-masked]>
Date: Fri, 22 Nov 2019 01:32:38 -0500

Ivan Vilata i Balaguer (2019-11-20 00:30:24 -0500) wrote:

> Thanks Christopher!  I'm currently working in a complete patch, it's
> building and running (and it's not suffering from the errors I found!), but
> I still need to locate the appropriate icons and include them in the
> package.
> 
> I'll get back to you real soon!

Hi there!  I finally completed the update patch and managed to get the icons
working.  It seems to work as expected without plugin issues.

It wasn't an easy task but I learnt some good stuff during the way… `:D`

Enjoy the new Mumble!

-- 
Ivan Vilata i Balaguer -- https://elvil.net/
>From 987f03ca1721c1aa54a078a9be143abbac82bf11 Mon Sep 17 00:00:00 2001
From: Ivan Vilata-i-Balaguer <[email-masked]>
Date: Fri, 22 Nov 2019 01:15:53 -0500
Subject: [PATCH] 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 (mumble): Update to 1.3.0.
* gnu/packages/patches/mumble-1.2.19-abs.patch: Remove file.
---
 gnu/packages/patches/mumble-1.2.19-abs.patch |  31 -----
 gnu/packages/telephony.scm                   | 114 ++++++++++++-------
 2 files changed, 70 insertions(+), 75 deletions(-)
 delete mode 100644 gnu/packages/patches/mumble-1.2.19-abs.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 abb68f62b2..e1ad2f90f5 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2018 Jovany Leandro G.C <[email-masked]>
 ;;; Copyright © 2018 Tim Gesthuizen <[email-masked]>
 ;;; Copyright © 2019 Pierre Neidhardt <[email-masked]>
+;;; Copyright © 2019 Ivan Vilata i Balaguer <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,6 +44,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)
@@ -378,30 +380,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
@@ -409,23 +415,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="
@@ -435,6 +443,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"))
@@ -462,24 +474,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
@@ -487,9 +513,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