sonic-pi-net / sonic-pi

Code. Music. Live.
https://sonic-pi.net
Other
10.76k stars 921 forks source link

Linux build failing with "undefined reference to `wl_proxy_marshal_flags'" #3063

Closed rthijs closed 2 years ago

rthijs commented 2 years ago

This one is related to #3013 where I also had the build failing. This time I updated all the dependencies from Qt5 to Qt6 and I also added a new depency qt6-svg. I'm posting here as somebody trying to build it on Linux might find it useful, I don't know what needs to change to actually make it work.

This is on Endeavour OS (Arch based distro) with Pipewire and I have installed these dependencies:

boost cmake git erlang-nox gendesk lua qt6-tools wkhtmltopdf base-devel aubio gcc-libs glibc osmid qt6-base qscintilla-qt6 ruby ruby-activesupport ruby-bundler ruby-ffi ruby-i18n ruby-kramdown ruby-minitest ruby-mocha ruby-multi_json ruby-rake ruby-rouge ruby-rugged ruby-sys-proctable sc3-plugins sox supercollider rtmidi elixir jack-example-tools qt6-svg

When running ./linux-build-all.sh I get this error:

[ 99%] Building CXX object gui/imgui/CMakeFiles/sonic-pi-imgui.dir/backends/imgui_impl_opengl3.cpp.o
[100%] Building CXX object gui/imgui/CMakeFiles/sonic-pi-imgui.dir/backends/imgui_impl_sdl.cpp.o
[100%] Linking CXX executable sonic-pi-imgui
/usr/bin/ld: ../../../vcpkg/installed/x64-linux/debug/lib/libSDL2d.a(SDL_waylandvideo.c.o): in function `wl_display_get_registry':
/home/roel/Documenten/sonic-pi/app/vcpkg/buildtrees/sdl2/x64-linux-dbg/wayland-generated-protocols/wayland-client-protocol.h:1052: undefined reference to `wl_proxy_marshal_flags'
/usr/bin/ld: ../../../vcpkg/installed/x64-linux/debug/lib/libSDL2d.a(SDL_waylandvideo.c.o): in function `wl_registry_bind':
/home/roel/Documenten/sonic-pi/app/vcpkg/buildtrees/sdl2/x64-linux-dbg/wayland-generated-protocols/wayland-client-protocol.h:1165: undefined reference to `wl_proxy_marshal_flags'
/usr/bin/ld: ../../../vcpkg/installed/x64-linux/debug/lib/libSDL2d.a(SDL_waylandvideo.c.o): in function `xdg_wm_base_destroy':
/home/roel/Documenten/sonic-pi/app/vcpkg/buildtrees/sdl2/x64-linux-dbg/wayland-generated-protocols/xdg-shell-client-protocol.h:464: undefined reference to `wl_proxy_marshal_flags'
/usr/bin/ld: ../../../vcpkg/installed/x64-linux/debug/lib/libSDL2d.a(SDL_waylandvideo.c.o): in function `xdg_wm_base_pong':
/home/roel/Documenten/sonic-pi/app/vcpkg/buildtrees/sdl2/x64-linux-dbg/wayland-generated-protocols/xdg-shell-client-protocol.h:521: undefined reference to `wl_proxy_marshal_flags'
/usr/bin/ld: ../../../vcpkg/installed/x64-linux/debug/lib/libSDL2d.a(SDL_waylandvideo.c.o): in function `zxdg_decoration_manager_v1_destroy':
/home/roel/Documenten/sonic-pi/app/vcpkg/buildtrees/sdl2/x64-linux-dbg/wayland-generated-protocols/xdg-decoration-unstable-v1-client-protocol.h:177: undefined reference to `wl_proxy_marshal_flags'
/usr/bin/ld: ../../../vcpkg/installed/x64-linux/debug/lib/libSDL2d.a(SDL_waylandvideo.c.o):/home/roel/Documenten/sonic-pi/app/vcpkg/buildtrees/sdl2/x64-linux-dbg/wayland-generated-protocols/keyboard-shortcuts-inhibit-unstable-v1-client-protocol.h:218: more undefined references to `wl_proxy_marshal_flags' follow
collect2: fout: ld gaf exit-status 1 terug
make[2]: *** [gui/imgui/CMakeFiles/sonic-pi-imgui.dir/build.make:333: gui/imgui/sonic-pi-imgui] Fout 1
make[1]: *** [CMakeFiles/Makefile2:401: gui/imgui/CMakeFiles/sonic-pi-imgui.dir/all] Fout 2
make: *** [Makefile:91: all] Fout 2
    ~/Documenten/sonic-pi/app    dev *1         

To build without the failing imgui I had to change in linux-build-all.sh :

"${SCRIPT_DIR}"/linux-prebuild.sh

to

"${SCRIPT_DIR}"/linux-prebuild.sh -n

and in linux-config.sh I added no_imgui=true after line 17, which is after the getopts loop.

Running linux-build-all.sh then works and the Qt build works fine.

I noticed right away that I now can resize the different windows in Sonic Pi, which was broken last time I tried

tank-trax commented 1 year ago

thanks for this