GNU bug report logs - #26956
[PATCH] Add MuseScore

Previous Next

Package: guix-patches;

Reported by: Nicolas Goaziou <mail <at> nicolasgoaziou.fr>

Date: Tue, 16 May 2017 16:08:01 UTC

Severity: normal

Tags: patch

Done: ludo <at> gnu.org (Ludovic Courtès)

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: tracker <at> debbugs.gnu.org
Subject: bug#26956: closed ([PATCH] Add MuseScore)
Date: Tue, 23 May 2017 11:56:01 +0000
[Message part 1 (text/plain, inline)]
Your message dated Tue, 23 May 2017 13:55:25 +0200
with message-id <878tlnwzwy.fsf <at> gnu.org>
and subject line Re: bug#26956: [PATCH] Add MuseScore
has caused the debbugs.gnu.org bug report #26956,
regarding [PATCH] Add MuseScore
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
26956: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=26956
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Nicolas Goaziou <mail <at> nicolasgoaziou.fr>
To: guix-patches <at> gnu.org
Subject: [PATCH] Add MuseScore
Date: Tue, 16 May 2017 18:07:18 +0200
[Message part 3 (text/plain, inline)]
Hello,

The attached patch adds MuseScore. It builds and lint doesn't complain.

I used glib-or-gtk-build-system because, somewhere in the Makefile,
there's a call to `gtk-update-icon-cache'. However, since that command
cannot be found during the build process, I skip it with
UPDATE_CACHE=FALSE. So, should I leave the package as-is, or add
a "gtk+" input, or simply downgrade to gnu-build-system?

Also, the description is a bit verbose. It is an excerpt from
Wikipedia's introduction about the software. Debian's is much terser.
FSF directory's is out of date. WDYT?

Regards,

-- 
Nicolas Goaziou                                                0x80A93738
[0001-gnu-Add-MuseScore.patch (text/x-diff, inline)]
From 78e2006499b93895635215e80e58c359a5e31405 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <mail <at> nicolasgoaziou.fr>
Date: Tue, 16 May 2017 17:55:29 +0200
Subject: [PATCH] gnu: Add MuseScore.

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

diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index d4a72df1d..33aa8fb73 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -10,6 +10,7 @@
 ;;; Copyright © 2016 Alex Griffin <a <at> ajgrf.com>
 ;;; Copyright © 2017 ng0 <contact.ng0 <at> cryptolab.net>
 ;;; Copyright © 2017 Rodger Fox <thylakoid <at> openmailbox.org>
+;;; Copyright © 2017 Nicolas Goaziou <mail <at> nicolasgoaziou.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2990,3 +2991,83 @@ are a C compiler and glib.  Full API documentation and examples are included.")
 melodies and beats and for mixing and arranging songs.  LMMS includes instruments based on
 audio samples and various soft sythesizers.  It can receive input from a MIDI keyboard.")
     (license license:gpl2+)))
+
+(define-public musescore
+  (package
+    (name "musescore")
+    (version "2.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/musescore/MuseScore/archive/"
+                    "v" version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0irwsq6ihfz3y3b943cwqy29g3si7gqbgxdscgw53vwv9vfvi085"))))
+    (build-system glib-or-gtk-build-system)
+    (arguments
+     `(#:make-flags
+       `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
+         ;; Skip update-mime-database and gtk-update-icon-cache.
+         "UPDATE_CACHE=FALSE")
+       ;; There are tests, but no simple target to run.  The command
+       ;; used to run them is:
+       ;;
+       ;;   make debug && sudo make installdebug && cd \
+       ;;   build.debug/mtest && make && ctest
+       ;;
+       ;; Basically, it requires to start a whole new build process.
+       ;; So we simply skip them.
+       #:tests? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-after 'unpack 'use-system-freetype
+           (lambda _
+             (substitute* "Makefile"
+               ;; XXX: For the time being, we grossly insert the CMake
+               ;; option needed to ignore bundled freetype.  However,
+               ;; there's a pending PR to have it as a regular make
+               ;; option, in a future release.
+               (("cmake -DCMAKE") "cmake -DUSE_SYSTEM_FREETYPE=ON -DCMAKE"))
+             #t)))))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("cmake" ,cmake)
+       ("freetype" ,freetype)
+       ("jack" ,jack-1)
+       ("lame" ,lame)
+       ("libogg" ,libogg)
+       ("libsndfile" ,libsndfile)
+       ("libvorbis" ,libvorbis)
+       ("openssl" ,openssl)
+       ("portaudio" ,portaudio)
+       ("pulseaudio" ,pulseaudio)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtscript" ,qtscript)
+       ("qtsvg" ,qtsvg)
+       ("qtwebkit" ,qtwebkit)
+       ("qtxmlpatterns" ,qtxmlpatterns)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("qttools" ,qttools)))
+    (synopsis "Music composition and notation software")
+    (description "MuseScore is a music score typesetter.  Its main purpose is
+the creation of high-quality engraved musical scores in a WYSIWYG environment.
+
+It supports unlimited staves, linked parts and part extraction, tablature, MIDI
+input, percussion notation, cross-staff beaming, automatic transposition,
+lyrics (multiple verses), fretboard diagrams, and in general everything commonly
+used in sheet music.
+
+Style options to change the appearance and layout are available, and
+style sheets can be saved and applied to other scores.  There are pre-defined
+templates for many types of ensembles.  Functionality can be extended by making
+use of the many freely available plugins.
+
+MuseScore can also play back scores through the built-in sequencer and SoundFont
+sample library.")
+    (home-page "https://musescore.org")
+    (license license:gpl2)))
-- 
2.13.0

[Message part 5 (message/rfc822, inline)]
From: ludo <at> gnu.org (Ludovic Courtès)
To: Nicolas Goaziou <mail <at> nicolasgoaziou.fr>
Cc: 26956-done <at> debbugs.gnu.org
Subject: Re: bug#26956: [PATCH] Add MuseScore
Date: Tue, 23 May 2017 13:55:25 +0200
Hi,

Nicolas Goaziou <mail <at> nicolasgoaziou.fr> skribis:

>> I started doing that and then noticed that removing all of thirdparty/
>> won’t cut it.  Yet there’s quite a lot of stuff in that directory, so it
>> would be good to make sure we use as little as possible of this bundled
>> code:
>>
>> $ ls /tmp/guix-build-musescore-2.1.0.drv-0/MuseScore-2.1.0/thirdparty/
>> beatroot  diff	intervaltree  kQOAuth  ofqf  portmidi  qzip  rtf2html  singleapp  xmlstream
>>
>> For example, we could add portmidi as an input.
>>
>> Could you take a look?
>
> Fair enough.
>
> The attached update includes the following changes:
>
>   - un-bundle OpenSSL. Since it doesn't prevent compilation, do not even
>     include ours, much like what Debian does.
>
>   - remove unused portmidi from "thirdparty", per the following snippet
>     in CMakeLists.txt
>
>       # Disable components not supported on Linux/BSD
>       if (NOT APPLE AND NOT MINGW)
>              set(NIX_NOT_AVAIL "Not available on Linux/BSD")
>              option(BUILD_PORTMIDI "PortMidi disabled on Linux. (It uses ALSA but it's better to use ALSA directly)" OFF)
>       endif (NOT APPLE AND NOT MINGW)
>
>   - un-bundle freetype, remove it from the "thirdparty" directory.
>
>   - add "gtk+-bin" as inuput so that we can run `gtk-update-icon-cache'
>     (still not sure this is really needed).
>
> WDYT?

Awesome.

> From cf05d7aa5a2030ef6cbe073f44f69c65492870b7 Mon Sep 17 00:00:00 2001
> From: Nicolas Goaziou <mail <at> nicolasgoaziou.fr>
> Date: Tue, 16 May 2017 17:55:29 +0200
> Subject: [PATCH] gnu: Add MuseScore.
>
> * gnu/packages/music.scm (musescore): New variable.

Pushed!

> +              (snippet
> +               ;; Un-bundle OpenSSL and remove unused libraries.
> +               '(begin
> +                  (substitute* "thirdparty/kQOAuth/CMakeLists.txt"
> +                    (("-I \\$\\{PROJECT_SOURCE_DIR\\}/thirdparty/openssl/include ")
> +                     ""))
> +                  (substitute* "thirdparty/kQOAuth/kqoauthutils.cpp"
> +                    (("#include <openssl/.*") ""))
> +                  (for-each delete-file-recursively
> +                            '("thirdparty/freetype"
> +                              "thirdparty/openssl"
> +                              "thirdparty/portmidi"))

Note that there’s still bundled software under thirdparty/ (those I
listed above), but apparently we have no existing packages for these.
So let’s assume it’s OK to have them for now, but we may have to revisit
that and actually remove them later on.

Thank you!

Ludo’.



This bug report was last modified 7 years and 362 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.