commit: bd25f8f370ed297c233d2a2e7f6867f648409b12 Author: Nicolas PARLANT <nicolas.parlant <AT> parhuet <DOT> fr> AuthorDate: Fri Oct 10 12:57:13 2025 +0000 Commit: Miroslav Šulc <fordfrog <AT> gentoo <DOT> org> CommitDate: Thu Oct 16 12:59:27 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bd25f8f3
media-sound/musescore: sync live, unbundle lame/pugixml skip CMAKE_QA, one file from fluidsynth (3rd party), unused deps : add optional support for pipewire add optional support for websockets (qtwebsockets) add utfcpp (unbundled) xml is now handled by pugixml (unbundled) instead of tinyxml libsndfile is no longer required add qtbase:6[X] because upstream forces X11 (see PR 28461). wayland still could be forced with MU_QT_QPA_PLATFORM=wayland cmake options : disable PCH conditional pipewire conditional websockets skip more tests Signed-off-by: Nicolas PARLANT <nicolas.parlant <AT> parhuet.fr> Part-of: https://github.com/gentoo/gentoo/pull/44140 Closes: https://github.com/gentoo/gentoo/pull/44140 Signed-off-by: Miroslav Šulc <fordfrog <AT> gentoo.org> .../files/musescore-4.7-unbundle-gtest.patch | 70 ++++++++++++++++++++++ .../files/musescore-4.7-unbundle-lame.patch | 15 +++++ .../files/musescore-4.7-unbundle-pugixml.patch | 26 ++++++++ .../files/musescore-4.7-unbundle-utfcpp.patch | 52 ++++++++++++++++ media-sound/musescore/metadata.xml | 2 + media-sound/musescore/musescore-9999.ebuild | 66 ++++++++++++++++---- 6 files changed, 220 insertions(+), 11 deletions(-) diff --git a/media-sound/musescore/files/musescore-4.7-unbundle-gtest.patch b/media-sound/musescore/files/musescore-4.7-unbundle-gtest.patch new file mode 100644 index 000000000000..c7396f9885cd --- /dev/null +++ b/media-sound/musescore/files/musescore-4.7-unbundle-gtest.patch @@ -0,0 +1,70 @@ +unbundle gmock/gtest +--- a/buildscripts/cmake/DeclareModuleSetup.cmake ++++ b/buildscripts/cmake/DeclareModuleSetup.cmake +@@ -182,13 +182,11 @@ macro(setup_module) + ${MUSE_FRAMEWORK_PATH} + ${MUSE_FRAMEWORK_PATH}/framework + ${MUSE_FRAMEWORK_PATH}/framework/global +- ${MUSE_FRAMEWORK_PATH}/framework/testing/thirdparty/googletest/googletest/include + + # compat + ${MUSE_FRAMEWORK_PATH}/src + ${MUSE_FRAMEWORK_PATH}/src/framework + ${MUSE_FRAMEWORK_PATH}/src/framework/global +- ${MUSE_FRAMEWORK_PATH}/src/framework/testing/thirdparty/googletest/googletest/include + # end compat + + ${MODULE_INCLUDE_PRIVATE} +--- a/src/framework/CMakeLists.txt ++++ b/src/framework/CMakeLists.txt +@@ -124,7 +124,6 @@ if (MUSE_ENABLE_UNIT_TESTS) + ) + + set(INSTALL_GTEST OFF) +- add_subdirectory(testing/thirdparty/googletest) + endif() + + # Stubs +--- a/src/framework/testing/gtest.cmake ++++ b/src/framework/testing/gtest.cmake +@@ -31,9 +31,6 @@ + + message(STATUS "Configuring ${MODULE_TEST}") + +-get_property(gmock_LIBS GLOBAL PROPERTY gmock_LIBS) +-get_property(gmock_INCLUDE_DIRS GLOBAL PROPERTY gmock_INCLUDE_DIRS) +- + add_executable(${MODULE_TEST} + ${CMAKE_CURRENT_LIST_DIR}/gmain.cpp + ${CMAKE_CURRENT_LIST_DIR}/environment.cpp +@@ -50,13 +47,11 @@ target_include_directories(${MODULE_TEST} PRIVATE + ${MUSE_FRAMEWORK_PATH} + ${MUSE_FRAMEWORK_PATH}/framework + ${MUSE_FRAMEWORK_PATH}/framework/global +- ${MUSE_FRAMEWORK_PATH}/framework/testing/thirdparty/googletest/googletest/include + + # compat + ${MUSE_FRAMEWORK_PATH}/src + ${MUSE_FRAMEWORK_PATH}/src/framework + ${MUSE_FRAMEWORK_PATH}/src/framework/global +- ${MUSE_FRAMEWORK_PATH}/src/framework/testing/thirdparty/googletest/googletest/include + # end compat + + ${MODULE_TEST_INCLUDE} +@@ -74,11 +69,15 @@ endif() + + find_package(Qt6Core REQUIRED) + find_package(Qt6Gui REQUIRED) ++pkg_check_modules(gtest REQUIRED IMPORTED_TARGET gtest) ++pkg_check_modules(gmock REQUIRED IMPORTED_TARGET gmock) ++list(APPEND MODULE_TEST_INCLUDE ${gtest_INCLUDE_DIRS} ${gmock_INCLUDE_DIRS}) + + target_link_libraries(${MODULE_TEST} + Qt6::Core + Qt6::Gui +- gmock ++ PkgConfig::gmock ++ PkgConfig::gtest + muse_global + ${MODULE_TEST_LINK} + ${COVERAGE_FLAGS} diff --git a/media-sound/musescore/files/musescore-4.7-unbundle-lame.patch b/media-sound/musescore/files/musescore-4.7-unbundle-lame.patch new file mode 100644 index 000000000000..407489f9ef45 --- /dev/null +++ b/media-sound/musescore/files/musescore-4.7-unbundle-lame.patch @@ -0,0 +1,15 @@ +unbundle lame +--- a/src/framework/audio/engine/audio_engine.cmake ++++ b/src/framework/audio/engine/audio_engine.cmake +@@ -185,8 +185,9 @@ 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_ENGINE_LINK lame) ++ pkg_check_modules(lame REQUIRED IMPORTED_TARGET lame) ++ list(APPEND AUDIO_ENGINE_LINK PkgConfig::lame) ++ list(APPEND MODULE_INCLUDE_PRIVATE ${lame_INCLUDE_DIRS}) + + include(${CMAKE_CURRENT_LIST_DIR}/../cmake/SetupOpusEnc.cmake) + list(APPEND AUDIO_ENGINE_LINK ${LIBOPUSENC_TARGETS}) diff --git a/media-sound/musescore/files/musescore-4.7-unbundle-pugixml.patch b/media-sound/musescore/files/musescore-4.7-unbundle-pugixml.patch new file mode 100644 index 000000000000..09fbd5ee670b --- /dev/null +++ b/media-sound/musescore/files/musescore-4.7-unbundle-pugixml.patch @@ -0,0 +1,26 @@ +unbundle pugixml +--- a/src/framework/global/CMakeLists.txt ++++ b/src/framework/global/CMakeLists.txt +@@ -150,9 +150,6 @@ set(MODULE_SRC + ${CMAKE_CURRENT_LIST_DIR}/serialization/xmlstreamwriter.h + ${CMAKE_CURRENT_LIST_DIR}/serialization/xmldom.cpp + ${CMAKE_CURRENT_LIST_DIR}/serialization/xmldom.h +- +- ${CMAKE_CURRENT_LIST_DIR}/thirdparty/pugixml/pugixml.hpp +- ${CMAKE_CURRENT_LIST_DIR}/thirdparty/pugixml/pugixml.cpp + ) + + if (MUSE_THREADS_SUPPORT) +@@ -274,9 +271,9 @@ else () + set(Z_LIB z) + endif () + +-list(APPEND MODULE_INCLUDE_PRIVATE +- ${CMAKE_CURRENT_LIST_DIR}/thirdparty/pugixml +-) ++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/files/musescore-4.7-unbundle-utfcpp.patch b/media-sound/musescore/files/musescore-4.7-unbundle-utfcpp.patch new file mode 100644 index 000000000000..127ed7a1799d --- /dev/null +++ b/media-sound/musescore/files/musescore-4.7-unbundle-utfcpp.patch @@ -0,0 +1,52 @@ +unbundle utfcpp +--- a/src/framework/global/CMakeLists.txt ++++ b/src/framework/global/CMakeLists.txt +@@ -25,7 +25,6 @@ include(${CMAKE_CURRENT_LIST_DIR}/async/async.cmake) + include(${CMAKE_CURRENT_LIST_DIR}/thirdparty/kors_logger/logger.cmake) + include(${CMAKE_CURRENT_LIST_DIR}/thirdparty/kors_profiler/profiler/profiler.cmake) + 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 +@@ -33,7 +32,6 @@ set(MODULE_SRC + ${ASYNC_SRC} + ${KORS_LOGGER_SRC} + ${KORS_PROFILER_SRC} +- ${UTFCPP_SRC} + ${CMAKE_CURRENT_LIST_DIR}/globaltypes.h + ${CMAKE_CURRENT_LIST_DIR}/iapplication.h + ${CMAKE_CURRENT_LIST_DIR}/iinteractive.h +@@ -268,6 +266,10 @@ list(APPEND MODULE_LINK ${Z_LIB}) + list(APPEND MODULE_LINK ${TINYXML_MODULE_LINK}) + set(MODULE_DEF ${TINYXML_MODULE_DEF}) + ++find_package(utf8cpp REQUIRED CONFIG) ++get_target_property(UTFCPP_INC utf8::cpp INTERFACE_INCLUDE_DIRECTORIES) ++list(APPEND MODULE_INCLUDE_PRIVATE ${UTFCPP_INC}) ++ + if (QT_SUPPORT) + # These are needed by so many modules, that we make them public here, + # so that other modules get them transitively. +--- a/src/framework/global/serialization/xmlstreamwriter.cpp ++++ b/src/framework/global/serialization/xmlstreamwriter.cpp +@@ -23,7 +23,7 @@ + + #include <list> + +-#include <global/thirdparty/utfcpp/utf8.h> ++#include <utf8.h> + + #include "global/containers.h" + #include "textstream.h" +--- a/src/framework/global/types/string.cpp ++++ b/src/framework/global/types/string.cpp +@@ -32,7 +32,7 @@ + #include <sstream> + #include <utility> + +-#include "global/thirdparty/utfcpp/utf8.h" ++#include <utf8.h> + + #include "bytearray.h" + diff --git a/media-sound/musescore/metadata.xml b/media-sound/musescore/metadata.xml index 265b53d9c817..01182644c4d0 100644 --- a/media-sound/musescore/metadata.xml +++ b/media-sound/musescore/metadata.xml @@ -10,6 +10,8 @@ <remote-id type="github">musescore/MuseScore</remote-id> </upstream> <use> + <flag name="pipewire">Enable PipeWire audio support (upstream's default)</flag> <flag name="video">Support exporting scores as videos using the command line</flag> + <flag name="websockets">Enable websockets support</flag> </use> </pkgmetadata> diff --git a/media-sound/musescore/musescore-9999.ebuild b/media-sound/musescore/musescore-9999.ebuild index 81d62e7f2473..b52803e02549 100644 --- a/media-sound/musescore/musescore-9999.ebuild +++ b/media-sound/musescore/musescore-9999.ebuild @@ -3,6 +3,9 @@ EAPI=8 +# https://bugs.gentoo.org/958256, bundled fluidsynth: +# src/framework/audio/thirdparty/fluidsynth/fluidsynth-2.3.3/src/gentables/CMakeLists.txt +CMAKE_QA_COMPAT_SKIP=yes CHECKREQS_DISK_BUILD=3500M inherit cmake flag-o-matic xdg check-reqs @@ -25,7 +28,8 @@ SRC_URI+=" https://dev.gentoo.org/~fordfrog/distfiles/MuseScore_General-0.2.0.ta LICENSE="GPL-2" SLOT="0" -IUSE="jack test video" +IUSE="jack pipewire test video websockets" +REQUIRED_USE="?? ( jack pipewire )" RESTRICT="!test? ( test )" BDEPEND=" @@ -33,8 +37,8 @@ BDEPEND=" virtual/pkgconfig " RDEPEND=" - dev-libs/tinyxml2:= - dev-qt/qtbase:6[concurrent,dbus,gui,network,opengl,widgets,xml] + 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 @@ -45,21 +49,25 @@ RDEPEND=" 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=( - "${FILESDIR}/${PN}-4.5.0-unbundle-deps.patch" - "${FILESDIR}/${PN}-4.6.0-unbundle-gtest.patch" - "${FILESDIR}/${PN}-4.6.0-missing-includes.patch" + # unbundle 3rd libs + "${FILESDIR}/${PN}-4.7-unbundle-gtest.patch" + "${FILESDIR}/${PN}-4.7-unbundle-lame.patch" + "${FILESDIR}/${PN}-4.7-unbundle-pugixml.patch" + "${FILESDIR}/${PN}-4.7-unbundle-utfcpp.patch" ) src_unpack() { @@ -72,6 +80,27 @@ src_unpack() { } 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/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 @@ -94,17 +123,20 @@ src_configure() { -DMUE_COMPILE_USE_SYSTEM_FREETYPE=ON -DMUE_COMPILE_USE_SYSTEM_OPUS=ON -DMUE_COMPILE_USE_SYSTEM_OPUSENC=ON - -DMUE_COMPILE_USE_SYSTEM_TINYXML=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)" @@ -116,11 +148,23 @@ src_configure() { src_test() { CMAKE_SKIP_TESTS=( - # bug #950450 - iex_musicxml_tests - # it fails with gcc only, to investigate + # 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 ) 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 +}
