diff mbox

gnu: Add denemo.

Message ID 87twaciipd.fsf@openmailbox.org
State New
Headers show

Commit Message

Kei Yamashita Dec. 10, 2016, 3:09 a.m. UTC
ludo@gnu.org (Ludovic Courtès) writes:

> Kei Kebreau <kei@openmailbox.org> skribis:
>
>> Here is an updated patch for GNU Denemo.
>
> Nice work!
>

Thank you! :)

>> Everything seems fine except for grafting (i.e. disabling grafting
>> renders the issue invisible). For some reason, "find-files"
>> does not recognize a file with a Unicode-encoded filename when called
>> inside "rename-matching-files" from guix/build/graft.scm. When
>> "find-files" is used on its own, the file is recognized properly.
>> Is anyone familiar with the grafting code available to help figure out
>> what is happening to the file name?
>
> Problem is that the grafting code (‘graft-derivation/shallow’ in (guix
> grafts)) is running in the C locale, so it expects file names to be
> ASCII.  I’ll look into it.
>

I saw your email about renaming the file with the Unicode name. Your
method worked fine.

> Some comments on the package:
>
>> From 6bd5843bef06a02ecf1235090350562c8b096aca Mon Sep 17 00:00:00 2001
>> From: Kei Kebreau <kei@openmailbox.org>
>> Date: Thu, 8 Dec 2016 14:00:43 -0500
>> Subject: [PATCH] gnu: Add denemo.
>>
>> * gnu/packages/music.scm (denemo): New variable.
>
> [...]
>
>> +    (arguments
>> +     `(#:phases
>> +       (modify-phases %standard-phases
>> +         (replace 'check
>> +           (lambda _
>> +             (zero? (system* "make" "-C" "tests" "check")))))))
>
> Is this really needed?  Perhaps leave a comment explaining whether/why
> “make check” at the top level is broken (and perhaps report it as a bug
> upstream!).
>

Maybe because upstream doesn't test it? Denemo documentation says to use
this command to run the testsuite
(http://denemo.org/hacking-sources/#Test_suite). I've added a comment
explaining that.

>> +    (native-inputs
>> +     `(("autoconf" ,autoconf)
>> +       ("automake" ,automake)
>
> This is not needed (or it’s a bug too ;-)).
>

Indeed it is not. I've removed these inputs from the new patch. As a
side note, lilypond was required as a runtime dependency so I moved it
to propagated-inputs.

>> +    (license (list license:cc-by-sa3.0
>> +                   license:lgpl2.1+
>> +                   license:gpl2
>> +                   license:gpl2+
>> +                   license:gpl3
>> +                   license:gpl3+))))
>
> I think ‘gpl3+’ is enough here since it “wins”.  You can leave a comment
> explaining where the other licenses appear, though.
>

Looking over the plethora of libre licenses included in the source, I
decided to just use the overarching gpl3+ from COPYING.

> Thanks!
>

Thank you for the review! The new patch is attached.

> Ludo’.
From 656a59ee358362a9c3ec9b98f8e1a8cd1dc28b7f Mon Sep 17 00:00:00 2001
From: Kei Kebreau <kei@openmailbox.org>
Date: Fri, 9 Dec 2016 21:58:08 -0500
Subject: [PATCH] gnu: Add denemo.

* gnu/packages/music.scm (denemo): New variable.
---
 gnu/packages/music.scm | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)

Comments

Ludovic Courtès Dec. 11, 2016, 12:04 a.m. UTC | #1
Kei Kebreau <kei@openmailbox.org> skribis:

> From 656a59ee358362a9c3ec9b98f8e1a8cd1dc28b7f Mon Sep 17 00:00:00 2001
> From: Kei Kebreau <kei@openmailbox.org>
> Date: Fri, 9 Dec 2016 21:58:08 -0500
> Subject: [PATCH] gnu: Add denemo.
>
> * gnu/packages/music.scm (denemo): New variable.

Perfect, thank you!

Ludo’.
Ricardo Wurmus Dec. 11, 2016, 9:07 a.m. UTC | #2
Kei Kebreau <kei@openmailbox.org> writes:

> Indeed it is not. I've removed these inputs from the new patch. As a
> side note, lilypond was required as a runtime dependency so I moved it
> to propagated-inputs.

Do you think it would be possible to patch the sources to refer to the
Lilypond executable instead of propagating the input?
diff mbox

Patch

diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 34beb09f4..116e8d482 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -231,6 +231,74 @@  score, keyboard, guitar, drum and controller views.")
 many input formats and provides a customisable Vi-style user interface.")
      (license license:gpl2+)))
 
+(define-public denemo
+  (package
+    (name "denemo")
+    (version "2.0.14")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/denemo/denemo-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1a7g38695g7jjypx25qp0dx0asrh72xwdj0mdhmb9pfyzlppq0wh"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           ;; Denemo's documentation says to use this command to run its
+           ;; testsuite.
+           (lambda _
+             (zero? (system* "make" "-C" "tests" "check"))))
+         (add-after 'install 'correct-filename
+           ;; "graft-derivation/shallow" from the (guix grafts) module runs in
+           ;; the C locale, expecting file names to be ASCII encoded. This
+           ;; phase renames a filename with a Unicode character in it to meet
+           ;; the aforementioned condition.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (chdir (string-append
+                       out
+                       "/share/denemo/templates/instruments/woodwind"))
+               (rename-file "Clarinet in Bâ™­.denemo"
+                            "Clarinet in Bb.denemo"))
+             #t)))))
+    (native-inputs
+     `(("glib:bin", glib "bin")   ; for gtester
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("aubio" ,aubio)
+       ("evince" ,evince)
+       ("fftw" ,fftw)
+       ("fluidsynth" ,fluidsynth)
+       ("glib" ,glib)
+       ("gtk+" ,gtk+)
+       ("gtk-doc" ,gtk-doc)
+       ("gtksourceview" ,gtksourceview)
+       ("guile" ,guile-2.0)
+       ("intltool" ,intltool)
+       ("librsvg" ,librsvg)
+       ("libsndfile" ,libsndfile)
+       ("libtool" ,libtool)
+       ("libxml2" ,libxml2)
+       ("portaudio" ,portaudio)
+       ("portmidi" ,portmidi)
+       ("rubberband" ,rubberband)))
+    (propagated-inputs
+     `(("lilypond", lilypond)))
+    (synopsis "Graphical music notation, front-end to GNU Lilypond")
+    (description
+     "GNU Denemo is a music notation editor that provides a convenient
+interface to the powerful music engraving program Lilypond.  Music can be
+typed in using the computer keyboard, played in using a MIDI keyboard, or
+even input via a microphone connected to the sound card.  The final product
+is publication-quality music notation that is continuously generated in the
+background while you work.")
+    (home-page "http://www.denemo.org")
+    (license license:gpl3+)))
+
 (define-public hydrogen
   (package
     (name "hydrogen")