%global fontfamilyname %{name} %global shortver 2.0 %global fontdir %{_datadir}/fonts/mscore Summary: Linux MusE Score Typesetter Name: mscore Version: %{shortver}.1 Release: %mkrel 1 # (Fedora) rtf2html is LGPLv2+ # paper4.png paper5.png are LGPLv3 # the rest is GPLv2 # Soundfont is MIT # Bravura and gootville are OFL License: GPLv2 and LGPLv2+ and LGPLv3 and CC-BY and MIT and OFL Url: http://musescore.org Group: Publishing Source0: MuseScore-%{version}.zip # For mime types Source1: %{name}.xml # Add metainfo file for font to show in gnome-software Source2: %{fontfamilyname}.metainfo.xml # Use Fedora's default soundfont instead of the removed one: Patch0: musescore-2.0.1-use-default-soundfont.patch # We don't build the common files (font files, wallpapers, demo song, instrument # list) into the binary executable to reduce its size. This is also useful to # inform the users about the existence of different choices for common files. # The font files need to be separated due to the font packaging guidelines. Patch1: musescore-2.0.1-separate-commonfiles.patch # Fix DSO linking. Seems to have fixed in trunk, but misssing in the tarball # http://musescore.org/en/node/5817 Patch2: musescore-2.0.1-dso-linking.patch # Fix desktop file. The Version= field is for the Desktop File Specification version # not the version of MuseScore Patch3: MuseScore-2.0.1-fix-desktop-file.patch # Use CXXFLAGS for precompiled header Patch4: musescore-2.0.1-fix-flags-for-precompiled-header.patch # Drop mp3 support due to no lame in mageia # http://musescore.org/en/node/57736 Patch5: MuseScore-2.0.1-remove-mp3-support.patch BuildRequires: cmake BuildRequires: libalsa-devel BuildRequires: jackit-devel BuildRequires: fluidsynth-devel BuildRequires: portaudio-devel BuildRequires: pkgconfig(vorbis) BuildRequires: qt5-devel BuildRequires: pkgconfig(Qt5WebKit) BuildRequires: pkgconfig(Qt5Help) BuildRequires: pkgconfig(Qt5XmlPatterns) BuildRequires: pkgconfig(Qt5UiTools) BuildRequires: pkgconfig(Qt5Declarative) BuildRequires: pkgconfig(Qt5ScriptTools) BuildRequires: pkgconfig(Qt5QuickWidgets) BuildRequires: pkgconfig(Qt5Svg) BuildRequires: pkgconfig(Qt5WebKitWidgets) BuildRequires: qttools5-assistant BuildRequires: qttools5 BuildRequires: qtsingleapplication-devel BuildRequires: texlive BuildRequires: texlive-texmf BuildRequires: perl(Pod::Usage) BuildRequires: doxygen Requires: qtscriptbindings Requires: %{name}-fonts = %{version}-%{release} Requires: soundfont2-default Provides: musescore = %{version}-%{release} Obsoletes: musescore < 1.2-1 # Doxygen documentation is huge and it is for musescore development only. # Hence we don't build it for now. Otherwise it needs: # BuildRequires: graphviz doxygen texlive-latex texlive-dvips %description MuseScore stands for Linux MusE Score Typesetter. Features: - WYSIWYG design, notes are entered on a "virtual notepaper" - TrueType font(s) for printing & display allows for high quality scaling to all sizes - easy & fast note entry - many editing functions - MusicXML import/export - Midi (SMF) import/export - MuseData import - Midi input for note entry - integrated sequencer and software synthesizer to play the score - print or create pdf files %package doc Summary: MuseScore documentation Group: Development/Other License: CC-BY Requires: %{name} = %{version}-%{release} BuildArch: noarch Obsoletes: musescore-doc %description doc MuseScore is a free cross platform WYSIWYG music notation program. This package contains the user manual of MuseScore in different languages. %package fonts Summary: MuseScore fonts Group: Publishing License: GPL+ with exceptions and OFL BuildArch: noarch BuildRequires: fontforge BuildRequires: tetex BuildRequires: t1utils %description fonts MuseScore is a free cross platform WYSIWYG music notation program. This package contains the musical notation fonts for use of MuseScore. %prep %setup -q -n MuseScore-%{version} %apply_patches # (Fedora) Remove the precompiled binary rm thirdparty/rtf2html/rtf2html # Force Fedora specific flags: find . -name CMakeLists.txt -exec sed -i -e 's|-m32|%{optflags}|' -e 's|-O3|%{optflags}|' {} \; # (Fedora) Do not build the bundled qt scripting interface: sed -i 's|BUILD_SCRIPTGEN TRUE|BUILD_SCRIPTGEN FALSE|' %{name}/CMakeLists.txt # Fix EOL encoding sed 's|\r||' thirdparty/rtf2html/README > tmpfile touch -r thirdparty/rtf2html/README tmpfile mv -f tmpfile thirdparty/rtf2html/README # (Fedora) Remove preshipped fonts. We will build them from source rm -f %{name}/%{name}/fonts/*.ttf # (Fedora) Disable rpath sed -i '/rpath/d' CMakeLists.txt %build # Build the actual program %cmake -DCMAKE_BUILD_TYPE=RELEASE \ -DCMAKE_CXX_FLAGS="%{optflags} -fsigned-char" \ -DCMAKE_CXX_FLAGS_RELEASE="%{optflags} -std=c++11 -fPIC -O2 -DNDEBUG -DQT_NO_DEBUG -fsigned-char" \ .. # make PREFIX=/usr lupdate %make PREFIX=/usr lrelease %make PREFIX=/usr VERBOSE=1 pushd rdoc %make PREFIX=/usr popd %install pushd build make install PREFIX=/usr DESTDIR=%{buildroot} popd pushd build/rdoc make install PREFIX=/usr DESTDIR=%{buildroot} popd mkdir -p %{buildroot}/%{_datadir}/applications cp -a build/mscore.desktop %{buildroot}/%{_datadir}/applications # Install fonts mkdir -p %{buildroot}/%{fontdir} mkdir -p %{buildroot}/%{fontdir}/bravura mkdir -p %{buildroot}/%{fontdir}/gootville install -pm 644 fonts/*.ttf %{buildroot}/%{fontdir} install -pm 644 fonts/bravura/*.otf %{buildroot}/%{fontdir} install -pm 644 fonts/bravura/*.json %{buildroot}/%{fontdir}/bravura install -pm 644 fonts/gootville/*.otf %{buildroot}/%{fontdir} install -pm 644 fonts/gootville/*.json %{buildroot}/%{fontdir}/gootville/ install -pm 644 fonts/mscore/*.ttf fonts/mscore/*.otf %{buildroot}/%{fontdir} install -pm 644 fonts/mscore/*.json %{buildroot}/%{fontdir} install -pm 644 fonts/*.xml %{buildroot}/%{fontdir} # mscz mkdir -p %{buildroot}/%{_datadir}/%{name}-%{shortver}/demos/ install -p share/templates/*.mscz %{buildroot}/%{_datadir}/%{name}-%{shortver}/demos/ # symlinks to be safe #pushd %{buildroot}/%{_datadir}/%{name}-%{shortver}/demos/ #for i in *.mscz; do # ln -s $i ../templates/$i #done #popd pushd %{buildroot}/%{fontdir} cd bravura ln -s ../Bravura.otf . ln -s ../BravuraText.otf . cd ../gootville ln -s ../Gootville.otf . ln -s ../GootvilleText.otf . cd .. popd # Mime type mkdir -p %{buildroot}/%{_datadir}/mime/packages install -pm 644 %{SOURCE1} %{buildroot}/%{_datadir}/mime/packages/ # Desktop file desktop-file-install \ --dir=%{buildroot}/%{_datadir}/applications \ --add-category="X-Notation" \ --remove-category="Sequencer" \ --remove-category="AudioVideoEditing" \ --add-mime-type="audio/midi" \ --add-mime-type="text/x-lilypond" \ --add-mime-type="application/xml" \ %{buildroot}/%{_datadir}/applications/%{name}.desktop # Move images to the freedesktop location mkdir -p %{buildroot}/%{_datadir}/icons/hicolor/{32x32,64x64}/apps/ mkdir -p %{buildroot}/%{_datadir}/icons/hicolor/{32x32,64x64}/mimetypes/ cp -a mscore/data/mscore.xpm \ %{buildroot}/%{_datadir}/icons/hicolor/32x32/mimetypes/application-x-musescore.xpm cp -a mscore/data/mscore.xpm \ %{buildroot}/%{_datadir}/icons/hicolor/32x32/apps/ cp -a mscore/data/mscore.png \ %{buildroot}/%{_datadir}/icons/hicolor/64x64/mimetypes/application-x-musescore.png cp -a mscore/data/mscore.png \ %{buildroot}/%{_datadir}/icons/hicolor/64x64/apps/ # Manpage mkdir -p %{buildroot}/%{_mandir}/man1 install -pm 644 build/%{name}.1 %{buildroot}/%{_mandir}/man1/ # There are many doc files spread around the tarball. Let's collect them mv thirdparty/rtf2html/ChangeLog ChangeLog.rtf2html mv thirdparty/rtf2html/COPYING.LESSER COPYING.LESSER.rtf2html mv thirdparty/rtf2html/README README.rtf2html mv thirdparty/rtf2html/README.mscore README.mscore.rtf2html mv thirdparty/rtf2html/README.ru README.ru.rtf2html mv share/wallpaper/COPYRIGHT COPYING.wallpaper mv %{buildroot}%{_datadir}/soundfonts/FluidR3Mono_License.md COPYING.FluidR3Mono mv fonts/bravura/OFL.txt COPYING.OFL # Add AppStream metadata install -Dm 0644 -p %{SOURCE2} \ %{buildroot}%{_datadir}/appdata/%{fontfamilyname}.metainfo.xml %check # iotest seems outdated. Skipping. # rendertest needs the X server. Skipping. %post touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : touch --no-create %{_datadir}/mime/packages &> /dev/null || : update-desktop-database &> /dev/null || : %postun if [ $1 -eq 0 ] ; then touch --no-create %{_datadir}/icons/hicolor &>/dev/null gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : touch --no-create %{_datadir}/mime/packages &> /dev/null || : update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || : fi update-desktop-database &> /dev/null || : %posttrans gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || : %files %doc {ChangeLog*,README*} %license COPYING* %{_bindir}/%{name} %{_datadir}/%{name}-%{shortver}/ %exclude %{_datadir}/%{name}-%{shortver}/manual/ %{_datadir}/icons/hicolor/*/*/* %{_datadir}/pixmaps/mscore.png %{_datadir}/applications/%{name}.desktop %{_datadir}/mime/packages/%{name}.xml %{_mandir}/man1/* %{_datadir}/soundfonts/FluidR3Mono_GM.sf3 %files doc %doc %{_datadir}/%{name}-%{shortver}/manual/ %files fonts %{_datadir}/fonts/mscore/bravura/ %{_datadir}/fonts/mscore/gootville/ %{_datadir}/fonts/mscore/FreeSans.ttf %{_datadir}/fonts/mscore/mscore.ttf %{_datadir}/fonts/mscore/FreeSerif*.ttf %{_datadir}/fonts/mscore/MuseJazz*.ttf %{_datadir}/fonts/mscore/MScoreText.ttf %{_datadir}/fonts/mscore/mscoreTab.ttf %{_datadir}/fonts/mscore/mscore-BC.ttf %{_datadir}/fonts/mscore/*.otf %{_datadir}/fonts/mscore/*.json %{_datadir}/fonts/mscore/*.xml %{_datadir}/appdata/%{fontfamilyname}.metainfo.xml