diff options
author | Tobias Bora <tobias.bora@gmail.com> | 2022-01-18 19:30:50 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-18 19:30:50 +0100 |
commit | d3a146c2ec9c1dae66d11d1cd45052e5a9fde9c5 (patch) | |
tree | d720316f224de05c4f7982bff58f3fd79eeab726 /pkgs/applications/audio/bespokesynth | |
parent | 222f62ed88f67a1c9a7854b7e95bd9a5fe67b7ca (diff) |
bespokesynth: 1.0 -> 1.1.0. Fixing issues with file loading (#144708)
Co-authored-by: OPNA2608 <christoph.neidahl@gmail.com>
Diffstat (limited to 'pkgs/applications/audio/bespokesynth')
-rw-r--r-- | pkgs/applications/audio/bespokesynth/default.nix | 198 |
1 files changed, 113 insertions, 85 deletions
diff --git a/pkgs/applications/audio/bespokesynth/default.nix b/pkgs/applications/audio/bespokesynth/default.nix index e8d2ada38783..a5ef585969e6 100644 --- a/pkgs/applications/audio/bespokesynth/default.nix +++ b/pkgs/applications/audio/bespokesynth/default.nix @@ -1,40 +1,46 @@ -{ lib, stdenv, fetchFromGitHub, pkg-config, fetchzip -, libjack2, alsa-lib, freetype, libX11, libXrandr, libXinerama, libXext, libXcursor -, libGL, python3, ncurses, libusb1 -, gtk3, webkitgtk, curl, xvfb-run, makeWrapper - # "Debug", or "Release" -, buildType ? "Release" +{ lib +, stdenv +, fetchFromGitHub +, fetchzip +, cmake +, pkg-config +, ninja +, makeWrapper +, libjack2 +, alsa-lib +, alsa-tools +, freetype +, libusb1 +, libX11 +, libXrandr +, libXinerama +, libXext +, libXcursor +, libXScrnSaver +, libGL +, libxcb +, xcbutil +, libxkbcommon +, xcbutilkeysyms +, xcb-util-cursor +, gtk3 +, webkitgtk +, python3 +, curl +, pcre +, mount +, gnome +, Cocoa +, WebKit +, CoreServices +, CoreAudioKit + # It is not allowed to distribute binaries with the VST2 SDK plugin without a license + # (the author of Bespoke has such a licence but not Nix). VST3 should work out of the box. + # Read more in https://github.com/NixOS/nixpkgs/issues/145607 +, enableVST2 ? false }: let - projucer = stdenv.mkDerivation rec { - pname = "projucer"; - version = "5.4.7"; - - src = fetchFromGitHub { - owner = "juce-framework"; - repo = "JUCE"; - rev = version; - sha256= "0qpiqfwwpcghk7ij6w4vy9ywr3ryg7ppg77bmd7783kxg6zbhj8h"; - }; - - nativeBuildInputs = [ pkg-config ]; - buildInputs = [ - freetype libX11 libXrandr libXinerama libXext gtk3 webkitgtk - libjack2 curl - ]; - preBuild = '' - cd extras/Projucer/Builds/LinuxMakefile - ''; - makeFlags = [ "CONFIG=${buildType}" ]; - enableParallelBuilding = true; - - installPhase = '' - mkdir -p $out/bin - cp -a build/Projucer $out/bin/Projucer - ''; - }; - # equal to vst-sdk in ../oxefmsynth/default.nix vst-sdk = stdenv.mkDerivation rec { name = "vstsdk3610_11_06_2018_build_37"; @@ -50,70 +56,92 @@ let in stdenv.mkDerivation rec { pname = "bespokesynth"; - version = "1.0.0"; + version = "1.1.0"; src = fetchFromGitHub { - owner = "awwbees"; + owner = "BespokeSynth"; repo = pname; rev = "v${version}"; - sha256 = "04b2m40jszphslkd4850jcb8qwls392lwy3lc6vlj01h4izvapqk"; + sha256 = "sha256-PN0Q6/gI1PeMaF/8EZFGJdLR8JVHQZfWunAhOIQxkHw="; + fetchSubmodules = true; }; - configurePhase = '' - runHook preConfigure - - export HOME=$(mktemp -d) - xvfb-run sh -e <<EOF - ${projucer}/bin/Projucer --set-global-search-path linux defaultJuceModulePath ${projucer.src}/modules - ${projucer}/bin/Projucer --resave BespokeSynth.jucer - EOF - - runHook postConfigure - ''; - CFLAGS = "-I${vst-sdk}/VST2_SDK"; - - nativeBuildInputs = [ xvfb-run pkg-config python3 makeWrapper ]; - - buildInputs = [ - libX11 libXrandr libXinerama libXext libXcursor freetype libGL - ncurses libusb1 - alsa-lib libjack2 + cmakeBuildType = "Release"; + + cmakeFlags = lib.optionals enableVST2 [ "-DBESPOKE_VST2_SDK_LOCATION=${vst-sdk}/VST2_SDK" ]; + + nativeBuildInputs = [ python3 makeWrapper cmake pkg-config ninja ]; + + buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ + # List obtained in https://github.com/BespokeSynth/BespokeSynth/blob/main/azure-pipelines.yml + libX11 + libXrandr + libXinerama + libXext + libXcursor + libXScrnSaver + curl + gtk3 + webkitgtk + freetype + libGL + libusb1 + alsa-lib + libjack2 + gnome.zenity + alsa-tools + libxcb + xcbutil + libxkbcommon + xcbutilkeysyms + xcb-util-cursor + pcre + mount + ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ + Cocoa + WebKit + CoreServices + CoreAudioKit ]; - preBuild = '' - cd Builds/LinuxMakefile - ''; - makeFlags = [ "CONFIG=${buildType}" ]; - enableParallelBuilding = true; - - installPhase = '' - runHook preInstall - - mkdir -p $out/bin $out/share/bespokesynth $out/share/applications $out/share/icons/hicolor/512x512/apps - cp build/BespokeSynth $out/bin/ - cp -ar ../MacOSX/build/Release/resource $out/share/bespokesynth/ - wrapProgram $out/bin/BespokeSynth \ - --run "cd $out/share/bespokesynth" - - mkdir -p $out/share/applications/ $out/share/icons/hicolor/512x512/apps/ - cp ../../bespoke_icon.png $out/share/icons/hicolor/512x512/apps/ - substitute ../../BespokeSynth.desktop $out/share/applications/BespokseSynth.desktop \ - --replace "/usr/bin/" "" - - runHook postInstall - ''; + NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin (toString [ + # Fails to find fp.h on its own + "-isystem ${CoreServices}/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks/CarbonCore.framework/Versions/Current/Headers/" + ]); + + postInstall = + if stdenv.hostPlatform.isDarwin then '' + mkdir -p $out/{Applications,bin} + mv Source/BespokeSynth_artefacts/${cmakeBuildType}/BespokeSynth.app $out/Applications/ + # Symlinking confuses the resource finding about the actual location of the binary + # Resources are looked up relative to the executed file's location + makeWrapper $out/{Applications/BespokeSynth.app/Contents/MacOS,bin}/BespokeSynth + '' else '' + # Ensure zenity is available, or it won't be able to open new files. + # Ensure the python used for compilation is the same as the python used at run-time. + # jedi is also required for auto-completion. + # These X11 libs get dlopen'd, they cause visual bugs when unavailable. + wrapProgram $out/bin/BespokeSynth \ + --prefix PATH : '${lib.makeBinPath [ + gnome.zenity + (python3.withPackages (ps: with ps; [ jedi ])) + ]}' \ + --prefix LD_LIBRARY_PATH : '${lib.makeLibraryPath [ + libXrandr + libXinerama + libXcursor + libXScrnSaver + ]}' + ''; meta = with lib; { - description = "Software modular synth with controllers support, scripting and VST"; + description = + "Software modular synth with controllers support, scripting and VST"; homepage = "https://github.com/awwbees/BespokeSynth"; license = with licenses; [ gpl3Plus - - # This package is unfree and not distributable due to the license of VST2. - # see #145607 - unfree - ]; - maintainers = with maintainers; [ astro ]; + ] ++ lib.optional enableVST2 unfree; + maintainers = with maintainers; [ astro tobiasBora OPNA2608 ]; platforms = platforms.all; }; } |