bespokesynth: Modernise, 1.2.1 -> 1.3.0 (#367767)

This commit is contained in:
Cosima Neidahl
2025-01-24 10:54:30 +01:00
committed by GitHub
3 changed files with 85 additions and 37 deletions
@@ -0,0 +1,30 @@
diff --git a/libs/JUCE/modules/juce_audio_devices/native/juce_JackAudio_linux.cpp b/libs/JUCE/modules/juce_audio_devices/native/juce_JackAudio_linux.cpp
index 4cce7016f..25554a7cd 100644
--- a/libs/JUCE/modules/juce_audio_devices/native/juce_JackAudio_linux.cpp
+++ b/libs/JUCE/modules/juce_audio_devices/native/juce_JackAudio_linux.cpp
@@ -291,7 +291,6 @@ public:
juce::jack_on_info_shutdown (client, infoShutdownCallback, this);
juce::jack_set_xrun_callback (client, xrunCallback, this);
juce::jack_activate (client);
- deviceIsOpen = true;
if (! inputChannels.isZero())
{
@@ -336,6 +335,7 @@ public:
}
updateActivePorts();
+ deviceIsOpen = true;
return lastError;
}
@@ -525,7 +525,8 @@ private:
static void portConnectCallback (jack_port_id_t, jack_port_id_t, int, void* arg)
{
if (JackAudioIODevice* device = static_cast<JackAudioIODevice*> (arg))
- device->mainThreadDispatcher.updateActivePorts();
+ if (device->isOpen())
+ device->mainThreadDispatcher.updateActivePorts();
}
static void threadInitCallback (void* /* callbackArgument */)
@@ -3,6 +3,8 @@
stdenv,
fetchFromGitHub,
fetchzip,
gitUpdater,
apple-sdk_11,
cmake,
pkg-config,
ninja,
@@ -11,6 +13,7 @@
alsa-lib,
alsa-tools,
freetype,
jsoncpp,
libusb1,
libX11,
libXrandr,
@@ -31,13 +34,6 @@
pcre,
mount,
zenity,
Accelerate,
Cocoa,
WebKit,
CoreServices,
CoreAudioKit,
IOBluetooth,
MetalKit,
# 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
@@ -58,24 +54,47 @@ let
};
in
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "bespokesynth";
version = "1.2.1";
version = "1.3.0";
src = fetchFromGitHub {
owner = "BespokeSynth";
repo = pname;
rev = "v${version}";
hash = "sha256-vDvNm9sW9BfWloB0CA+JHTp/bfDWAP/T0hDXjoMZ3X4=";
repo = "bespokesynth";
rev = "v${finalAttrs.version}";
hash = "sha256-ad8wdLos3jM0gRMpcfRKeaiUxJsPGqWd/7XeDz87ToQ=";
fetchSubmodules = true;
};
patches = [
# Fix compatibility with pipewire's JACK emulation
# https://github.com/BespokeSynth/BespokeSynth/issues/1405#issuecomment-1721437868
./2001-bespokesynth-fix-pipewire-jack.patch
];
# Linux builds are sandboxed properly, this always returns "localhost" there.
# Darwin builds doesn't have the same amount of sandboxing by default, and the builder's hostname is returned.
# In case this ever gets embedded into VersionInfoBld.cpp, hardcode it to the Linux value
postPatch = ''
substituteInPlace Source/cmake/versiontools.cmake \
--replace-fail 'cmake_host_system_information(RESULT BESPOKE_BUILD_FQDN QUERY FQDN)' 'set(BESPOKE_BUILD_FQDN "localhost")'
'';
cmakeBuildType = "Release";
cmakeFlags = lib.optionals enableVST2 [ "-DBESPOKE_VST2_SDK_LOCATION=${vst-sdk}/VST2_SDK" ];
cmakeFlags =
[
(lib.cmakeBool "BESPOKE_SYSTEM_PYBIND11" true)
(lib.cmakeBool "BESPOKE_SYSTEM_JSONCPP" true)
]
++ lib.optionals enableVST2 [
(lib.cmakeFeature "BESPOKE_VST2_SDK_LOCATION" "${vst-sdk}/VST2_SDK")
];
strictDeps = true;
nativeBuildInputs = [
python3
python3 # interpreter
makeWrapper
cmake
pkg-config
@@ -83,7 +102,16 @@ stdenv.mkDerivation rec {
];
buildInputs =
lib.optionals stdenv.hostPlatform.isLinux [
[
jsoncpp
# library & headers
(python3.withPackages (
ps: with ps; [
pybind11
]
))
]
++ lib.optionals stdenv.hostPlatform.isLinux [
# List obtained from https://github.com/BespokeSynth/BespokeSynth/blob/main/azure-pipelines.yml
libX11
libXrandr
@@ -110,25 +138,14 @@ stdenv.mkDerivation rec {
mount
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
Accelerate
Cocoa
WebKit
CoreServices
CoreAudioKit
IOBluetooth
MetalKit
apple-sdk_11
];
env.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/
mv Source/BespokeSynth_artefacts/${finalAttrs.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
@@ -158,24 +175,29 @@ stdenv.mkDerivation rec {
libXScrnSaver
])
}";
dontPatchELF = true; # needed or nix will try to optimize the binary by removing "useless" rpath
meta = with lib; {
passthru.updateScript = gitUpdater {
rev-prefix = "v";
};
meta = {
description = "Software modular synth with controllers support, scripting and VST";
homepage = "https://www.bespokesynth.com/";
license =
with licenses;
with lib.licenses;
[
gpl3Plus
]
++ lib.optional enableVST2 unfree;
maintainers = with maintainers; [
maintainers = with lib.maintainers; [
astro
tobiasBora
OPNA2608
PowerUser64
];
mainProgram = "BespokeSynth";
platforms = platforms.all;
platforms = lib.platforms.all;
};
}
})
-4
View File
@@ -12997,10 +12997,6 @@ with pkgs;
barrier = libsForQt5.callPackage ../applications/misc/barrier { };
bespokesynth = darwin.apple_sdk_11_0.callPackage ../applications/audio/bespokesynth {
inherit (darwin.apple_sdk_11_0.frameworks) Accelerate Cocoa WebKit CoreServices CoreAudioKit IOBluetooth MetalKit;
};
bespokesynth-with-vst2 = bespokesynth.override {
enableVST2 = true;
};