Menu

#33 lv2lint fails on all plugins

0.6.6
accepted
nobody
None
5
2023-04-09
2020-06-20
David Runge
No

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>

Discussion

  • Frank

    Frank - 2020-07-24
    • status: unread --> accepted
     
  • Frank

    Frank - 2020-07-24

    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

     
  • David Runge

    David Runge - 2021-02-04

    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:

      ./configure --prefix=/usr --enable-qt5
      make
      for _name in arp lfo seq; do
        cp -v "src/.libs/${pkgname}_${_name}"{,_ui}.so \
          "${pkgname}_${_name}.lv2/"
        lv2lint -Mpack -I "${pkgname}_${_name}.lv2/" \
          "https://git.code.sf.net/p/qmidiarp/${_name}"
       done
    

    I guess at that point in time during build the binaries are not yet stripped and that could be part of the issue.

     
  • David Runge

    David Runge - 2021-02-04

    I just tried to install to a test directory just to make sure that my above assumption is not valid (it is not):

      _test_dir="${srcdir}/${pkgname}-${pkgver}/test_dir"
      mkdir -vp "$_test_dir"
      ./configure --prefix=/usr --enable-qt5
      make
    
      make DESTDIR="${_test_dir}" install
    
      for _name in arp lfo seq; do
        lv2lint -Mpack -I "test_dir/usr/lib/lv2/${pkgname}_${_name}.lv2/" \
          "https://git.code.sf.net/p/qmidiarp/${_name}"
      done
    

    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):

    lv2lint -Mpack "https://git.code.sf.net/p/qmidiarp/lfo"
    
     
  • Frank

    Frank - 2021-02-05

    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:

    lv2lint -Mpack "https://git.code.sf.net/p/qmidiarp/lfo"
    lv2lint 0.10.0
    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/lfo>
      <https://git.code.sf.net/p/qmidiarp/lfo#ui>
        [WARN]  UI Toolkit
                  usage of non-native toolkit <http://lv2plug.in/ns/extensions/ui#Qt5UI> is dicouraged
                  seeAlso: <http://lv2plug.in/ns/extensions/ui#ui>
    

    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

     
  • David Runge

    David Runge - 2023-04-09

    Hi! I still see these issues with 0.6.6 and lv2lint 0.16.2.

    I am now disabling the tests for UI Symbols and Plugin 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) :)

     
  • David Runge

    David Runge - 2023-04-09

    It seems also that the lfo and seq variants hard crash lv2lint:

    lv2lint 0.16.2
    Copyright (c) 2016-2021 Hanspeter Portner (dev@open-music-kontrollers.ch)
    Released under Artistic License 2.0 by Open Music Kontrollers
    error: failed to open file /usr/lib/lv2/lv2/manifest.ttl (No such file or directory)
    lilv_world_load_file(): error: Error loading file `file:///usr/lib/lv2/lv2/manifest.ttl'
    lilv_world_load_bundle(): error: Error reading file:///usr/lib/lv2/lv2/manifest.ttl
    lilv_world_add_plugin(): warning: Duplicate plugin <https://git.code.sf.net/p/qmidiarp/lfo>
    lilv_world_add_plugin(): warning: ... found in file:///usr/lib/lv2/qmidiarp_lfo.lv2/
    lilv_world_add_plugin(): warning: ... and      file:///mnt/chroots/arch/extra-x86_64/dave/build/qmidiarp/src/qmidiarp-0.6.6/qmidiarp_lfo.lv2/ (ignored)
    <https://git.code.sf.net/p/qmidiarp/lfo>
    /usr/include/c++/12.2.1/bits/stl_vector.h:1123: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](size_type) [with _Tp = Sample; _Alloc = std::allocator<Sample>; reference = Sample&; size_type = long unsigned int]: Assertion '__n < this->size()' failed.
    [2]    223698 IOT instruction (core dumped)  lv2lint -d -Mpack -I  https://git.code.sf.net/p/qmidiarp/lfo
    
    lv2lint 0.16.2
    Copyright (c) 2016-2021 Hanspeter Portner (dev@open-music-kontrollers.ch)
    Released under Artistic License 2.0 by Open Music Kontrollers
    error: failed to open file /usr/lib/lv2/lv2/manifest.ttl (No such file or directory)
    lilv_world_load_file(): error: Error loading file `file:///usr/lib/lv2/lv2/manifest.ttl'
    lilv_world_load_bundle(): error: Error reading file:///usr/lib/lv2/lv2/manifest.ttl
    lilv_world_add_plugin(): warning: Duplicate plugin <https://git.code.sf.net/p/qmidiarp/seq>
    lilv_world_add_plugin(): warning: ... found in file:///usr/lib/lv2/qmidiarp_seq.lv2/
    lilv_world_add_plugin(): warning: ... and      file:///mnt/chroots/arch/extra-x86_64/dave/build/qmidiarp/src/qmidiarp-0.6.6/qmidiarp_seq.lv2/ (ignored)
    <https://git.code.sf.net/p/qmidiarp/seq>
    /usr/include/c++/12.2.1/bits/stl_vector.h:1123: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](size_type) [with _Tp = Sample; _Alloc = std::allocator<Sample>; reference = Sample&; size_type = long unsigned int]: Assertion '__n < this->size()' failed.
    [2]    219440 IOT instruction (core dumped)  lv2lint -d -Mpack -I  https://git.code.sf.net/p/qmidiarp/seq
    

    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).

     
  • Frank

    Frank - 2023-04-09

    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,

     

Log in to post a comment.