diff mbox series

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

Message ID 20191216014411.GC1392584@sax.terramar.selidor.net
State Accepted
Headers show
Series [bug#38395] Acknowledgement ([PATCH] gnu: mumble: Update to 1.3.0.) | expand

Commit Message

Ivan Vilata i Balaguer Dec. 16, 2019, 1:44 a.m. UTC
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!

Comments

Efraim Flashner Dec. 19, 2019, 1:03 p.m. UTC | #1
I merged the two patches together, made sure all the phases returned #t
and flushed out the commit message some more.
Ivan Vilata i Balaguer Dec. 19, 2019, 4:51 p.m. UTC | #2
Efraim Flashner (2019-12-19 15:03:11 +0200) wrote:

> I merged the two patches together, made sure all the phases returned #t
> and flushed out the commit message some more.

Thanks a lot!  Comparing your final patch against mine was also very
instructive. `:)`
Ivan Vilata i Balaguer Dec. 20, 2019, 4:07 p.m. UTC | #3
Ivan Vilata i Balaguer (2019-12-19 11:51:55 -0500) wrote:

> Efraim Flashner (2019-12-19 15:03:11 +0200) wrote:
> 
> > I merged the two patches together, made sure all the phases returned #t
> > and flushed out the commit message some more.
> 
> Thanks a lot!  Comparing your final patch against mine was also very
> instructive. `:)`

Before you close this issue, I upgraded my `mumble` package and many icons are
missing.  I didn't yet have time to further investigate it, but maybe it's
because of a difference I noticed between your patch:

    (modify-phases %standard-phases

and mine:

    (modify-phases (@ (guix build qt-build-system) %standard-phases)

So maybe the problem is that the final, wrapping phase of `qt-build-system` is
not being run.  Actually I see that `mumble` is a plain binary while in the
output from my patch, it was a wrapper script.

Thanks!
Efraim Flashner Dec. 22, 2019, 10:56 a.m. UTC | #4
On Fri, Dec 20, 2019 at 11:07:58AM -0500, Ivan Vilata i Balaguer wrote:
> Ivan Vilata i Balaguer (2019-12-19 11:51:55 -0500) wrote:
> 
> > Efraim Flashner (2019-12-19 15:03:11 +0200) wrote:
> > 
> > > I merged the two patches together, made sure all the phases returned #t
> > > and flushed out the commit message some more.
> > 
> > Thanks a lot!  Comparing your final patch against mine was also very
> > instructive. `:)`
> 
> Before you close this issue, I upgraded my `mumble` package and many icons are
> missing.  I didn't yet have time to further investigate it, but maybe it's
> because of a difference I noticed between your patch:
> 
>     (modify-phases %standard-phases
> 
> and mine:
> 
>     (modify-phases (@ (guix build qt-build-system) %standard-phases)
> 
> So maybe the problem is that the final, wrapping phase of `qt-build-system` is
> not being run.  Actually I see that `mumble` is a plain binary while in the
> output from my patch, it was a wrapper script.
> 

I'm not sure what happened with the wrapping phase, but I changed it
back and now everything should be working as expected.
Ivan Vilata i Balaguer Dec. 22, 2019, 6:16 p.m. UTC | #5
Efraim Flashner (2019-12-22 12:56:04 +0200) wrote:

> On Fri, Dec 20, 2019 at 11:07:58AM -0500, Ivan Vilata i Balaguer wrote:
> > 
> > Before you close this issue, I upgraded my `mumble` package and many icons are
> > missing.  I didn't yet have time to further investigate it, but maybe it's
> > because of a difference I noticed between your patch:
> > 
> >     (modify-phases %standard-phases
> > 
> > and mine:
> > 
> >     (modify-phases (@ (guix build qt-build-system) %standard-phases)
> > 
> > So maybe the problem is that the final, wrapping phase of `qt-build-system` is
> > not being run.  Actually I see that `mumble` is a plain binary while in the
> > output from my patch, it was a wrapper script.
> 
> I'm not sure what happened with the wrapping phase, but I changed it
> back and now everything should be working as expected.

Works indeed now, than you! `:)`
diff mbox series

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 <mikkel@krautz.dk>
-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 <tim.gesthuizen@yahoo.de>
 ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
+;;; Copyright © 2019 Ivan Vilata i Balaguer <ivan@selidor.net>
 ;;;
 ;;; 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