diff --git a/pkgs/applications/audio/musescore/darwin.nix b/pkgs/applications/audio/musescore/darwin.nix deleted file mode 100644 index 652adb03b66a..000000000000 --- a/pkgs/applications/audio/musescore/darwin.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ stdenv, lib, fetchurl, undmg }: - -let - versionComponents = [ "4" "0" "1" ]; - appName = "MuseScore ${builtins.head versionComponents}"; - ref = "230121751"; -in - -stdenv.mkDerivation rec { - pname = "musescore-darwin"; - version = lib.concatStringsSep "." versionComponents; - - # The disk image contains the .app and a symlink to /Applications. - sourceRoot = "${appName}.app"; - - src = fetchurl { - url = "https://github.com/musescore/MuseScore/releases/download/v${version}/MuseScore-${version}.${ref}.dmg"; - hash = "sha256-tkIEV+tCS0SYh2TlC70/zEBUEOSg//EaSKDGA7kH/vo="; - }; - - buildInputs = [ undmg ]; - installPhase = '' - mkdir -p "$out/Applications/${appName}.app" - cp -R . "$out/Applications/${appName}.app" - chmod a+x "$out/Applications/${appName}.app/Contents/MacOS/mscore" - ''; - - meta = with lib; { - description = "Music notation and composition software"; - homepage = "https://musescore.org/"; - license = licenses.gpl3Only; - platforms = platforms.darwin; - maintainers = []; - }; -} diff --git a/pkgs/applications/audio/musescore/default.nix b/pkgs/applications/audio/musescore/default.nix index 15828d25729c..fa166051db61 100644 --- a/pkgs/applications/audio/musescore/default.nix +++ b/pkgs/applications/audio/musescore/default.nix @@ -1,55 +1,143 @@ -{ mkDerivation, lib, fetchFromGitHub, fetchpatch, cmake, pkg-config, ninja -, alsa-lib, freetype, libjack2, lame, libogg, libpulseaudio, libsndfile, libvorbis -, portaudio, portmidi, qtbase, qtdeclarative, qtgraphicaleffects, flac -, qtquickcontrols2, qtscript, qtsvg, qttools -, qtwebengine, qtxmlpatterns, qtnetworkauth, qtx11extras +{ stdenv +, lib +, fetchFromGitHub +, fetchpatch +, cmake +, wrapQtAppsHook +, pkg-config +, ninja +, alsa-lib +, freetype +, libjack2 +, lame +, libogg +, libpulseaudio +, libsndfile +, libvorbis +, portaudio +, portmidi +, qtbase +, qtdeclarative +, qtgraphicaleffects +, flac +, qtquickcontrols +, qtquickcontrols2 +, qtscript +, qtsvg +, qtxmlpatterns +, qtnetworkauth +, qtx11extras , nixosTests +, darwin }: -mkDerivation rec { +let + stdenv' = if stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv; + # portaudio propagates Darwin frameworks. Rebuild it using the 11.0 stdenv + # from Qt and the 11.0 SDK frameworks. + portaudio' = if stdenv.isDarwin then portaudio.override { + stdenv = stdenv'; + inherit (darwin.apple_sdk_11_0.frameworks) + AudioUnit + AudioToolbox + CoreAudio + CoreServices + Carbon + ; + } else portaudio; +in stdenv'.mkDerivation rec { pname = "musescore"; - version = "4.0.2"; + version = "4.1.0"; src = fetchFromGitHub { owner = "musescore"; repo = "MuseScore"; rev = "v${version}"; - sha256 = "sha256-3NSHUdTyAC/WOhkB6yBrqtV3LV4Hl1m3poB3ojtJMfs="; + sha256 = "sha256-CqW1f0VsF2lW79L3FY2ev+6FoHLbYOJ9LWHeBlWegeU="; }; patches = [ - # See https://github.com/musescore/MuseScore/issues/15571 + # Upstream from some reason wants to install qml files from qtbase in + # installPhase, this patch removes this behavior. See: + # https://github.com/musescore/MuseScore/issues/18665 (fetchpatch { - url = "https://github.com/musescore/MuseScore/commit/365be5dfb7296ebee4677cb74b67c1721bc2cf7b.patch"; - hash = "sha256-tJ2M21i3geO9OsjUQKNatSXTkJ5U9qMT4RLNdJnyoKw="; + url = "https://github.com/doronbehar/MuseScore/commit/f48448a3ede46f5a7ef470940072fbfb6742487c.patch"; + hash = "sha256-UEc7auscnW0KMfWkLKQtm+UstuTNsuFeoNJYIidIlwM="; }) ]; cmakeFlags = [ - "-DMUSESCORE_BUILD_CONFIG=release" - # Disable the _usage_ of the `/bin/crashpad_handler` utility. See: - # https://github.com/musescore/MuseScore/pull/15577 - "-DBUILD_CRASHPAD_CLIENT=OFF" + "-DMUSESCORE_BUILD_MODE=release" + # Disable the build and usage of the `/bin/crashpad_handler` utility - it's + # not useful on NixOS, see: + # https://github.com/musescore/MuseScore/issues/15571 + "-DMUE_BUILD_CRASHPAD_CLIENT=OFF" # Use our freetype "-DUSE_SYSTEM_FREETYPE=ON" + # From some reason, in $src/build/cmake/SetupBuildEnvironment.cmake, + # upstream defaults to compiling to x86_64 only, unless this cmake flag is + # set + "-DMUE_COMPILE_BUILD_MACOS_APPLE_SILICON=ON" + # Don't bundle qt qml files, relevant really only for darwin, but we set + # this for all platforms anyway. + "-DMUE_COMPILE_INSTALL_QTQML_FILES=OFF" ]; qtWrapperArgs = [ # MuseScore JACK backend loads libjack at runtime. - "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libjack2 ]}" + "--prefix ${lib.optionalString stdenv.isDarwin "DY"}LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libjack2 ]}" + ] ++ lib.optionals (!stdenv.isDarwin) [ # There are some issues with using the wayland backend, see: # https://musescore.org/en/node/321936 "--set-default QT_QPA_PLATFORM xcb" ]; - nativeBuildInputs = [ cmake pkg-config ninja ]; + # HACK `propagatedSandboxProfile` does not appear to actually propagate the + # sandbox profile from `qtbase`, see: + # https://github.com/NixOS/nixpkgs/issues/237458 + sandboxProfile = toString qtbase.__propagatedSandboxProfile or null; + + nativeBuildInputs = [ + wrapQtAppsHook + cmake + pkg-config + ninja + ]; buildInputs = [ - alsa-lib libjack2 freetype lame libogg libpulseaudio libsndfile libvorbis - portaudio portmidi flac # tesseract - qtbase qtdeclarative qtgraphicaleffects qtquickcontrols2 - qtscript qtsvg qttools qtwebengine qtxmlpatterns qtnetworkauth qtx11extras + libjack2 + freetype + lame + libogg + libpulseaudio + libsndfile + libvorbis + portaudio' + portmidi + flac + qtbase + qtdeclarative + qtgraphicaleffects + qtquickcontrols + qtquickcontrols2 + qtscript + qtsvg + qtxmlpatterns + qtnetworkauth + qtx11extras + ] ++ lib.optionals stdenv.isLinux [ + alsa-lib ]; + postInstall = '' + # Remove unneeded bundled libraries and headers + rm -r $out/{include,lib} + '' + lib.optionalString stdenv.isDarwin '' + mkdir -p "$out/Applications" + mv "$out/mscore.app" "$out/Applications/mscore.app" + mkdir -p $out/bin + ln -s $out/Applications/mscore.app/Contents/MacOS/mscore $out/bin/mscore. + ''; + passthru.tests = nixosTests.musescore; meta = with lib; { @@ -57,9 +145,9 @@ mkDerivation rec { homepage = "https://musescore.org/"; license = licenses.gpl3Only; maintainers = with maintainers; [ vandenoever turion doronbehar ]; - # Darwin requires CoreMIDI from SDK 11.3, we use the upstream built .dmg - # file in ./darwin.nix in the meantime. - platforms = platforms.linux; + # on aarch64-linux: + # error: cannot convert '' to 'float32x4_t' in assignment + broken = (stdenv.isLinux && stdenv.isAarch64); mainProgram = "mscore"; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9646ec6e0311..39f4d3a3aa04 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -33441,12 +33441,7 @@ with pkgs; autoreconfHook = buildPackages.autoreconfHook269; }; - # TODO: we should probably merge these 2 - musescore = - if stdenv.isDarwin then - callPackage ../applications/audio/musescore/darwin.nix { } - else - libsForQt5.callPackage ../applications/audio/musescore { }; + musescore = libsForQt5.callPackage ../applications/audio/musescore { }; music-player = callPackage ../applications/audio/music-player { };