Subject: [bug#38217] [PATCH] gnu: rtmidi: Update to 4.0.0.

From: Pierre Langlois <[email-masked]>
Date: Fri, 15 Nov 2019 09:31:11 +0000

Hello Guix!

Here's an update for the rtmidi package. I've had to fix the
powertabeditor package to be able to find the RtMidi.h header which has
now moved into a subdirectory. It looks like the issue is fixed upstream
in the build system but no release have been made yet so I've added a
TODO to remove the hack later.

WDYT?

Thanks,
Pierre

From ca890314f2a5d05d97c5bee39e0e571cf9344ba2 Mon Sep 17 00:00:00 2001
From: Pierre Langlois <[email-masked]>
Date: Fri, 15 Nov 2019 09:23:16 +0000
Subject: [PATCH] gnu: rtmidi: Update to 4.0.0.

* gnu/packages/audio.scm (rtmidi): Update to 4.0.0.
[source]: Download tarball from upstream URL rather than the powertab github
fork.
[arguments]: Enable tests.  Remove 'build and 'install phases and add a new
'noconfigure phase to prevent the bootstrap script from invoking configure.
[home-page]: Update homepage to upstream URL.
* gnu/packages/music.scm (powertabeditor)[arguments]: Add phase that substitutes
the rtmidi #include directive to find the header.
---
 gnu/packages/audio.scm | 31 ++++++++++---------------------
 gnu/packages/music.scm |  8 ++++++++
 2 files changed, 18 insertions(+), 21 deletions(-)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 15ba454edd..66ef787dcc 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -2341,33 +2341,22 @@ tempo and pitch of an audio recording independently of one another.")
 (define-public rtmidi
   (package
     (name "rtmidi")
-    (version "2.1.0")
+    (version "4.0.0")
     (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/powertab/rtmidi.git")
-                    (commit version)))
-              (file-name (git-file-name name version))
+              (method url-fetch)
+              (uri (string-append "https://www.music.mcgill.ca/~gary/rtmidi"
+                                  "/release/rtmidi-" version ".tar.gz"))
+              (file-name (string-append "rtmidi-" version ".tar.gz"))
               (sha256
                (base32
-                "106v177y3nrjv2l1yskch4phpqd8h97b67zj0jiq9pc3c69jr1ay"))))
+                "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p"))))
     (build-system gnu-build-system)
     (arguments
-     `(#:tests? #f ;no "check" target
-       #:phases
+     `(#:phases
        (modify-phases %standard-phases
-         (add-before 'build 'fix-makefile
-           (lambda _
-             (substitute* "Makefile"
-               (("/bin/ln") "ln")
-               (("RtMidi.h RtError.h") "RtMidi.h"))
-             #t))
-         (add-before 'install 'make-target-dirs
+         (add-before 'bootstrap 'noconfigure
            (lambda _
-             (let ((out (assoc-ref %outputs "out")))
-               (mkdir-p (string-append out "/bin"))
-               (mkdir (string-append out "/lib"))
-               (mkdir (string-append out "/include")))
+             (setenv "NOCONFIGURE" "yes")
              #t)))))
     (inputs
      `(("jack" ,jack-1)
@@ -2377,7 +2366,7 @@ tempo and pitch of an audio recording independently of one another.")
        ("automake" ,automake)
        ("libtool" ,libtool)
        ("pkg-config" ,pkg-config)))
-    (home-page "https://github.com/powertab/rtmidi")
+    (home-page "https://www.music.mcgill.ca/~gary/rtmidi")
     (synopsis "Cross-platform MIDI library for C++")
     (description
      "RtMidi is a set of C++ classes (RtMidiIn, RtMidiOut, and API specific
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 3373b4c0a3..241ede58d8 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -1284,6 +1284,14 @@ add_library( rapidjson INTERFACE IMPORTED )"))
                (("#include <QWidget>" m)
                 (string-append m "\n#include <QButtonGroup>\n#include <QAction>")))
              #t))
+         ;; FIXME: Finding RtMidi was fixed upstream so we should be able to
+         ;; remove this hack when a release is made.
+         ;; See https://github.com/powertab/powertabeditor/issues/255
+         (add-after 'unpack 'fix-rtmidi-header
+           (lambda _
+             (substitute* "source/audio/midioutputdevice.cpp"
+               (("#include <RtMidi.h>") "#include <rtmidi/RtMidi.h>"))
+             #t))
          (add-before 'configure 'remove-third-party-libs
            (lambda* (#:key inputs #:allow-other-keys)
              ;; Link with required static libraries, because we're not
--
2.24.0