commit: 1afa7a46b49207bb2e820acab2eb551ba3c36f67 Author: Nicolas PARLANT <nicolas.parlant <AT> parhuet <DOT> fr> AuthorDate: Thu Oct 23 06:46:27 2025 +0000 Commit: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> CommitDate: Sun Oct 26 18:25:13 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1afa7a46
media-sound/musescore: add 4.6.3 rebased from live ebuild w/ backported patches and libsndfile still required. 4.6 branch supports pipewire CMAKE_QA_COMPAT_SKIP : CMakeLists.txt used are >=3.16 for upstream and 3.12 for KDDockWidgets Closes: https://bugs.gentoo.org/952950 Closes: https://bugs.gentoo.org/958256 Signed-off-by: Nicolas PARLANT <nicolas.parlant <AT> parhuet.fr> Part-of: https://github.com/gentoo/gentoo/pull/44297 Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org> media-sound/musescore/Manifest | 1 + .../files/musescore-4.6.3-fix_qt610.patch | 36 +++++ .../files/musescore-4.6.3-missing_includes.patch | 86 ++++++++++ .../files/musescore-4.6.3-rm_tinyxml.patch | 40 +++++ .../files/musescore-4.6.3-unbundle-lame.patch | 16 ++ .../files/musescore-4.6.3-unbundle-pugixml.patch | 27 ++++ media-sound/musescore/musescore-4.6.3.ebuild | 180 +++++++++++++++++++++ 7 files changed, 386 insertions(+) diff --git a/media-sound/musescore/Manifest b/media-sound/musescore/Manifest index f6f4f0ab3366..b60b4946a67e 100644 --- a/media-sound/musescore/Manifest +++ b/media-sound/musescore/Manifest @@ -1,3 +1,4 @@ DIST MuseScore_General-0.2.0.tar.bz2 35122747 BLAKE2B 7f9cafb7912ab8c977842c51df69506d4ad3d1d37498c856978a2d5ab50a1c4fe9145a4807f8c353e6f14138704abb2bbd70c948f1621b494c6e0458c2df0184 SHA512 69eeb22e8c9d1d393a2af857baeb8e49bf2a492651d18190685c74df84a5f6b424e37077e39d9d69c117c4896ea1fbb857eba25a1fbcb6f98d53f384a55713cc DIST musescore-4.5.2-fix_qt69.patch.xz 7348 BLAKE2B eeb13290eb99f90aec6750ad23711acc8de9bb17d599a7b0e765ccdfbe2ed979f56f75f951d76f6257547b48e636110a9bf17b7ec2e344feadccc5b4ff521452 SHA512 012a67742160e1a0f05cfed67087f77bae375613a6c4a2c7c31c60e475c50c80a450ad886dd9c8893bba1af0874800f3f8cc77cfea73f329993f50502baceb96 DIST musescore-4.5.2.tar.gz 144700695 BLAKE2B b92eecc10b34dee033434568f7f9a9a1943159b42ef70ff0128da6bf6637d06ef896e035f4add5803c2223a846cd72242d410f24852b0018b9297b559ca6bb94 SHA512 5175626ed78774973548fee5a91de9ec10ed1e8d6ade00cdea21d4a2430c425f3cb1e02af9904270cd65c3fc37625811d17047eea2d13df5cab2d901232454f2 +DIST musescore-4.6.3.tar.gz 159635093 BLAKE2B 8d15cd4182ea4be2d58f5a4b03d099608148bf43afc1057eb97f0003ad3acd1796aef16ee6fa44fac39343a05bf7b1236d22918119f69d40be2b5f19609d52a9 SHA512 bd8f427154613f00d5a84a949b05351ce5fa8e9ce2f37410c97762d5dd29643c2e6c5bd763a40a99f927aa61d84a3572734189f2650daae5eb3a6a51717be923 diff --git a/media-sound/musescore/files/musescore-4.6.3-fix_qt610.patch b/media-sound/musescore/files/musescore-4.6.3-fix_qt610.patch new file mode 100644 index 000000000000..8975340ff2fb --- /dev/null +++ b/media-sound/musescore/files/musescore-4.6.3-fix_qt610.patch @@ -0,0 +1,36 @@ +backport patch to fix building with qt-6.10 +https://github.com/musescore/MuseScore/pull/30691.patch +--- a/src/framework/dockwindow/thirdparty/KDDockWidgets/CMakeLists.txt ++++ b/src/framework/dockwindow/thirdparty/KDDockWidgets/CMakeLists.txt +@@ -139,6 +139,7 @@ set(${PROJECT_NAME}_DEPS "widgets") + if(${PROJECT_NAME}_QTQUICK) + find_package(Qt${Qt_VERSION_MAJOR}Quick) + find_package(Qt${Qt_VERSION_MAJOR}QuickControls2) ++ find_package(Qt${Qt_VERSION_MAJOR} REQUIRED COMPONENTS GuiPrivate) + add_definitions(-DKDDOCKWIDGETS_QTQUICK) + set(${PROJECT_NAME}_DEPS "${${PROJECT_NAME}_DEPS} quick quickcontrols2") + else() +--- a/src/framework/accessibility/CMakeLists.txt ++++ b/src/framework/accessibility/CMakeLists.txt +@@ -48,7 +48,8 @@ set(MODULE_SRC + + if (OS_IS_LIN) + # it needed to send a spontaneous event by activating navigation +- set(MODULE_INCLUDE_PRIVATE ${Qt6Core_PRIVATE_INCLUDE_DIRS}) ++ find_package(Qt6 REQUIRED COMPONENTS CorePrivate) ++ set(MODULE_LINK ${MODULE_LINK} Qt6::CorePrivate) + endif() + + +--- a/src/appshell/CMakeLists.txt ++++ b/src/appshell/CMakeLists.txt +@@ -132,7 +132,8 @@ if (NOT OS_IS_MAC) + ) + + # we use QKeyMapper to fix https://github.com/musescore/MuseScore/issues/10181 +- set(MODULE_INCLUDE_PRIVATE ${Qt6Gui_PRIVATE_INCLUDE_DIRS} ) ++ find_package(Qt6 REQUIRED COMPONENTS GuiPrivate) ++ set(MODULE_LINK ${MODULE_LINK} Qt6::GuiPrivate) + endif(NOT OS_IS_MAC) + + if (QT_SUPPORT) diff --git a/media-sound/musescore/files/musescore-4.6.3-missing_includes.patch b/media-sound/musescore/files/musescore-4.6.3-missing_includes.patch new file mode 100644 index 000000000000..106d82d50463 --- /dev/null +++ b/media-sound/musescore/files/musescore-4.6.3-missing_includes.patch @@ -0,0 +1,86 @@ +backported from master +https://github.com/musescore/MuseScore/pull/30365.patch +https://github.com/musescore/MuseScore/pull/30397.patch +--- a/src/framework/audio/driver/platform/jack/audiodeviceslistener.h ++++ b/src/framework/audio/driver/platform/jack/audiodeviceslistener.h +@@ -27,7 +27,7 @@ + #include <condition_variable> + + #include "async/notification.h" +-#include "audiotypes.h" ++#include "audio/common/audiotypes.h" + + namespace muse::audio { + class AudioDevicesListener +--- a/src/framework/ui/view/qmldrag.h ++++ b/src/framework/ui/view/qmldrag.h +@@ -23,6 +23,7 @@ + + #include <QObject> + #include <QQmlEngine> ++#include <QQuickItem> + + #include "global/modularity/ioc.h" + #include "../idragcontroller.h" +--- a/src/framework/ui/view/windowsmodel.cpp ++++ b/src/framework/ui/view/windowsmodel.cpp +@@ -22,6 +22,8 @@ + + #include "windowsmodel.h" + ++#include <QRect> ++ + using namespace muse::ui; + + WindowsModel::WindowsModel(QObject* parent) +--- a/src/importexport/midi/internal/midiimport/importmidi_instrument.h ++++ b/src/importexport/midi/internal/midiimport/importmidi_instrument.h +@@ -21,6 +21,8 @@ + */ + #pragma once + ++#include <QList> ++ + #include "internal/midishared/generalmidi.h" + + class QString; +--- a/src/notation/view/abstractnotationpaintview.cpp ++++ b/src/notation/view/abstractnotationpaintview.cpp +@@ -21,6 +21,7 @@ + */ + #include "abstractnotationpaintview.h" + ++#include <QCursor> + #include <QPainter> + #include <QMimeData> + +--- a/src/palette/view/widgets/palettewidget.cpp ++++ b/src/palette/view/widgets/palettewidget.cpp +@@ -35,6 +35,7 @@ + #include <QMimeData> + #include <QResizeEvent> + #include <QToolTip> ++#include <QWindow> + + #include "translation.h" + #include "types/bytearray.h" +--- a/thirdparty/rtf2html/rtf_table.cpp ++++ b/thirdparty/rtf2html/rtf_table.cpp +@@ -5,6 +5,7 @@ + #include <stdexcept> + #include <functional> + #include <algorithm> ++#include <tgmath.h> + + typedef std::set<int> intset; + +--- a/thirdparty/rtf2html/rtf_table.h ++++ b/thirdparty/rtf2html/rtf_table.h +@@ -6,6 +6,7 @@ + #include <stdio.h> // Just to make debug version of STLPort work under BC + #endif + #include "common.h" ++#include <string> + #include <vector> + #include <cmath> + #include <list> diff --git a/media-sound/musescore/files/musescore-4.6.3-rm_tinyxml.patch b/media-sound/musescore/files/musescore-4.6.3-rm_tinyxml.patch new file mode 100644 index 000000000000..ee2a4a64ea93 --- /dev/null +++ b/media-sound/musescore/files/musescore-4.6.3-rm_tinyxml.patch @@ -0,0 +1,40 @@ +backport patch to remove tinyxml2 replaced by pugixml +https://github.com/musescore/MuseScore/pull/30086.patch +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -123,7 +123,6 @@ option(MUE_COMPILE_USE_SYSTEM_FREETYPE "Try use system freetype" OFF) + option(MUE_COMPILE_USE_SYSTEM_HARFBUZZ "Try use system harfbuzz" OFF) + option(MUE_COMPILE_USE_SYSTEM_OPUS "Try use system opus" OFF) + option(MUE_COMPILE_USE_SYSTEM_OPUSENC "Try use system libopusenc" OFF) +-option(MUE_COMPILE_USE_SYSTEM_TINYXML "Try use system tinyxml" OFF) + + # === Debug === + option(MUE_ENABLE_LOAD_QML_FROM_SOURCE "Load qml files from source (not resource)" OFF) +--- a/src/framework/global/CMakeLists.txt ++++ b/src/framework/global/CMakeLists.txt +@@ -27,7 +27,6 @@ include(${CMAKE_CURRENT_LIST_DIR}/thirdparty/kors_profiler/profiler/profiler.cma + include(${CMAKE_CURRENT_LIST_DIR}/thirdparty/kors_modularity/modularity/modularity.cmake) + include(${CMAKE_CURRENT_LIST_DIR}/thirdparty/utfcpp/utfcpp.cmake) + +-find_package(TinyXml REQUIRED) + set(MODULE_SRC + ${MODULARITY_SRC} + ${ASYNC_SRC} +@@ -134,7 +133,6 @@ set(MODULE_SRC + ${CMAKE_CURRENT_LIST_DIR}/serialization/xmlstreamreader.h + ${CMAKE_CURRENT_LIST_DIR}/serialization/xmlstreamwriter.cpp + ${CMAKE_CURRENT_LIST_DIR}/serialization/xmlstreamwriter.h +- ${TINYXML_MODULE_SRC} + ${CMAKE_CURRENT_LIST_DIR}/serialization/zipreader.cpp + ${CMAKE_CURRENT_LIST_DIR}/serialization/zipreader.h + ${CMAKE_CURRENT_LIST_DIR}/serialization/zipwriter.cpp +@@ -265,9 +263,6 @@ list(APPEND MODULE_INCLUDE_PRIVATE + list(APPEND MODULE_INCLUDE_PRIVATE ${Z_INCLUDE}) + list(APPEND MODULE_LINK ${Z_LIB}) + +-list(APPEND MODULE_LINK ${TINYXML_MODULE_LINK}) +-set(MODULE_DEF ${TINYXML_MODULE_DEF}) +- + if (QT_SUPPORT) + # These are needed by so many modules, that we make them public here, + # so that other modules get them transitively. diff --git a/media-sound/musescore/files/musescore-4.6.3-unbundle-lame.patch b/media-sound/musescore/files/musescore-4.6.3-unbundle-lame.patch new file mode 100644 index 000000000000..7f033f3ed14f --- /dev/null +++ b/media-sound/musescore/files/musescore-4.6.3-unbundle-lame.patch @@ -0,0 +1,16 @@ +unbundle lame +--- a/src/framework/audio/worker/audio_worker.cmake ++++ b/src/framework/audio/worker/audio_worker.cmake +@@ -159,8 +159,10 @@ if (MUSE_MODULE_AUDIO_EXPORT) + ${CMAKE_CURRENT_LIST_DIR}/internal/export/wavencoder.h + ) + +- add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../thirdparty/lame lame EXCLUDE_FROM_ALL) +- list(APPEND AUDIO_WORKER_LINK lame) ++ find_package(PkgConfig REQUIRED) ++ pkg_check_modules(lame REQUIRED IMPORTED_TARGET lame) ++ list(APPEND AUDIO_WORKER_LINK PkgConfig::lame) ++ list(APPEND MODULE_INCLUDE_PRIVATE ${lame_INCLUDE_DIRS}) + + include(${CMAKE_CURRENT_LIST_DIR}/../cmake/SetupOpusEnc.cmake) + list(APPEND AUDIO_WORKER_LINK ${LIBOPUSENC_TARGETS}) diff --git a/media-sound/musescore/files/musescore-4.6.3-unbundle-pugixml.patch b/media-sound/musescore/files/musescore-4.6.3-unbundle-pugixml.patch new file mode 100644 index 000000000000..d3e80db8dbbd --- /dev/null +++ b/media-sound/musescore/files/musescore-4.6.3-unbundle-pugixml.patch @@ -0,0 +1,27 @@ +unbundle pugixml +--- a/src/framework/global/CMakeLists.txt ++++ b/src/framework/global/CMakeLists.txt +@@ -151,9 +151,6 @@ set(MODULE_SRC + ${CMAKE_CURRENT_LIST_DIR}/serialization/msgpack.h + ${CMAKE_CURRENT_LIST_DIR}/serialization/msgpack_forward.h + +- ${CMAKE_CURRENT_LIST_DIR}/thirdparty/pugixml/pugixml.hpp +- ${CMAKE_CURRENT_LIST_DIR}/thirdparty/pugixml/pugixml.cpp +- + ${CMAKE_CURRENT_LIST_DIR}/concurrency/taskscheduler.h + ${CMAKE_CURRENT_LIST_DIR}/concurrency/concurrent.h + ) +@@ -258,9 +255,10 @@ else () + set(Z_LIB z) + endif () + +-list(APPEND MODULE_INCLUDE_PRIVATE +- ${CMAKE_CURRENT_LIST_DIR}/thirdparty/pugixml +-) ++find_package(PkgConfig REQUIRED) ++pkg_check_modules(pugixml REQUIRED IMPORTED_TARGET pugixml) ++list(APPEND MODULE_LINK PkgConfig::pugixml) ++list(APPEND MODULE_INCLUDE_PRIVATE ${pugixml_INCLUDE_DIRS}) + + list(APPEND MODULE_INCLUDE_PRIVATE ${Z_INCLUDE}) + list(APPEND MODULE_LINK ${Z_LIB}) diff --git a/media-sound/musescore/musescore-4.6.3.ebuild b/media-sound/musescore/musescore-4.6.3.ebuild new file mode 100644 index 000000000000..c783d709a9cb --- /dev/null +++ b/media-sound/musescore/musescore-4.6.3.ebuild @@ -0,0 +1,180 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# https://bugs.gentoo.org/958256, bundled fluidsynth: +# src/framework/audio/thirdparty/fluidsynth/fluidsynth-2.3.3/src/gentables/CMakeLists.txt +# upstream files are >=3.16, KDDockWidgets is 3.12 +CMAKE_QA_COMPAT_SKIP=yes +CHECKREQS_DISK_BUILD=3500M +inherit cmake flag-o-matic xdg check-reqs + +if [[ ${PV} == "9999" ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/musescore/MuseScore.git" +else + SRC_URI=" + https://github.com/musescore/MuseScore/archive/v${PV}.tar.gz -> ${P}.tar.gz + " + KEYWORDS="~amd64 ~arm64 ~x86" + S="${WORKDIR}/MuseScore-${PV}" +fi + +DESCRIPTION="WYSIWYG Music Score Typesetter" +HOMEPAGE="https://musescore.org/" +# MuseScore_General-*.tar.bz2 packaged from https://ftp.osuosl.org/pub/musescore/soundfont/MuseScore_General/ +# It has to be repackaged because the files are not versioned, current version can be found in VERSION file there. +SRC_URI+=" https://dev.gentoo.org/~fordfrog/distfiles/MuseScore_General-0.2.0.tar.bz2" + +LICENSE="GPL-2" +SLOT="0" +IUSE="jack pipewire test video websockets" +REQUIRED_USE="?? ( jack pipewire )" +RESTRICT="!test? ( test )" + +BDEPEND=" + dev-qt/qttools:6[linguist] + virtual/pkgconfig +" +RDEPEND=" + dev-libs/pugixml + dev-qt/qtbase:6[concurrent,dbus,gui,network,opengl,widgets,xml,X] + dev-qt/qt5compat:6[qml] + dev-qt/qtdeclarative:6 + dev-qt/qtnetworkauth:6 + dev-qt/qtscxml:6 + dev-qt/qtsvg:6 + media-libs/alsa-lib + media-libs/flac:= + media-libs/freetype + media-libs/harfbuzz:= + media-libs/libopusenc + media-libs/libsndfile + media-libs/opus + media-sound/lame + sys-libs/zlib:= + jack? ( virtual/jack ) + pipewire? ( media-video/pipewire:= ) + video? ( media-video/ffmpeg:= ) + websockets? ( dev-qt/qtwebsockets:6 ) +" +DEPEND="${RDEPEND} + dev-libs/utfcpp + test? ( dev-cpp/gtest ) +" + +PATCHES=( + # backported from master + "${FILESDIR}/${PN}-4.5.2-ffmpeg8.patch" + "${FILESDIR}/${PN}-4.6.3-rm_tinyxml.patch" + "${FILESDIR}/${PN}-4.6.3-missing_includes.patch" + "${FILESDIR}/${PN}-4.6.3-fix_qt610.patch" + # unbundle 3rd libs + "${FILESDIR}/${PN}-4.6.3-unbundle-lame.patch" + "${FILESDIR}/${PN}-4.6.3-unbundle-pugixml.patch" + "${FILESDIR}/${PN}-4.7-unbundle-gtest.patch" + "${FILESDIR}/${PN}-4.7-unbundle-utfcpp.patch" +) + +src_unpack() { + if [[ ${PV} == "9999" ]]; then + git-r3_src_unpack + unpack ${A} + else + default + fi +} + +src_prepare() { + # see https://github.com/musescore/MuseScore/issues/11572 + # keep global/thirdparty/picojson, upstream is inactive + # keep dockwindow/thirdparty/KDDockWidgets, using priv headers + # keep audio/thirdparty/fluidsynth, using priv headers + # keep audio/thirdparty/stb, one file, same as miniaudio + local rm_deps=( + audio/thirdparty/flac + audio/thirdparty/lame + audio/thirdparty/opus + audio/thirdparty/opusenc + draw/thirdparty/freetype + global/thirdparty/pugixml + global/thirdparty/tinyxml + global/thirdparty/utfcpp + testing/thirdparty/googletest + ) + + local bundle + for bundle in "${rm_deps[@]}"; do + rm -r src/framework/"${bundle}" || die + done + + cmake_src_prepare + + # Move soundfonts to the correct directory + mv -v "${WORKDIR}"/sound/* "${S}"/share/sound/ || die "Failed to move soundfont files" +} + +src_configure() { + # confuses rcc, bug #908808 + filter-lto + + local mycmakeargs=( + -DCMAKE_POSITION_INDEPENDENT_CODE=ON # https://github.com/musescore/MuseScore/issues/28797 + -DCMAKE_BUILD_TYPE="release" + -DCMAKE_CXX_FLAGS_RELEASE="${CXXFLAGS}" + -DCMAKE_C_FLAGS_RELEASE="${CFLAGS}" + -DCMAKE_SKIP_RPATH=TRUE + -DGZIP_EXECUTABLE=OFF # avoid compressed manpages + -DMUE_BUILD_IMPEXP_VIDEOEXPORT_MODULE="$(usex video)" + -DMUE_COMPILE_USE_SYSTEM_FLAC=ON + -DMUE_COMPILE_USE_SYSTEM_FREETYPE=ON + -DMUE_COMPILE_USE_SYSTEM_OPUS=ON + -DMUE_COMPILE_USE_SYSTEM_OPUSENC=ON + -DMUE_COMPILE_USE_SYSTEM_HARFBUZZ=ON + -DMUE_DOWNLOAD_SOUNDFONT=OFF + -DMUSE_APP_BUILD_MODE="release" + -DMUSE_COMPILE_USE_COMPILER_CACHE=OFF + -DMUSE_COMPILE_USE_PCH=OFF + -DMUSE_MODULE_AUDIO_JACK="$(usex jack)" + -DMUSE_MODULE_DIAGNOSTICS_CRASHPAD_CLIENT=OFF + -DMUSE_MODULE_NETWORK_WEBSOCKET="$(usex websockets)" + -DMUSE_MODULE_UPDATE=OFF + -DMUSE_PIPEWIRE_AUDIO_DRIVER="$(usex pipewire)" + # tests + -DMUSE_ENABLE_UNIT_TESTS="$(usex test)" + -DMUE_BUILD_BRAILLE_TESTS="$(usex test)" + -DMUE_BUILD_CONVERTER_TESTS="$(usex test)" + -DMUE_BUILD_ENGRAVING_TESTS="$(usex test)" + -DMUE_BUILD_IMPORTEXPORT_TESTS="$(usex test)" + -DMUE_BUILD_NOTATION_TESTS="$(usex test)" + -DMUE_BUILD_PLAYBACK_TESTS="$(usex test)" + -DMUE_BUILD_PROJECT_TESTS="$(usex test)" + ) + cmake_src_configure +} + +src_test() { + CMAKE_SKIP_TESTS=( + # see https://github.com/musescore/MuseScore/issues/30434 + # Global_AllocatorTests* fail with gcc only, to investigate + muse_global_tests + # segfault + muse_audio_tests + # see bug #950450 too + iex_musicxml_tests + # fixed in master + converter_tests + ) + + QT_QPA_PLATFORM=offscreen cmake_src_test +} + +pkg_postinst() { + xdg_pkg_postinst + + if has_version "media-sound/musescore" || ! use pipewire; then + ewarn "PipeWire support is disabled but it's the default audio driver anyway!" + ewarn "Check your configuration." + fi +}
