Subject: [bug#45150] [PATCH 5/5] gnu: audacity: Update to 2.4.2.

From: Kei Kebreau <[email-masked]>
Date: Wed, 9 Dec 2020 17:13:33 -0500

* gnu/packages/audio.scm (audacity): Update to 2.4.2.
[source]: Add patch.  Don't delete portaudio-v19, since only the bundled copy
can be built.
[build-system]: Switch to cmake-build-system.
[inputs]: Remove portaudio.
[arguments]: Adjust configure flags for CMake.  Remove 'fix-sbsms-check
phase.  Add 'comment-out-revision-ident phase.
* gnu/local.mk (dist_patch_DATA): Register patch.
* gnu/packages/patches/audacity-add-include.patch: New file.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/audio.scm                        | 75 +++++--------------
 .../patches/audacity-add-include.patch        | 15 ++++
 3 files changed, 36 insertions(+), 55 deletions(-)
 create mode 100644 gnu/packages/patches/audacity-add-include.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 67482b8226..9284e487fe 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -801,6 +801,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/ath9k-htc-firmware-gcc.patch		\
   %D%/packages/patches/ath9k-htc-firmware-objcopy.patch		\
   %D%/packages/patches/audacity-build-with-system-portaudio.patch \
+  %D%/packages/patches/audacity-add-include.patch 		\
   %D%/packages/patches/audiofile-fix-datatypes-in-tests.patch	\
   %D%/packages/patches/audiofile-fix-sign-conversion.patch	\
   %D%/packages/patches/audiofile-CVE-2015-7747.patch		\
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 7a5dfe0223..e4d82817b4 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -703,7 +703,7 @@ engineers, musicians, soundtrack editors and composers.")
 (define-public audacity
   (package
     (name "audacity")
-    (version "2.4.1")
+    (version "2.4.2")
     (source
      (origin
        (method git-fetch)
@@ -713,8 +713,9 @@ engineers, musicians, soundtrack editors and composers.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "1xk0piv72d2xd3p7igr916fhcbrm76fhjr418k1rlqdzzg1hfljn"))
-       (patches (search-patches "audacity-build-with-system-portaudio.patch"))
+         "0lklcvqkxrr2gkb9gh3422iadzl2rv9v0a8s76rwq43lj2im7546"))
+       (patches (search-patches "audacity-build-with-system-portaudio.patch"
+                                "audacity-add-include.patch"))
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled libraries.
@@ -724,7 +725,7 @@ engineers, musicians, soundtrack editors and composers.")
               (delete-file-recursively (string-append "lib-src/" dir)))
             '("expat" "ffmpeg" "lame" "libflac" "libid3tag" "libmad" "libogg"
               "libsndfile" "libsoxr" "libvamp" "libvorbis" "lv2"
-              "portaudio-v19" "portmidi" "soundtouch" "twolame"
+              "portmidi" "soundtouch" "twolame"
               ;; FIXME: these libraries have not been packaged yet:
               ;; "libnyquist"
               ;; "libscorealign"
@@ -738,7 +739,7 @@ engineers, musicians, soundtrack editors and composers.")
               ;; "sbsms"
               ))
            #t))))
-    (build-system glib-or-gtk-build-system)
+    (build-system cmake-build-system)
     (inputs
      `(("wxwidgets" ,wxwidgets)
        ("gtk+" ,gtk+)
@@ -760,7 +761,6 @@ engineers, musicians, soundtrack editors and composers.")
        ("lv2" ,lv2)
        ("lilv" ,lilv)                   ;for lv2
        ("suil" ,suil)                   ;for lv2
-       ("portaudio" ,portaudio)
        ("portmidi" ,portmidi)))
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -772,52 +772,18 @@ engineers, musicians, soundtrack editors and composers.")
        ("which" ,which)))
     (arguments
      `(#:configure-flags
-       (let ((libid3tag (assoc-ref %build-inputs "libid3tag"))
-             (libmad (assoc-ref %build-inputs "libmad"))
-             (portmidi (assoc-ref %build-inputs "portmidi")))
-         (list
-          ;; Loading FFmpeg dynamically is problematic.
-          "--disable-dynamic-loading"
-          ;; SSE instructions are available on Intel systems only.
-          ,@(if (any (cute string-prefix? <> (or (%current-target-system)
-                                                 (%current-system)))
-                    '("x86_64" "i686"))
-              '()
-              '("--enable-sse=no"))
-          ;; portmidi, libid3tag and libmad provide no .pc files, so
-          ;; pkg-config fails to find them.  Force their inclusion.
-          (string-append "ID3TAG_CFLAGS=-I" libid3tag "/include")
-          (string-append "ID3TAG_LIBS=-L" libid3tag "/lib -lid3tag -lz")
-          (string-append "LIBMAD_CFLAGS=-I" libmad "/include")
-          (string-append "LIBMAD_LIBS=-L" libmad "/lib -lmad")
-          (string-append "PORTMIDI_CFLAGS=-I" portmidi "/include")
-          (string-append "PORTMIDI_LIBS=-L" portmidi "/lib -lportmidi")
-          "EXPAT_USE_SYSTEM=yes"
-          "FFMPEG_USE_SYSTEM=yes"
-          "LAME_USE_SYSTEM=yes"
-          "LIBFLAC_USE_SYSTEM=yes"
-          "LIBID3TAG_USE_SYSTEM=yes"
-          "LIBMAD_USE_SYSTEM=yes"
-          "USE_LOCAL_LIBNYQUIST="      ;not packaged yet
-          ;;"LIBSBSMS_USE_SYSTEM=yes"  ;bundled version is patched
-          "LIBSNDFILE_USE_SYSTEM=yes"
-          "LIBSOUNDTOUCH_USE_SYSTEM=yes"
-          "LIBSOXR_USE_SYSTEM=yes"
-          "LIBTWOLAME_USE_SYSTEM=yes"
-          "LIBVAMP_USE_SYSTEM=yes"
-          "LIBVORBIS_USE_SYSTEM=yes"
-          "LV2_USE_SYSTEM=yes"
-          "PORTAUDIO_USE_SYSTEM=yes"))
+       (list
+        ;; Loading FFmpeg dynamically is problematic.
+        "-Daudacity_use_ffmpeg=linked"
+        "-Daudacity_use_lame=system"
+        "-Daudacity_use_portsmf=system")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'fix-sbsms-check
+         (add-after 'unpack 'comment-out-revision-ident
            (lambda _
-             ;; This check is wrong: there is no 2.2.0 release; not even the
-             ;; bundled sources match this release string.
-             (substitute* '("m4/audacity_checklib_libsbsms.m4"
-                            "configure")
-               (("sbsms >= 2.2.0") "sbsms >= 2.0.0"))
-             #t))
+             (substitute* "src/AboutDialog.cpp"
+               (("(.*RevisionIdent\\.h.*)" include-line)
+                (string-append "// " include-line)))))
          (add-after 'unpack 'use-upstream-headers
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* '("src/NoteTrack.cpp"
@@ -827,12 +793,11 @@ engineers, musicians, soundtrack editors and composers.")
                (("../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")
                (("../lib-src/portmidi/porttime/porttime.h") "porttime.h"))
              (substitute* "src/prefs/MidiIOPrefs.cpp"
-               (("../../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h"))
-             #t)))
-       ;; The test suite is not "well exercised" according to the developers,
-       ;; and fails with various errors.  See
-       ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>.
-       #:tests? #f))
+               (("../../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")))))
+         ;; The test suite is not "well exercised" according to the developers,
+         ;; and fails with various errors.  See
+         ;; <http://sourceforge.net/p/audacity/mailman/message/33524292/>.
+         #:tests? #f))
     (home-page "https://www.audacityteam.org/")
     (synopsis "Software for recording and editing sounds")
     (description
diff --git a/gnu/packages/patches/audacity-add-include.patch b/gnu/packages/patches/audacity-add-include.patch
new file mode 100644
index 0000000000..a7f27918e7
--- /dev/null
+++ b/gnu/packages/patches/audacity-add-include.patch
@@ -0,0 +1,15 @@
+Without <sys/time.h>, gettimeofday is undefined.
+
+diff --git a/src/AudioIO.cpp b/src/AudioIO.cpp
+index 0187e3962..e15d55f4c 100644
+--- a/src/AudioIO.cpp
++++ b/src/AudioIO.cpp
+@@ -479,6 +479,8 @@ time warp info and AudioIOListener and whether the playback is looped.
+ #include "../lib-src/portmidi/porttime/porttime.h"
+ #include "../lib-src/header-substitutes/allegro.h"
+ 
++#include <sys/time.h>
++
+    #define MIDI_SLEEP 10 /* milliseconds */
+    // how long do we think the thread that fills MIDI buffers,
+    // if it is separate from the portaudio thread,
-- 
2.29.2