Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0.9: lv2lint fails on plugins #36

Open
dvzrv opened this issue Apr 24, 2021 · 3 comments
Open

0.9: lv2lint fails on plugins #36

dvzrv opened this issue Apr 24, 2021 · 3 comments

Comments

@dvzrv
Copy link
Contributor

dvzrv commented Apr 24, 2021

Hi! When packaging 0.9 for Arch Linux I also (finally) ran lv2lint against all plugins.

  make
  local _name
  declare -A _urls=(
    ["GxVoodoFuzz.lv2"]="gx_voodoo_#_voodoo_"
    ["GxVmk2.lv2"]="gx_vmk2d_#_vmk2d_"
    ["GxVintageFuzzMaster.lv2"]="gx_vfm_#_vfm_"
    ["GxValveCaster.lv2"]="gx_valvecaster_#_valvecaster_"
    ["GxVBassPreAmp.lv2"]="gx_voxbass_#_voxbass_"
    ["GxUltraCab.lv2"]="gx_ultracab_#_ultracab_"
    ["GxUVox720k.lv2"]="gx_uvox_#_uvox_"
    ["GxTubeDistortion.lv2"]="gx_TubeDistortion_#_TubeDistortion_"
    ["GxToneMachine.lv2"]="gx_tonemachine_#_tonemachine_"
    ["GxTimRay.lv2"]="gx_timray_#_timray_"
    ["GxSuppaToneBender.lv2"]="gx_vstb_#_vstb_"
    ["GxSupersonic.lv2"]="gx_supersonic_#_supersonic_"
    ["GxSuperFuzz.lv2"]="gx_sfp_#_sfp_"
    ["GxSunFace.lv2"]="gx_SunFace_#_SunFace_"
    ["GxSlowGear.lv2"]="gx_slowgear_#_slowgear_"
    ["GxSloopyBlue.lv2"]="gx_sloopyblue_#_sloopyblue_"
    ["GxShakaTube.lv2"]="gx_shakatube_#_shakatube_"
    ["GxSaturator.lv2"]="gx_saturate_#_saturate_"
    ["GxSVT.lv2"]="gx_ampegsvt_#_ampegsvt_"
    ["GxSD2Lead.lv2"]="gx_sd2lead_#_sd2lead_"
    ["GxSD1.lv2"]="gx_sd1sim_#_sd1sim_"
    ["GxQuack.lv2"]="gx_quack_#_quack_"
    ["GxPlexi.lv2"]="gx_plexi_#_plexi_"
    ["GxMicroAmp.lv2"]="gx_MicroAmp_#_MicroAmp_"
    ["GxLuna.lv2"]="gx_luna_#_luna_"
    ["GxLiquidDrive.lv2"]="gx_liquiddrive_#_liquiddrive_"
    ["GxKnightFuzz.lv2"]="gx_KnightFuzz_#_KnightFuzz_"
    ["GxHyperion.lv2"]="gx_hyperion_#_hyperion_"
    ["GxHotBox.lv2"]="gx_hotbox_#_hotbox_"
    ["GxHeathkit.lv2"]="gx_Heathkit_#_Heathkit_"
    ["GxGuvnor.lv2"]="gx_guvnor_#_guvnor_"
    ["GxFz1s.lv2"]="gx_maestro_fz1s_#_maestro_fz1s_"
    ["GxFz1b.lv2"]="gx_maestro_fz1b_#_maestro_fz1b_"
    ["GxEternity.lv2"]="gx_eternity_#_eternity_"
    ["GxEpic.lv2"]="gx_epic_#_epic_"
    ["GxDOP250.lv2"]="gx_DOP250_#_DOP250_"
    ["GxCreamMachine.lv2"]="gx_CreamMachine_#_CreamMachine_"
    ["GxClubDrive.lv2"]="gx_clubdrive_#_clubdrive_"
    ["GxBottleRocket.lv2"]="gx_bottlerocket_#_bottlerocket_"
    ["GxBoobTube.lv2"]="gx_boobtube_#_boobtube_"
    ["GxBlueAmp.lv2"]="gx_blueamp_#_blueamp_"
    ["GxBaJaTubeDriver.lv2"]="gx_bajatubedriver_#_bajatubedriver_"
    ["GxAxisFace.lv2"]="gx_AxisFace_#_AxisFace_"
  )
  declare -A _names=(
    ["GxVoodoFuzz.lv2"]="gx_voodoo.lv2"
    ["GxVmk2.lv2"]="gx_vmk2d.lv2"
    ["GxVintageFuzzMaster.lv2"]="gx_vfm.lv2"
    ["GxValveCaster.lv2"]="gx_valvecaster.lv2"
    ["GxVBassPreAmp.lv2"]="gx_voxbass.lv2"
    ["GxUltraCab.lv2"]="gx_ultracab.lv2"
    ["GxUVox720k.lv2"]="gx_uvox.lv2"
    ["GxTubeDistortion.lv2"]="gx_TubeDistortion.lv2"
    ["GxToneMachine.lv2"]="gx_tonemachine.lv2"
    ["GxTimRay.lv2"]="gx_timray.lv2"
    ["GxSuppaToneBender.lv2"]="gx_vstb.lv2"
    ["GxSupersonic.lv2"]="gx_supersonic.lv2"
    ["GxSuperFuzz.lv2"]="gx_sfp.lv2"
    ["GxSunFace.lv2"]="gx_SunFace.lv2"
    ["GxSlowGear.lv2"]="gx_slowgear.lv2"
    ["GxSloopyBlue.lv2"]="gx_sloopyblue.lv2"
    ["GxShakaTube.lv2"]="gx_shakatube.lv2"
    ["GxSaturator.lv2"]="gx_saturate.lv2"
    ["GxSVT.lv2"]="gx_ampegsvt.lv2"
    ["GxSD2Lead.lv2"]="gx_sd2lead.lv2"
    ["GxSD1.lv2"]="gx_sd1sim.lv2"
    ["GxQuack.lv2"]="gx_quack.lv2"
    ["GxPlexi.lv2"]="gx_plexi.lv2"
    ["GxMicroAmp.lv2"]="gx_MicroAmp.lv2"
    ["GxLuna.lv2"]="gx_luna.lv2"
    ["GxLiquidDrive.lv2"]="gx_liquiddrive.lv2"
    ["GxKnightFuzz.lv2"]="gx_KnightFuzz.lv2"
    ["GxHyperion.lv2"]="gx_hyperion.lv2"
    ["GxHotBox.lv2"]="gx_hotbox.lv2"
    ["GxHeathkit.lv2"]="gx_Heathkit.lv2"
    ["GxGuvnor.lv2"]="gx_guvnor.lv2"
    ["GxFz1s.lv2"]="gx_maestro_fz1s.lv2"
    ["GxFz1b.lv2"]="gx_maestro_fz1b.lv2"
    ["GxEternity.lv2"]="gx_eternity.lv2"
    ["GxEpic.lv2"]="gx_epic.lv2"
    ["GxDOP250.lv2"]="gx_DOP250.lv2"
    ["GxCreamMachine.lv2"]="gx_CreamMachine.lv2"
    ["GxClubDrive.lv2"]="gx_clubdrive.lv2"
    ["GxBottleRocket.lv2"]="gx_bottlerocket.lv2"
    ["GxBoobTube.lv2"]="gx_boobtube.lv2"
    ["GxBlueAmp.lv2"]="gx_blueamp.lv2"
    ["GxBaJaTubeDriver.lv2"]="gx_bajatubedriver.lv2"
    ["GxAxisFace.lv2"]="gx_AxisFace.lv2"
  )
  for _name in "${!_names[@]}"; do
    lv2lint -Mpack -I "${_name}/${_names[${_name}]}/" "http://guitarix.sourceforge.net/plugins/${_urls[${_name}]}" || echo "Known to fail"
  done

Unfortunately they all fail on various things, as you can see in this short excerpt:

lv2lint 0.12.0
Copyright (c) 2016-2021 Hanspeter Portner ([email protected])
Released under Artistic License 2.0 by Open Music Kontrollers
<http://guitarix.sourceforge.net/plugins/gx_bottlerocket_#_bottlerocket_>
    [FAIL]  Plugin Symbols
              binary exports superfluous globally visible symbols:
                * _ZN12bottlerocket16Gx_bottlerocket_D2Ev
                * _ZN12bottlerocket3Dsp7connectEjPv
                * _ZN12bottlerocket3DspC2Ev
                * _ZN12bottlerocket3Dsp14compute_staticEiPfS1_P9PluginLV2
                * _ZN12bottlerocket16Gx_bottlerocket_7cleanupEPv
                * _ZN12bottlerocket3DspD1Ev
                * _ZN12bottlerocket3Dsp11init_staticEjP9PluginLV2
                * _ZN12bottlerocket7tubetabE
                * _ZN12bottlerocket16Gx_bottlerocket_C1Ev
                * _ZN12bottlerocket16Gx_bottlerocket_12connect_portEPvjS1_
                * ... there is more, but the rest is being truncated
              seeAlso: <http://lv2plug.in/ns/lv2core#binary>
    [WARN]  Plugin Author Homepage
              foaf:homepage not found
              seeAlso: <http://lv2plug.in/ns/lv2core#project>
  <http://guitarix.sourceforge.net/plugins/gx_bottlerocket_gui#_bottlerocket_>
    [FAIL]  UI Symbols
              binary exports superfluous globally visible symbols:
                * _binary_pedal_png_start
                * get_active_controller
                * _binary_pswitch_off_png_size
                * _binary_pedal_png_size
                * _binary_frame_png_size
                * _binary_pswitch_on_png_end
                * cairo_image_surface_create_from_stream
                * _binary_frame_png_start
                * _binary_pedal_png_end
                * _binary_pswitch_on_png_start
                * ... there is more, but the rest is being truncated
              seeAlso: <http://lv2plug.in/ns/lv2core#binary>
    [FAIL]  UI Idle Interface
              lv2:feature ui:idleInterface missing
              seeAlso: <http://lv2plug.in/ns/extensions/ui#idleInterface>
    [FAIL]  UI Resize Interface
              lv2:extensionData ui:resize missing
              seeAlso: <http://lv2plug.in/ns/extensions/ui#resize>

The full check log can be found here:
gxplugins.lv2-0.9-1-x86_64-check.log

I believe they are all fixable issues though! :)

archlinux-github pushed a commit to archlinux/svntogit-community that referenced this issue Apr 24, 2021
Use lv2lint in check() to test all lv2 plugins.
Open upstream ticket about all plugins not passing lv2lint:
brummer10/GxPlugins.lv2#36

git-svn-id: file:///srv/repos/svn-community/svn@923645 9fca08f4-af9d-4005-b8df-a31f2cc04f65
archlinux-github pushed a commit to archlinux/svntogit-community that referenced this issue Apr 24, 2021
Use lv2lint in check() to test all lv2 plugins.
Open upstream ticket about all plugins not passing lv2lint:
brummer10/GxPlugins.lv2#36

git-svn-id: file:///srv/repos/svn-community/svn@923645 9fca08f4-af9d-4005-b8df-a31f2cc04f65
@brummer10
Copy link
Owner

While that is true, non of this issues ever lead to a issue in real world.
So, it's about pedantic. Hence, the priority for me to fix that is very low, sorry.

@dvzrv
Copy link
Contributor Author

dvzrv commented Jan 19, 2023

This is still the case for 1.0, e.g.:

lv2lint 0.16.2
Copyright (c) 2016-2021 Hanspeter Portner ([email protected])
Released under Artistic License 2.0 by Open Music Kontrollers
<http://guitarix.sourceforge.net/plugins/gx_tonemachine_#_tonemachine_>
    [FAIL]  Plugin Symbols
              binary exports superfluous globally visible symbols:
                * _ZN15foxxtonemachine3DspD2Ev
                * _ZN18foxxtonemachine_on3Dsp14connect_staticEjPvP9PluginLV2
                * _ZN15foxxtonemachine3Dsp7connectEjPv
                * _ZN19foxxtonemachine_off3Dsp14connect_staticEjPvP9PluginLV2
                * _ZN18foxxtonemachine_on3Dsp20clear_state_f_staticEP9PluginLV2
                * _ZN15foxxtonemachine19Gx_foxxtonemachine_12connect_portEPvjS1_
                * _ZN15foxxtonemachine19Gx_foxxtonemachine_C1Ev
                * _ZN19foxxtonemachine_off3Dsp14compute_staticEiPfS1_P9PluginLV2
                * _ZN15foxxtonemachine3Dsp12del_instanceEP9PluginLV2
                * _ZN15foxxtonemachine19Gx_foxxtonemachine_3runEPvj
                * ... there is more, but the rest is being truncated
              seeAlso: <http://lv2plug.in/ns/lv2core#binary>
    [WARN]  Plugin Author Homepage
              foaf:homepage not found
              seeAlso: <http://lv2plug.in/ns/lv2core#project>
  <http://guitarix.sourceforge.net/plugins/gx_tonemachine_gui#_tonemachine_>
    [FAIL]  UI Symbols
              binary exports superfluous globally visible symbols:
                * scroll_event
                * _binary_pedal_png_start
                * gx_gui_destroy_main_window
                * gx_gui_send_controller_event
                * _binary_pedal_png_size
                * resize_event
                * motion_event
                * cairo_image_surface_create_from_stream
                * gx_gui_resize_surface
                * gx_gui_create_window_and_surface
                * ... there is more, but the rest is being truncated
              seeAlso: <http://lv2plug.in/ns/lv2core#binary>

gxplugins.lv2-1.0-1-x86_64-check.log

So, it's about pedantic.

I don't really like your insinuation here. Someone spent quite some time ensuring that LV2 plugins do not crash any hosts and implemented checks for that. I believe that can hardly count as being "pedantic".
Globally visible symbols in UI may clash with the host (I guess), but I'm also not an expert.
In theory all that is required is to build those libs with -fvisibility=hidden (AFAIK).

@brummer10
Copy link
Owner

Hi David
Well, I've just forgotten about that issue.
You could add the needed flags on command-line like so:
CXXFLAGS=-fvisibility=hidden make

regards
hermann

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants