Subject: Re: bug#26956: [PATCH] Add MuseScore

From: [email-masked] (Ludovic Courtès)
Date: Tue, 16 May 2017 23:37:57 +0200

Hi Nicolas,

Nicolas Goaziou <[email-masked]> skribis:

> 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?

Since it uses Qt, perhaps we’d better use ‘gnu-build-system’ (or
‘cmake-build-system’?) no?  Would we lose something?

> 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?

[...]

> From 78e2006499b93895635215e80e58c359a5e31405 Mon Sep 17 00:00:00 2001
> From: Nicolas Goaziou <[email-masked]>
> Date: Tue, 16 May 2017 17:55:29 +0200
> Subject: [PATCH] gnu: Add MuseScore.
>
> * gnu/packages/music.scm (musescore): New variable.

FWIW I trimmed the description a bit and moved ‘cmake’ to
‘native-inputs’.  Also, a couple of #:use-module were missing.

Result copied below.

Ludo’.

(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)
       ("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)
       ("cmake" ,cmake)
       ("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 and style sheets to change the
appearance and layout are provided.

MuseScore can also play back scores through the built-in sequencer and SoundFont
sample library.")
    (home-page "https://musescore.org")
    (license license:gpl2)))