commit 50579e9fc1b0bffbdb9e69265cd2851ad655611b
parent 37eb4c0832b34afa3664f91f1605a57b47430c2e
Author: falkTX <falktx@falktx.com>
Date: Sat, 18 Sep 2021 14:14:47 +0100
Start validating/testing plugins
Signed-off-by: falkTX <falktx@falktx.com>
Diffstat:
2 files changed, 125 insertions(+), 0 deletions(-)
diff --git a/.github/workflows/example-plugins.yml b/.github/workflows/example-plugins.yml
@@ -235,3 +235,88 @@ jobs:
bin/*
!bin/*-ladspa.dll
!bin/*-dssi.dll
+
+ plugin-validation:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ submodules: recursive
+ - name: Set up dependencies
+ run: |
+ # custom repos
+ wget https://launchpad.net/~kxstudio-debian/+archive/kxstudio/+files/kxstudio-repos_10.0.3_all.deb
+ sudo dpkg -i kxstudio-repos_10.0.3_all.deb
+ sudo apt-get update -qq
+ # build-deps
+ sudo apt-get install -yq libasound2-dev libcairo2-dev libgl1-mesa-dev liblo-dev libpulse-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev
+ # runtime testing
+ sudo apt-get install -yq carla-git lv2-dev lv2lint valgrind
+ - name: Build plugins
+ env:
+ CFLAGS: -g
+ CXXFLAGS: -g
+ LDFLAGS: -static-libgcc -static-libstdc++
+ run: |
+ make features
+ make NOOPT=true SKIP_STRIPPING=true -j $(nproc)
+ - name: Validate LV2 ttl syntax
+ run: |
+ lv2_validate \
+ /usr/lib/lv2/mod.lv2/*.ttl \
+ /usr/lib/lv2/kx-meta/*.ttl \
+ /usr/lib/lv2/kx-control-input-port-change-request.lv2/*.ttl \
+ /usr/lib/lv2/kx-programs.lv2/*.ttl \
+ ./bin/*.lv2/*.ttl
+ - name: Validate LV2 metadata and binaries
+ run: |
+ export LV2_PATH=/tmp/lv2-path
+ mkdir ${LV2_PATH}
+ cp -r bin/*.lv2 \
+ /usr/lib/lv2/{atom,buf-size,core,data-access,kx-control-input-port-change-request,kx-programs,instance-access,midi,parameters,port-groups,port-props,options,patch,presets,resize-port,state,time,ui,units,urid,worker}.lv2 \
+ ${LV2_PATH}
+ lv2lint -s lv2_generate_ttl -M nopack $(lv2ls)
+ - name: Test LADSPA plugins
+ run: |
+ for p in $(ls bin/ | grep ladspa.so); do \
+ env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
+ valgrind \
+ --error-exitcode=255 \
+ --leak-check=full \
+ --track-origins=yes \
+ --suppressions=./utils/valgrind-dpf.supp \
+ /usr/lib/carla/carla-bridge-native ladspa ./bin/${p} "" 1>/dev/null; \
+ done
+ - name: Test DSSI plugins
+ run: |
+ for p in $(ls bin/ | grep dssi.so); do \
+ env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
+ valgrind \
+ --error-exitcode=255 \
+ --leak-check=full \
+ --track-origins=yes \
+ --suppressions=./utils/valgrind-dpf.supp \
+ /usr/lib/carla/carla-bridge-native dssi ./bin/${p} "" 1>/dev/null; \
+ done
+ - name: Test LV2 plugins
+ run: |
+ for p in $(lv2ls); do \
+ env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
+ valgrind \
+ --error-exitcode=255 \
+ --leak-check=full \
+ --track-origins=yes \
+ --suppressions=./utils/valgrind-dpf.supp \
+ /usr/lib/carla/carla-bridge-native lv2 "" ${p} 1>/dev/null; \
+ done
+ - name: Test VST2 plugins
+ run: |
+ for p in $(ls bin/ | grep dssi.so); do \
+ env CARLA_BRIDGE_DUMMY=1 CARLA_BRIDGE_TESTING=native \
+ valgrind \
+ --error-exitcode=255 \
+ --leak-check=full \
+ --track-origins=yes \
+ --suppressions=./utils/valgrind-dpf.supp \
+ /usr/lib/carla/carla-bridge-native vst2 ./bin/${p} "" 1>/dev/null; \
+ done
diff --git a/utils/valgrind-dpf.supp b/utils/valgrind-dpf.supp
@@ -0,0 +1,40 @@
+{
+ libdl is full of leaks
+ Memcheck:Leak
+ ...
+ fun:_dl_open
+ ...
+}
+{
+ libdl is full of leaks
+ Memcheck:Leak
+ ...
+ fun:_dl_close
+ ...
+}
+# {
+# libdl is full of leaks
+# Memcheck:Leak
+# ...
+# fun:_dl_allocate_tls
+# ...
+# }
+{
+ libdl is full of leaks
+ Memcheck:Leak
+ ...
+ fun:_dl_init
+}
+{
+ libdl is full of leaks
+ Memcheck:Leak
+ ...
+ fun:call_init.part.0
+}
+{
+ ignore XInitThreads
+ Memcheck:Leak
+ ...
+ fun:XInitThreads
+ ...
+}