lv2lint fails on all plugins
Linux MIDI arpeggiator, phrase generator and controller LFO
Status: Alpha
Brought to you by:
emuse
Hi! I'm packaging qmidiarp for Arch Linux.
When rebuilding the package, I ran lv2lint against the lv2 plugins.
There are some errors being reported though and it would be awesome if they could be fixed:
qmidiarp_arp:
lv2lint 0.6.0 Copyright (c) 2016-2020 Hanspeter Portner (dev@open-music-kontrollers.ch) Released under Artistic License 2.0 by Open Music Kontrollers <https://git.code.sf.net/p/qmidiarp/arp> [FAIL] Symbols binary exports superfluous globally visible symbols: * _ZN7MidiArp19advancePatternIndexEb * _ZN7MidiArp10setSustainEbi * _ZN7MidiArp11releaseNoteEiib * _ZN10MidiArpLV212connect_portEjPv * _ZN7MidiArp21updateRandomLengthAmpEi * _ZN7MidiArp14copyNoteBufferEv * _ZN10MidiArpLV214forgeMidiEventEjPKhj * _ZN10MidiArpLV29updatePosEmfib * _ZN7MidiArp19updateRandomTickAmpEi * _ZN7MidiArp12getNextFrameEi * ... there is more, but the rest is being truncated seeAlso: <http://lv2plug.in/ns/lv2core#binary> [FAIL] Version Micro lv2:microVersion not found seeAlso: <http://lv2plug.in/ns/lv2core#microVersion> <https://git.code.sf.net/p/qmidiarp/arp#ui> [FAIL] Symbols binary exports superfluous globally visible symbols: * _ZN6CursorD0Ev * _ZNK12ArpWidgetLV211updateParamEif * _ZN6Screen11qt_metacallEN11QMetaObject4CallEiPPv * _ZN6CursorC2E5QChar * _ZNK8InOutBox10metaObjectEv * _ZN10MidiWorkerC2Ev * _ZNK6Cursor10sizePolicyEv * _ZN7MidiArp17purgeReleaseNotesEi * _ZNK6Cursor8sizeHintEv * _ZN8InOutBox21updateEnableTrigByKbdEb * ... there is more, but the rest is being truncated seeAlso: <http://lv2plug.in/ns/lv2core#binary> [WARN] Toolkit usage of non-native toolkit <http://lv2plug.in/ns/extensions/ui#Qt5UI> is dicouraged seeAlso: <http://lv2plug.in/ns/extensions/ui#ui>
qmidiarp_lfo:
lv2lint 0.6.0 Copyright (c) 2016-2020 Hanspeter Portner (dev@open-music-kontrollers.ch) Released under Artistic License 2.0 by Open Music Kontrollers <https://git.code.sf.net/p/qmidiarp/lfo> [FAIL] Symbols binary exports superfluous globally visible symbols: * _ZN10MidiLfoLV29updatePosEmfib * _ZN10MidiLfoLV212updateParamsEv * _ZN7MidiLfo10mouseEventEddii * _ZN7MidiLfo13setRecordModeEb * _ZN10MidiLfoLV212connect_portEjPv * _ZN7MidiLfo16updateResolutionEi * _ZN7MidiLfo12setMutePointEdb * _ZN7MidiLfoC2Ev * _ZN7MidiLfo15newCustomOffsetEv * _ZN10MidiLfoLV2D2Ev * ... there is more, but the rest is being truncated seeAlso: <http://lv2plug.in/ns/lv2core#binary> [FAIL] Version Micro lv2:microVersion not found seeAlso: <http://lv2plug.in/ns/lv2core#microVersion> <https://git.code.sf.net/p/qmidiarp/lfo#ui> [FAIL] Symbols binary exports superfluous globally visible symbols: * _ZN12LfoWidgetLV2D2Ev * _ZN8InOutBox11storeParamsEib * _ZThn16_N12LfoWidgetLV2D1Ev * _ZN7MidiLfo9resizeAllEv * _ZN8InOutBoxD1Ev * _ZN9LfoScreen4clipEiiiPb * _ZNK6Screen10sizePolicyEv * _ZN9LfoWidget9updateResEi * _ZN7MidiLfo15newCustomOffsetEv * _ZNK9LfoWidget10metaObjectEv * ... there is more, but the rest is being truncated seeAlso: <http://lv2plug.in/ns/lv2core#binary> [WARN] Toolkit usage of non-native toolkit <http://lv2plug.in/ns/extensions/ui#Qt5UI> is dicouraged seeAlso: <http://lv2plug.in/ns/extensions/ui#ui>
qmidiarp_seq:
lv2lint 0.6.0 Copyright (c) 2016-2020 Hanspeter Portner (dev@open-music-kontrollers.ch) Released under Artistic License 2.0 by Open Music Kontrollers <https://git.code.sf.net/p/qmidiarp/seq> [FAIL] Symbols binary exports superfluous globally visible symbols: * _ZN10MidiSeqLV2C1EdPKPK11LV2_Feature * _ZN7MidiSeq15setRecordedNoteEi * _ZN10MidiSeqLV212connect_portEjPv * _ZN7MidiSeq14updateDispVertEi * _ZN7MidiSeq10updateLoopEi * _ZN7MidiSeq16updateNoteLengthEi * _ZN7MidiSeq10updateSizeEi * _ZN7MidiSeq11handleEventE9MidiEventi * _ZN10MidiSeqLV213updatePosAtomEPK15LV2_Atom_Object * _ZN7MidiSeq11setFramePtrEi * ... there is more, but the rest is being truncated seeAlso: <http://lv2plug.in/ns/lv2core#binary> [FAIL] Version Micro lv2:microVersion not found seeAlso: <http://lv2plug.in/ns/lv2core#microVersion> <https://git.code.sf.net/p/qmidiarp/seq#ui> [FAIL] Symbols binary exports superfluous globally visible symbols: * _ZN8InOutBox16updateChannelOutEi * _ZN6Slider13updateSpinBoxEi * _ZN6Cursor10updateDrawEv * _ZN8InOutBox11storeParamsEib * _ZN7MidiSeq10mouseEventEddii * _ZN8InOutBox16updateCcnumberInEi * _ZN7MidiSeq7getDataEPSt6vectorI6SampleSaIS1_EE * _ZN12SeqWidgetLV211qt_metacallEN11QMetaObject4CallEiPPv * _ZN8InOutBoxD0Ev * _ZN6Cursor11qt_metacastEPKc * ... there is more, but the rest is being truncated seeAlso: <http://lv2plug.in/ns/lv2core#binary> [WARN] Toolkit usage of non-native toolkit <http://lv2plug.in/ns/extensions/ui#Qt5UI> is dicouraged seeAlso: <http://lv2plug.in/ns/extensions/ui#ui>
Hi there,
I cannot currently reproduce the superfluous symbol FAILs, but I will correct for the missing microVersion. Which flags do you use with lv2lint and which QMidiArp version are you testing ?
Thanks
Frank
Hi Frank!
Sorry for the late reply. Too many bug trackers and tickets!
I'm currently shipping qmidiarp 0.6.5 and I am now using lv2lint 0.10.0 and build/ test like this:
I guess at that point in time during build the binaries are not yet stripped and that could be part of the issue.
I just tried to install to a test directory just to make sure that my above assumption is not valid (it is not):
This still yields the same results as initially reported.
The same is also true, when I just call lv2lint if the package is installed (plugin in system-wide location):
Hi David, I checked again with lv2lint 0.10.0. I cannot get these exported symbol FAILs when I build from git (or from the 0.6.5 tarball) on Ubuntu 20.04. This is what I get for the current git:
I wonder if I should add some additional linker/compiler flags so they are not build system dependent?
Sorry I cannot try this on a different system for now.
Best
Frank
Hi! I still see these issues with 0.6.6 and lv2lint 0.16.2.
I am now disabling the tests for
UI Symbols
andPlugin Symbols
.FWIW, I think that linking against the Qt toolkit in a plugin is not a good idea (and likely part of the problem, but I am also no expert) :)
It seems also that the lfo and seq variants hard crash lv2lint:
This should not happen, but as I was ignoring the errors in previous builds already I'm not sure for how long this issue has been around already either...
You could try to reach out to some of the linuxaudio folks about this (either via mailing list or #lad on libera.chat).
Hi David,
I pushed some changes to the repo that fix some of the lv2lint (0.17.71) fails. You are perfectly right that dynamically linking to Qt isn't a good way for LV2 UIs. But since the whole Qmidiarp application was built with it initially (and the plugins derived later), changing this would require either a rewrite with a statically linkable (and leaner) toolkit or without toolkit, which is substantial.
It now reduces to this except the LFO plugin which has a realtime problem in addition (TODO):
/usr/local/lib/x86_64-linux-gnu/lv2lint/lv2lint.bin 0.17.71
Copyright (c) 2016-2021 Hanspeter Portner (dev@open-music-kontrollers.ch)
Released under Artistic License 2.0 by Open Music Kontrollers
https://git.code.sf.net/p/qmidiarp/seq
https://git.code.sf.net/p/qmidiarp/seq#ui_x11
[FAIL] UI Instantiation
failed to instantiate
seeAlso: http://lv2plug.in/ns/extensions/ui#X11UI
[FAIL] UI Widget
failed to return a valid widget
seeAlso: http://lv2plug.in/ns/extensions/ui#X11UI
But I don't understand the crashing lv2lint in your case,