DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

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:
M.github/workflows/example-plugins.yml | 85+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Autils/valgrind-dpf.supp | 40++++++++++++++++++++++++++++++++++++++++
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 + ... +}