[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#26956: [PATCH] Add MuseScore
From: |
Nicolas Goaziou |
Subject: |
bug#26956: [PATCH] Add MuseScore |
Date: |
Sat, 20 May 2017 11:00:25 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) |
Hello,
address@hidden (Ludovic Courtès) writes:
> Nicolas Goaziou <address@hidden> skribis:
>
>> IIUC, the Makefile is a wrapper that calls the cmake command, which, in
>> turn, generates a new make target that the initial make call can
>> process... The new target is responsible for, at the very least,
>> generating the translation files.
>
> Wonderful. :-)
It's even more wonderful when you realize that at 3am.
>> About the bundled freetype library: it is skipped per the cmake option.
>> Should we also delete it from source in a snippet or is it fine as-is?
>
> It’s always safer to remove it in a snippet.
OK.
> 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?
Regards,
--
Nicolas Goaziou 0x80A93738
>From cf05d7aa5a2030ef6cbe073f44f69c65492870b7 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <address@hidden>
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 | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 90 insertions(+)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index d4a72df1d..5c0be39c2 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -10,6 +10,7 @@
;;; Copyright © 2016 Alex Griffin <address@hidden>
;;; Copyright © 2017 ng0 <address@hidden>
;;; Copyright © 2017 Rodger Fox <address@hidden>
+;;; Copyright © 2017 Nicolas Goaziou <address@hidden>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -49,6 +50,7 @@
#:use-module (gnu packages cdrom)
#:use-module (gnu packages code)
#:use-module (gnu packages check)
+ #:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages cyrus-sasl)
@@ -2990,3 +2992,91 @@ 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"))
+ (modules '((guix build utils)))
+ (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"))
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:make-flags
+ `(,(string-append "PREFIX=" (assoc-ref %outputs "out")))
+ ;; 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 _
+ ;; 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.
+ (substitute* "Makefile"
+ (("cmake -DCMAKE") "cmake -DUSE_SYSTEM_FREETYPE=ON -DCMAKE"))
+ #t)))))
+ (inputs
+ `(("alsa-lib" ,alsa-lib)
+ ("freetype" ,freetype)
+ ("gtk+-bin" ,gtk+ "bin") ;for gtk-update-icon-cache
+ ("jack" ,jack-1)
+ ("lame" ,lame)
+ ("libogg" ,libogg)
+ ("libsndfile" ,libsndfile)
+ ("libvorbis" ,libvorbis)
+ ("portaudio" ,portaudio)
+ ("pulseaudio" ,pulseaudio)
+ ("qtbase" ,qtbase)
+ ("qtdeclarative" ,qtdeclarative)
+ ("qtscript" ,qtscript)
+ ("qtsvg" ,qtsvg)
+ ("qtwebkit" ,qtwebkit)
+ ("qtxmlpatterns" ,qtxmlpatterns)))
+ (native-inputs
+ `(("cmake" ,cmake)
+ ("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 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)))
--
2.13.0