Merge pull request #243298 from doronbehar/pkg/musescore

musescore: 4.0.2 -> 4.1.0
This commit is contained in:
Pol Dellaiera 2023-07-18 17:37:38 +02:00 committed by GitHub
commit 446b09fd3d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 113 additions and 65 deletions

View file

@ -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 = [];
};
}

View file

@ -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 '<brace-enclosed initializer list>' to 'float32x4_t' in assignment
broken = (stdenv.isLinux && stdenv.isAarch64);
mainProgram = "mscore";
};
}

View file

@ -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 { };