Subject: [bug#75037] Upgrade MuseScore to 4.4.4

From: Rovanion Luckey <[email-masked]>
Date: Wed, 1 Jan 2025 21:14:24 +0100

Hi,
I've now finalized my patch to bring up MuseScore to version 4.4. As
different downstream packagers have experienced this upgrade was trickier
than usual. Fortunately I could draw from their experiences to reach my now
working version. Loading, arranging and playback of arrangements works
well. Though there is graphical lag during playback with the playhead
visibly juttering.

On the Guix side I had to change the build system for Harfbuzz in order for
it to build correct CMake-files for MuseScore to consume - rather than
build its vendored version. The problem of course is that harfbuzz has
about 15 000 dependants. So I created a temporary package named
harfbuzz-meson to later be removed with a core-updates merge.

So the patches 0001 and 0002 are for master and 0003 is for core-updates.
From 90f9fc42e00b5cc0cd9777fd9393d079883c52fd Mon Sep 17 00:00:00 2001
Message-ID: <90f9fc4[email-masked]>
In-Reply-To: <8eb6ab3[email-masked]>
References: <8eb6ab3[email-masked]>
From: Rovanion Luckey <[email-masked]>
Date: Wed, 1 Jan 2025 21:08:05 +0100
Subject: [PATCH 3/3] gnu: harfbuzz: Switch build system to meson.

* gnu/packages/gtk.scm (harfbuzz): Switch build system to meson.
* gnu/packages/gtk.scm (harfbuzz-meson): Remove temporary package.

Change-Id: I0041beab3bd596f58547351071edb49ebb5077af
---
 gnu/packages/gtk.scm   | 42 +-----------------------------------------
 gnu/packages/music.scm |  2 +-
 2 files changed, 2 insertions(+), 42 deletions(-)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 984645f847..83e2b3cd67 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -279,7 +279,7 @@ (define-public cairo-xcb
         #~(cons "-Dxlib-xcb=enabled" #$flags))))
     (synopsis "2D graphics library (with X11 support)")))
 
-(define-public harfbuzz-meson
+(define-public harfbuzz
   (package
     (name "harfbuzz")
     (version "8.3.0")
@@ -318,46 +318,6 @@ (define-public harfbuzz-meson
                                 "See 'COPYING' in the distribution."))
     (home-page "https://www.freedesktop.org/wiki/Software/HarfBuzz/")))
 
-(define-public harfbuzz
-  (package
-    (name "harfbuzz")
-    (version "8.3.0")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/harfbuzz/harfbuzz"
-                                  "/releases/download/" version "/harfbuzz-"
-                                  version ".tar.xz"))
-              (sha256
-               (base32
-                "0izq2lpqxrf1l755nxrxkkiarywkx5j43asznankxplbxgm0358h"))))
-    (build-system gnu-build-system)
-    (outputs '("out"
-               "bin"))                  ;160K, only hb-view depend on cairo
-    (inputs
-     (list cairo))
-    (propagated-inputs
-     ;; There are all in the Requires or Requires.private field of '.pc'.
-     (list glib graphite2 icu4c))
-    (native-inputs
-     (append (list `(,glib "bin"))      ;for glib-mkenums
-             (if (target-hurd?)
-                 '()
-                 (list gobject-introspection))
-             (list pkg-config
-                   python-wrapper
-                   which)))
-    (arguments
-     (list #:configure-flags
-           #~(list "--with-graphite2"
-                   "--with-gobject"
-                   (string-append "--bindir=" #$output:bin "/bin"))))
-    (synopsis "OpenType text shaping engine")
-    (description
-     "HarfBuzz is an OpenType text shaping engine.")
-    (license (license:x11-style "file://COPYING"
-                                "See 'COPYING' in the distribution."))
-    (home-page "https://www.freedesktop.org/wiki/Software/HarfBuzz/")))
-
 (define-public libdatrie
   (package
     (name "libdatrie")
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index afdec7c775..f69aa637fb 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -5419,7 +5419,7 @@ (define-public musescore
      (list alsa-lib
            freetype
            `(,gtk+ "bin")               ;for gtk-update-icon-cache
-           harfbuzz-meson
+           harfbuzz
            jack-1
            lame
            libogg
-- 
2.46.0

From 8eb6ab38d47f373b6a1b6a7c043b7ea7f8b8f2cf Mon Sep 17 00:00:00 2001
Message-ID: <8eb6ab3[email-masked]>
From: Rovanion Luckey <[email-masked]>
Date: Wed, 1 Jan 2025 20:52:08 +0100
Subject: [PATCH 1/3] gnu: Add harfbuzz-meson.

* gnu/packages/gtk.scm (harfbuzz-meson): New variable.

Temporary package to cover the need of MuseScore to have Harfbuzz built
with Meson in order for it to produce the CMake-files it needs, but
without having to rebuild its 15.000 dependants. Later to be removed
when the main package is switched over to be built with Meson.

Change-Id: I21406452155674a292656142268c40f01902d25d
---
 gnu/packages/gtk.scm | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index ef1391e8ba..984645f847 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -37,6 +37,7 @@
 ;;; Copyright © 2023, 2024 Zheng Junjie <[email-masked]>
 ;;; Copyright © 2023 Janneke Nieuwenhuizen <[email-masked]>
 ;;; Copyright © 2024 John Kehayias <[email-masked]>
+;;; Copyright © 2024, 2025 Rovanion Luckey <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -278,6 +279,45 @@ (define-public cairo-xcb
         #~(cons "-Dxlib-xcb=enabled" #$flags))))
     (synopsis "2D graphics library (with X11 support)")))
 
+(define-public harfbuzz-meson
+  (package
+    (name "harfbuzz")
+    (version "8.3.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/harfbuzz/harfbuzz"
+                                  "/releases/download/" version "/harfbuzz-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "0izq2lpqxrf1l755nxrxkkiarywkx5j43asznankxplbxgm0358h"))))
+    (build-system meson-build-system)
+    (outputs '("out"
+               "bin"))                  ;160K, only hb-view depend on cairo
+    (inputs
+     (list cairo))
+    (propagated-inputs
+     ;; There are all in the Requires or Requires.private field of '.pc'.
+     (list glib graphite2 icu4c))
+    (native-inputs
+     (append (list `(,glib "bin"))      ;for glib-mkenums
+             (if (target-hurd?)
+                 '()
+                 (list gobject-introspection))
+             (list pkg-config
+                   python-wrapper
+                   which)))
+    (arguments
+     (list #:configure-flags
+           #~(list "-Dgraphite2=enabled"
+                   (string-append "--bindir=" #$output:bin "/bin"))))
+    (synopsis "OpenType text shaping engine")
+    (description
+     "HarfBuzz is an OpenType text shaping engine.")
+    (license (license:x11-style "file://COPYING"
+                                "See 'COPYING' in the distribution."))
+    (home-page "https://www.freedesktop.org/wiki/Software/HarfBuzz/")))
+
 (define-public harfbuzz
   (package
     (name "harfbuzz")

base-commit: d43f2386383b1428c3b79e8a1443986a75341ad5
-- 
2.46.0

From 91a4d1d5c5e838e73d669976df38a1f59af023d5 Mon Sep 17 00:00:00 2001
Message-ID: <91a4d1d[email-masked]>
In-Reply-To: <8eb6ab3[email-masked]>
References: <8eb6ab3[email-masked]>
From: Rovanion Luckey <[email-masked]>
Date: Wed, 1 Jan 2025 19:37:57 +0100
Subject: [PATCH 2/3] gnu: musescore: Update to 4.4.4.

* gnu/packages/music.scm (musescore): Update to 4.4.4.

This update was a major one as it upgraded Qt from 5 to 6.

Change-Id: Ib5da630b73889625054f88b1e86af1e9666e6e93
---
 gnu/packages/music.scm | 63 +++++++++++++++++++++++++-----------------
 1 file changed, 37 insertions(+), 26 deletions(-)

diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 6825f14dcc..afdec7c775 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -38,7 +38,7 @@
 ;;; Copyright © 2021 Brendan Tildesley <[email-masked]>
 ;;; Copyright © 2021 Bonface Munyoki Kilyungi <[email-masked]>
 ;;; Copyright © 2021 Frank Pursel <[email-masked]>
-;;; Copyright © 2021 Rovanion Luckey <[email-masked]>
+;;; Copyright © 2021, 2024, 2025 Rovanion Luckey <[email-masked]>
 ;;; Copyright © 2021 Justin Veilleux <[email-masked]>
 ;;; Copyright © 2021, 2022, 2023 Felix Gruber <[email-masked]>
 ;;; Copyright © 2021 Simon Streit <[email-masked]>
@@ -5370,7 +5370,7 @@ (define-public sfizz
 (define-public musescore
   (package
     (name "musescore")
-    (version "4.3.2")
+    (version "4.4.4")
     (source
      (origin
        (method git-fetch)
@@ -5379,21 +5379,31 @@ (define-public musescore
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1hx0l6d7avyfbh88hwn01h9q51mgd9zix91q2kgg1ax73pqxhfs2"))
-       (modules '((guix build utils)))
-       (snippet
-        '(begin
-           ;; Delete precompiled binaries.
-           (delete-file-recursively "src/diagnostics/crashpad_handler")
-           (substitute* "src/diagnostics/CMakeLists.txt"
-             (("install") "#install"))))))
+        (base32 "0cjp1sp50pwmrgvpxjxg849s0vsvk2vcb66ym617nvlj761h0ngz"))
+       (modules '((guix build utils)))))
     (build-system qt-build-system)
     (arguments
-     `(#:configure-flags
-       `("-DDOWNLOAD_SOUNDFONT=OFF"
-         "-DBUILD_DIAGNOSTICS=OFF"
-         "-DMUSESCORE_BUILD_CONFIG=release"
-         "-DUSE_SYSTEM_FREETYPE=ON")
+     `(#:qtbase ,qtbase
+       #:configure-flags
+       `("-DMUSE_APP_BUILD_MODE=release"
+         ;; Disable the build and usage of the `/bin/crashpad_handler` utility -
+         ;; it does automatic crash reporting and is distributed as a
+         ;; pre-compiled binary in the source-tree of MuseScore:
+         ;;  https://github.com/musescore/MuseScore/issues/15571
+         ;; Renamed from MUE_BUILD_CRASHPAD_CLIENT, MUE_BUILD_DIAGNOSTICS_MODULE
+         ;; https://github.com/musescore/MuseScore/commit/6f269e8b072cca36cb76eb016cb60c1c1c2b9906
+         "-DMUSE_MODULE_DIAGNOSTICS_CRASHPAD_CLIENT=OFF"
+         ;; Use Guix' versions of system libraries.
+         "-DMUE_COMPILE_USE_SYSTEM_FREETYPE=ON"
+         "-DMUE_COMPILE_USE_SYSTEM_HARFBUZZ=ON"
+         "-DMUE_COMPILE_USE_SYSTEM_TINYXML=ON"
+         "-DMUE_COMPILE_USE_SYSTEM_OPUSENC=ON" ; Ipmlies -DMUE_COMPILE_USE_SYSTEM_OPUS=ON
+         "-DMUE_COMPILE_USE_SYSTEM_FLAC=ON"
+         ;; Disable download of soundfont during build.
+         "-DDOWNLOAD_SOUNDFONT=OFF"
+         ;; Don't bundle Qt QML files, relevant really only for Darwin.
+         ;; "-DMUE_COMPILE_INSTALL_QTQML_FILES=OFF"
+         )
        ;; There are tests, but no simple target to run.  The command used to
        ;; run them is:
        ;;
@@ -5404,30 +5414,31 @@ (define-public musescore
        ;; So we simply skip them.
        #:tests? #f))
     (native-inputs
-     (list git-minimal pkg-config qttools-5))
+     (list git-minimal pkg-config qttools))
     (inputs
      (list alsa-lib
            freetype
            `(,gtk+ "bin")               ;for gtk-update-icon-cache
+           harfbuzz-meson
            jack-1
            lame
            libogg
+           libopusenc
            libsndfile
            libvorbis
            portaudio
            portmidi
            pulseaudio
            python
-           qtbase-5
-           qtdeclarative-5
-           qtgraphicaleffects
-           qtnetworkauth-5
-           qtquickcontrols-5
-           qtquickcontrols2-5
-           qtscript
-           qtsvg-5
-           qtx11extras
-           qtxmlpatterns))
+           qt5compat
+           qtbase
+           qtdeclarative
+           qtnetworkauth
+           qtscxml
+           qtshadertools
+           qtsvg
+           qtwayland
+           tinyxml2))
     (propagated-inputs
      (list `(,alsa-plugins "pulseaudio"))) ;for libasound_module_conf_pulse.so
     (synopsis "Music composition and notation software")
-- 
2.46.0