Merge pull request #185159 from kira-bruneau/zynaddsubfx

zynaddsubfx: 3.0.5 → 3.0.6
This commit is contained in:
Kira Bruneau 2022-08-15 12:04:07 -04:00 committed by GitHub
commit 334ffa5d97
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 91 additions and 219 deletions

View File

@ -0,0 +1,6 @@
<svg viewBox="64 60 33 33" xmlns="http://www.w3.org/2000/svg">
<polygon points="97 64 64 61 67.3 63.3 64 63 87 79 97 66 95.6 65.9" fill="#2E3239"/>
<polygon points="97 90 74 74 64 87 65.4 87.1 64 89 97 92 93.7 89.7" fill="#2E3239"/>
<polygon points="64 62 97 65 87 78" fill="#50C3C7"/>
<polygon points="97 91 64 88 74 75" fill="#57C1A6"/>
</svg>

After

Width:  |  Height:  |  Size: 354 B

View File

@ -15,7 +15,7 @@
, zlib
# Optional dependencies
, alsaSupport ? true
, alsaSupport ? stdenv.isLinux
, alsa-lib
, dssiSupport ? false
, dssi
@ -27,11 +27,13 @@
, ossSupport ? true
, portaudioSupport ? true
, portaudio
, sndioSupport ? stdenv.isOpenBSD
, sndio
# Optional GUI dependencies
, guiModule ? "off"
, cairo
, fltk13
, fltk
, libGL
, libjpeg
, libX11
@ -40,6 +42,7 @@
# Test dependencies
, cxxtest
, ruby
}:
assert builtins.any (g: guiModule == g) [ "fltk" "ntk" "zest" "off" ];
@ -50,20 +53,24 @@ let
"ntk" = "NTK";
"zest" = "Zyn-Fusion";
}.${guiModule};
mruby-zest = callPackage ./mruby-zest { };
in stdenv.mkDerivation rec {
pname = "zynaddsubfx";
version = "3.0.5";
version = "3.0.6";
src = fetchFromGitHub {
owner = pname;
repo = pname;
rev = version;
sha256 = "1vh1gszgjxwn8m32rk5222z1j2cnjax0bqpag7b47v6i36p2q4x8";
rev = "refs/tags/${version}";
fetchSubmodules = true;
sha256 = "sha256-0siAx141DZx39facXWmKbsi0rHBNpobApTdey07EcXg=";
};
outputs = [ "out" "doc" ];
postPatch = ''
patchShebangs rtosc/test/test-port-checker.rb src/Tests/check-ports.rb
substituteInPlace src/Misc/Config.cpp --replace /usr $out
'';
@ -75,7 +82,8 @@ in stdenv.mkDerivation rec {
++ lib.optionals jackSupport [ libjack2 ]
++ lib.optionals lashSupport [ lash ]
++ lib.optionals portaudioSupport [ portaudio ]
++ lib.optionals (guiModule == "fltk") [ fltk13 libjpeg libXpm ]
++ lib.optionals sndioSupport [ sndio ]
++ lib.optionals (guiModule == "fltk") [ fltk libjpeg libXpm ]
++ lib.optionals (guiModule == "ntk") [ ntk cairo libXpm ]
++ lib.optionals (guiModule == "zest") [ libGL libX11 ];
@ -87,29 +95,39 @@ in stdenv.mkDerivation rec {
++ lib.optional (guiModule == "fltk") "-DFLTK_SKIP_OPENGL=ON";
doCheck = true;
checkInputs = [ cxxtest ];
checkInputs = [ cxxtest ruby ];
# TODO: Update cmake hook to make it simpler to selectively disable cmake tests: #113829
checkPhase = let
# Tests fail on aarch64
disabledTests = lib.optionals stdenv.isAarch64 [
"MessageTest"
"UnisonTest"
];
disabledTests =
# PortChecker test fails when lashSupport is enabled because
# zynaddsubfx takes to long to start trying to connect to lash
lib.optionals lashSupport [ "PortChecker" ]
# Tests fail on aarch64
++ lib.optionals stdenv.isAarch64 [ "MessageTest" "UnisonTest" ];
in ''
runHook preCheck
ctest --output-on-failure -E '^${lib.concatStringsSep "|" disabledTests}$'
runHook postCheck
'';
# Use Zyn-Fusion logo for zest build
# An SVG version of the logo isn't hosted anywhere we can fetch, I
# had to manually derive it from the code that draws it in-app:
# https://github.com/mruby-zest/mruby-zest-build/blob/3.0.6/src/mruby-zest/example/ZynLogo.qml#L65-L97
postInstall = lib.optionalString (guiModule == "zest") ''
rm -r "$out/share/pixmaps"
mkdir -p "$out/share/icons/hicolor/scalable/apps"
cp ${./ZynLogo.svg} "$out/share/icons/hicolor/scalable/apps/zynaddsubfx.svg"
'';
# When building with zest GUI, patch plugins
# and standalone executable to properly locate zest
postFixup = lib.optionalString (guiModule == "zest") ''
patchelf --set-rpath "${mruby-zest}:$(patchelf --print-rpath "$out/lib/lv2/ZynAddSubFX.lv2/ZynAddSubFX_ui.so")" \
"$out/lib/lv2/ZynAddSubFX.lv2/ZynAddSubFX_ui.so"
patchelf --set-rpath "${mruby-zest}:$(patchelf --print-rpath "$out/lib/vst/ZynAddSubFX.so")" \
"$out/lib/vst/ZynAddSubFX.so"
for lib in "$out/lib/lv2/ZynAddSubFX.lv2/ZynAddSubFX_ui.so" "$out/lib/vst/ZynAddSubFX.so"; do
patchelf --set-rpath "${mruby-zest}:$(patchelf --print-rpath "$lib")" "$lib"
done
wrapProgram "$out/bin/zynaddsubfx" \
--prefix PATH : ${mruby-zest} \
@ -123,8 +141,15 @@ in stdenv.mkDerivation rec {
then "https://zynaddsubfx.sourceforge.io/zyn-fusion.html"
else "https://zynaddsubfx.sourceforge.io";
license = licenses.gpl2;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ goibhniu kira-bruneau ];
platforms = platforms.linux;
platforms = platforms.all;
# On macOS:
# - Tests don't compile (ld: unknown option: --no-as-needed)
# - ZynAddSubFX LV2 & VST plugin fail to compile (not setup to use ObjC version of pugl)
# - TTL generation crashes (`pointer being freed was not allocated`) for all VST plugins using AbstractFX
# - Zest UI fails to start on pulg_setup: Could not open display, aborting.
broken = stdenv.isDarwin;
};
}

View File

@ -1,9 +1,8 @@
{ lib, stdenv
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, bison
, git
, python2
, pkg-config
, rake
, ruby
, libGL
@ -11,87 +10,42 @@
, libX11
}:
let
mgem-list = fetchFromGitHub {
owner = "mruby";
repo = "mgem-list";
rev = "2033837203c8a141b1f9d23bb781fe0cbaefbd24";
sha256 = "0igf2nsx5i6g0yf7sjxxkngyriv213d0sjs3yidrflrabiywpxmm";
};
mruby-dir = fetchFromGitHub {
owner = "iij";
repo = "mruby-dir";
rev = "89dceefa1250fb1ae868d4cb52498e9e24293cd1";
sha256 = "0zrhiy9wmwmc9ls62iyb2z86j2ijqfn7rn4xfmrbrfxygczarsm9";
};
mruby-errno = fetchFromGitHub {
owner = "iij";
repo = "mruby-errno";
rev = "b4415207ff6ea62360619c89a1cff83259dc4db0";
sha256 = "12djcwjjw0fygai5kssxbfs3pzh3cpnq07h9m2h5b51jziw380xj";
};
mruby-file-stat = fetchFromGitHub {
owner = "ksss";
repo = "mruby-file-stat";
rev = "aa474589f065c71d9e39ab8ba976f3bea6f9aac2";
sha256 = "1clarmr67z133ivkbwla1a42wcjgj638j9w0mlv5n21mhim9rid5";
};
mruby-process = fetchFromGitHub {
owner = "iij";
repo = "mruby-process";
rev = "fe171fbe2a6cc3c2cf7d713641bddde71024f7c8";
sha256 = "00yrzc371f90gl5m1gbkw0qq8c394bpifssjr8p1wh5fmzhxqyml";
};
mruby-pack = fetchFromGitHub {
owner = "iij";
repo = "mruby-pack";
rev = "383a9c79e191d524a9a2b4107cc5043ecbf6190b";
sha256 = "003glxgxifk4ixl12sy4gn9bhwvgb79b4wga549ic79isgv81w2d";
};
in
stdenv.mkDerivation rec {
pname = "mruby-zest";
version = "3.0.5";
version = "3.0.6";
src = fetchFromGitHub {
owner = pname;
repo = "${pname}-build";
rev = version;
sha256 = "0fxljrgamgz2rm85mclixs00b0f2yf109jc369039n1vf0l5m57d";
rev = "refs/tags/${version}";
fetchSubmodules = true;
sha256 = "sha256-rIb6tQimwrUj+623IU5zDyKNWsNYYBElLQClOsP+5Dc=";
};
nativeBuildInputs = [ bison git python2 rake ruby ];
buildInputs = [ libGL libuv libX11 ];
patches = [
./force-gcc-as-linker.patch
./system-libuv.patch
# Pull upstream fix for -fno-common toolchains:
# https://github.com/mruby-zest/mruby-zest-build/issues/25
(fetchpatch {
name = "fno-common.patch";
url = "https://github.com/mruby-zest/mruby-zest-build/commit/4eb88250f22ee684acac95d4d1f114df504e37a7.patch";
sha256 = "0wg7qy1vg0mzcxagf35bv35dlr0q17pxjicigpf86yqppvgrzrsb";
})
./force-cxx-as-linker.patch
];
# Add missing dependencies of deps/mruby-dir-glob/mrbgem.rake
# Should be fixed in next release, see bcadb0a5490bd6d599f1a0e66ce09b46363c9dae
postPatch = ''
mkdir -p mruby/build/mrbgems
ln -s ${mgem-list} mruby/build/mrbgems/mgem-list
ln -s ${mruby-dir} mruby/build/mrbgems/mruby-dir
ln -s ${mruby-errno} mruby/build/mrbgems/mruby-errno
ln -s ${mruby-file-stat} mruby/build/mrbgems/mruby-file-stat
ln -s ${mruby-process} mruby/build/mrbgems/mruby-process
ln -s ${mruby-pack} mruby/build/mrbgems/mruby-pack
nativeBuildInputs = [
bison
pkg-config
rake
ruby
];
buildInputs = [
libGL
libuv
libX11
];
# Force optimization to fix:
# warning: #warning _FORTIFY_SOURCE requires compiling with optimization (-O)
NIX_CFLAGS_COMPILE = "-O3";
# Remove pre-built y.tab.c to generate with nixpkgs bison
preBuild = ''
rm mruby/mrbgems/mruby-compiler/core/y.tab.c
'';
installTargets = [ "pack" ];
@ -102,8 +56,8 @@ stdenv.mkDerivation rec {
# mruby-widget-lib/src/api.c requires MainWindow.qml as part of a
# sanity check, even though qml files are compiled into the binary
# https://github.com/mruby-zest/mruby-zest-build/tree/3.0.5/src/mruby-widget-lib/src/api.c#L99-L116
# https://github.com/mruby-zest/mruby-zest-build/tree/3.0.5/linux-pack.sh#L17-L18
# https://github.com/mruby-zest/mruby-zest-build/blob/3.0.6/src/mruby-widget-lib/src/api.c#L107-L124
# https://github.com/mruby-zest/mruby-zest-build/blob/3.0.6/linux-pack.sh#L17-L18
mkdir -p "$out/qml"
touch "$out/qml/MainWindow.qml"
'';
@ -111,7 +65,7 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "The Zest Framework used in ZynAddSubFX's UI";
homepage = "https://github.com/mruby-zest";
license = licenses.lgpl21;
license = licenses.lgpl21Plus;
maintainers = with maintainers; [ kira-bruneau ];
platforms = platforms.all;
};

View File

@ -1,13 +1,13 @@
diff --git a/mruby/tasks/toolchains/gcc.rake b/mruby/tasks/toolchains/gcc.rake
index f370c0ab..e5ab9f60 100644
index 51bda6517..9bc96d0e2 100644
--- a/mruby/tasks/toolchains/gcc.rake
+++ b/mruby/tasks/toolchains/gcc.rake
@@ -22,7 +22,7 @@ MRuby::Toolchain.new(:gcc) do |conf, _params|
@@ -23,7 +23,7 @@ MRuby::Toolchain.new(:gcc) do |conf, params|
end
conf.linker do |linker|
- linker.command = ENV['LD'] || 'gcc'
+ linker.command = 'gcc'
- linker.command = ENV['LD'] || ENV['CXX'] || ENV['CC'] || default_command
+ linker.command = ENV['CXX'] || ENV['CC'] || default_command
linker.flags = [ENV['LDFLAGS'] || %w()]
linker.libraries = %w(m)
linker.library_paths = []

View File

@ -1,113 +0,0 @@
diff --git a/Makefile b/Makefile
index f3e3be2..2398852 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,3 @@
-UV_DIR = libuv-v1.9.1
-UV_FILE = $(UV_DIR).tar.gz
-UV_URL = http://dist.libuv.org/dist/v1.9.1/$(UV_FILE)
-
-
all:
ruby ./rebuild-fcache.rb
cd deps/nanovg/src && $(CC) nanovg.c -c -fPIC
@@ -10,12 +5,12 @@ all:
# cd deps/pugl && python2 ./waf configure --no-cairo --static
cd deps/pugl && python2 ./waf configure --no-cairo --static --debug
cd deps/pugl && python2 ./waf
- cd src/osc-bridge && CFLAGS="-I ../../deps/$(UV_DIR)/include " make lib
+ cd src/osc-bridge && make lib
cd mruby && MRUBY_CONFIG=../build_config.rb rake
$(CC) -shared -o libzest.so `find mruby/build/host -type f | grep -e "\.o$$" | grep -v bin` ./deps/libnanovg.a \
./deps/libnanovg.a \
src/osc-bridge/libosc-bridge.a \
- ./deps/$(UV_DIR)/.libs/libuv.a -lm -lX11 -lGL -lpthread
+ -luv -lm -lX11 -lGL -lpthread
$(CC) test-libversion.c deps/pugl/build/libpugl-0.a -ldl -o zest -lX11 -lGL -lpthread -I deps/pugl -std=gnu99
osx:
@@ -25,12 +20,12 @@ osx:
cd deps/pugl && python2 ./waf configure --no-cairo --static
# cd deps/pugl && python2 ./waf configure --no-cairo --static --debug
cd deps/pugl && python2 ./waf
- cd src/osc-bridge && CFLAGS="-I ../../deps/$(UV_DIR)/include " make lib
+ cd src/osc-bridge && make lib
cd mruby && MRUBY_CONFIG=../build_config.rb rake
$(CC) -shared -o libzest.so `find mruby/build/host -type f | grep -e "\.o$$" | grep -v bin` ./deps/libnanovg.a \
./deps/libnanovg.a \
src/osc-bridge/libosc-bridge.a \
- ./deps/$(UV_DIR)/.libs/libuv.a -lm -framework OpenGL -lpthread
+ -luv -lm -framework OpenGL -lpthread
$(CC) test-libversion.c deps/pugl/build/libpugl-0.a -ldl -o zest -framework OpenGL -framework AppKit -lpthread -I deps/pugl -std=gnu99
windows:
@@ -38,38 +33,14 @@ windows:
$(AR) rc deps/libnanovg.a deps/nanovg/src/*.o
cd deps/pugl && CFLAGS="-mstackrealign" python2 ./waf configure --no-cairo --static --target=win32
cd deps/pugl && python2 ./waf
- cd src/osc-bridge && CFLAGS="-mstackrealign -I ../../deps/$(UV_DIR)/include " make lib
+ cd src/osc-bridge && CFLAGS="-mstackrealign" make lib
cd mruby && WINDOWS=1 MRUBY_CONFIG=../build_config.rb rake
$(CC) -mstackrealign -shared -o libzest.dll -static-libgcc `find mruby/build/w64 -type f | grep -e "\.o$$" | grep -v bin` \
./deps/libnanovg.a \
src/osc-bridge/libosc-bridge.a \
- ./deps/libuv-win.a \
- -lm -lpthread -lws2_32 -lkernel32 -lpsapi -luserenv -liphlpapi -lglu32 -lgdi32 -lopengl32
+ -luv -lm -lpthread -lws2_32 -lkernel32 -lpsapi -luserenv -liphlpapi -lglu32 -lgdi32 -lopengl32
$(CC) -mstackrealign -DWIN32 test-libversion.c deps/pugl/build/libpugl-0.a -o zest.exe -lpthread -I deps/pugl -std=c99 -lws2_32 -lkernel32 -lpsapi -luserenv -liphlpapi -lglu32 -lgdi32 -lopengl32
-
-builddep: deps/libuv.a
-deps/libuv.a:
- cd deps/$(UV_DIR) && ./autogen.sh
- cd deps/$(UV_DIR) && CFLAGS=-fPIC ./configure
- cd deps/$(UV_DIR) && CFLAGS=-fPIC make
- cp deps/$(UV_DIR)/.libs/libuv.a deps/
-
-builddepwin: deps/libuv-win.a
-deps/libuv-win.a:
- cd deps/$(UV_DIR) && ./autogen.sh
- cd deps/$(UV_DIR) && CFLAGS="-mstackrealign" ./configure --host=x86_64-w64-mingw32
- cd deps/$(UV_DIR) && LD=x86_64-w64-mingw32-gcc make
- cp deps/$(UV_DIR)/.libs/libuv.a deps/libuv-win.a
-
-deps/$(UV_DIR):
- cd deps && wget -4 $(UV_URL) && tar xvf $(UV_FILE)
-setup: deps/$(UV_DIR)
-
-setupwin:
- cd deps && wget -4 $(UV_URL)
- cd deps && tar xvf $(UV_FILE)
-
push:
cd src/osc-bridge && git push
cd src/mruby-qml-parse && git push
diff --git a/build_config.rb b/build_config.rb
index 00f1f69..11ac15b 100644
--- a/build_config.rb
+++ b/build_config.rb
@@ -96,7 +96,6 @@ build_type.new(build_name) do |conf|
conf.cc do |cc|
cc.include_paths << "#{`pwd`.strip}/../deps/nanovg/src"
cc.include_paths << "#{`pwd`.strip}/../deps/pugl/"
- cc.include_paths << "#{`pwd`.strip}/../deps/libuv-v1.9.1/include/"
cc.include_paths << "/usr/share/mingw-w64/include/" if windows
cc.include_paths << "/usr/x86_64-w64-mingw32/include/" if windows
cc.flags << "-DLDBL_EPSILON=1e-6" if windows
@@ -117,14 +116,14 @@ build_type.new(build_name) do |conf|
linker.flags_after_libraries << "#{`pwd`.strip}/../deps/pugl/build/libpugl-0.a"
linker.flags_after_libraries << "#{`pwd`.strip}/../deps/libnanovg.a"
if(!windows)
- linker.flags_after_libraries << "#{`pwd`.strip}/../deps/libuv.a"
+ linker.flags_after_libraries << "-luv"
if(ENV['OS'] != "Mac")
linker.libraries << 'GL'
linker.libraries << 'X11'
end
linker.flags_after_libraries << "-lpthread -ldl -lm"
else
- linker.flags_after_libraries << "#{`pwd`.strip}/../deps/libuv-win.a"
+ linker.flags_after_libraries << "-luv"
linker.flags_after_libraries << "-lws2_32 -lkernel32 -lpsapi -luserenv -liphlpapi"
linker.flags_after_libraries << "-lglu32 -lgdi32 -lopengl32"
end

View File

@ -1648,6 +1648,7 @@ mapAliases ({
torchat = throw "torchat was removed because it was broken and requires Python 2"; # added 2022-06-05
ttyrec = ovh-ttyrec; # Added 2021-01-02
zplugin = zinit; # Added 2021-01-30
zyn-fusion = zynaddsubfx; # Added 2022-08-05
inherit (stdenv.hostPlatform) system; # Added 2021-10-22

View File

@ -31953,20 +31953,19 @@ with pkgs;
inherit (nodePackages) zx;
zynaddsubfx = zyn-fusion;
zynaddsubfx = callPackage ../applications/audio/zynaddsubfx {
guiModule = "zest";
fftw = fftwSinglePrec;
};
zynaddsubfx-fltk = callPackage ../applications/audio/zynaddsubfx {
zynaddsubfx-fltk = zynaddsubfx.override {
guiModule = "fltk";
};
zynaddsubfx-ntk = callPackage ../applications/audio/zynaddsubfx {
zynaddsubfx-ntk = zynaddsubfx.override {
guiModule = "ntk";
};
zyn-fusion = callPackage ../applications/audio/zynaddsubfx {
guiModule = "zest";
};
### BLOCKCHAINS / CRYPTOCURRENCIES / WALLETS
aeon = callPackage ../applications/blockchains/aeon {