Hi @nlb ,
I’m on Ubuntu 22.04.1 LTS.
After switching to the stable branch, I’m now able to compile when issuing “linux-build-all.sh -s” option.
If I fail to supply -s, I am getting funny errors about unofficial:: packages which cannot be found.
But when I get to linking stage, I get this error:
[ 32%] Linking CXX executable sonic-pi
cd /home/sancho/Desktop/github/sonic-pi/app/build/gui/qt && /usr/bin/cmake -E cmake_link_script CMakeFiles/sonic-pi.dir/link.txt --verbose=1
/usr/bin/c++ -rdynamic CMakeFiles/sonic-pi.dir/sonic-pi_autogen/mocs_compilation.cpp.o CMakeFiles/sonic-pi.dir/widgets/infowidget.cpp.o CMakeFiles/sonic-pi.dir/widgets/settingswidget.cpp.o CMakeFiles/sonic-pi.dir/widgets/bpmscrubwidget.cpp.o CMakeFiles/sonic-pi.dir/mainwindow.cpp.o CMakeFiles/sonic-pi.dir/model/sonicpitheme.cpp.o CMakeFiles/sonic-pi.dir/main.cpp.o CMakeFiles/sonic-pi.dir/utils/scintilla_api.cpp.o CMakeFiles/sonic-pi.dir/utils/sonicpi_i18n.cpp.o CMakeFiles/sonic-pi.dir/widgets/sonicpilog.cpp.o CMakeFiles/sonic-pi.dir/widgets/sonicpicontext.cpp.o CMakeFiles/sonic-pi.dir/widgets/sonicpimetro.cpp.o CMakeFiles/sonic-pi.dir/widgets/timewarpedit.cpp.o CMakeFiles/sonic-pi.dir/widgets/sonicpieditor.cpp.o CMakeFiles/sonic-pi.dir/widgets/sonicpiscintilla.cpp.o CMakeFiles/sonic-pi.dir/widgets/sonicpilexer.cpp.o CMakeFiles/sonic-pi.dir/qt_api_client.cpp.o CMakeFiles/sonic-pi.dir/visualizer/scope_window.cpp.o CMakeFiles/sonic-pi.dir/sonic-pi_autogen/EWIEGA46WW/qrc_SonicPi.cpp.o CMakeFiles/sonic-pi.dir/sonic-pi_autogen/EWIEGA46WW/qrc_help_files.cpp.o CMakeFiles/sonic-pi.dir/sonic-pi_autogen/EWIEGA46WW/qrc_info_files.cpp.o -o sonic-pi -Wl,-rpath,/usr/local/lib ../../api/libsonic-pi-api.a /usr/lib/x86_64-linux-gnu/libqscintilla2.so /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5.15.3 /usr/lib/x86_64-linux-gnu/libQt5Concurrent.so.5.15.3 /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.15.3 -lrt /usr/local/lib/libplatform_folders.a /usr/local/lib/libreproc++.a /usr/local/lib/libreproc.a /usr/local/lib/libkissfft-float.so -lstdc++fs -lrt /usr/local/lib/libcrossguid.a -luuid /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.3 /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.15.3 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.3
/usr/bin/ld: CMakeFiles/sonic-pi.dir/sonic-pi_autogen/mocs_compilation.cpp.o:(.data.rel.ro._ZTV16SonicPiScintilla[_ZTV16SonicPiScintilla]+0xc8): undefined reference to `QsciScintilla::wheelEvent(QWheelEvent*)'
/usr/bin/ld: CMakeFiles/sonic-pi.dir/sonic-pi_autogen/mocs_compilation.cpp.o:(.data.rel.ro._ZTV16SonicPiScintilla[_ZTV16SonicPiScintilla]+0x1f0): undefined reference to `QsciScintilla::findFirst(QString const&, bool, bool, bool, bool, bool, int, int, bool, bool, bool)'
/usr/bin/ld: CMakeFiles/sonic-pi.dir/sonic-pi_autogen/mocs_compilation.cpp.o:(.data.rel.ro._ZTV16SonicPiScintilla[_ZTV16SonicPiScintilla]+0x1f8): undefined reference to `QsciScintilla::findFirstInSelection(QString const&, bool, bool, bool, bool, bool, bool, bool)'
/usr/bin/ld: CMakeFiles/sonic-pi.dir/sonic-pi_autogen/mocs_compilation.cpp.o:(.data.rel.ro._ZTV16SonicPiScintilla[_ZTV16SonicPiScintilla]+0x330): undefined reference to `QsciScintilla::setCaretLineFrameWidth(int)'
collect2: error: ld returned 1 exit status
gmake[2]: *** [gui/qt/CMakeFiles/sonic-pi.dir/build.make:3917: gui/qt/sonic-pi] Error 1
gmake[2]: Leaving directory '/home/sancho/Desktop/fromOld/github/sonic-pi/app/build'
gmake[1]: *** [CMakeFiles/Makefile2:349: gui/qt/CMakeFiles/sonic-pi.dir/all] Error 2
gmake[1]: Leaving directory '/home/sancho/Desktop/fromOld/github/sonic-pi/app/build'
gmake: *** [Makefile:91: all] Error 2
I do have an installation of this libqscintilla:
sancho@extSsd:~/Desktop/github/sonic-pi/app$ dpkg -l | grep cintilla
pi libqscintilla2-qt5-15 2.11.6+dfsg-4 amd64 Qt5 port of the Scintilla source code editing widget
ii libqscintilla2-qt5-dev:amd64 2.11.6+dfsg-4 amd64 Scintilla source code editing widget for Qt5, development files
pi libqscintilla2-qt5-l10n 2.11.6+dfsg-4 all Scintilla source code editing widget for Qt5, translation files
I noticed folder app/gui/qt/QScintilla_src-2.13.3 with a cmake project, and after building it I noticed it provides these symbols:
sancho@extSsd:~/Desktop/github/sonic-pi/app$ nm -an gui/qt/QScintilla_src-2.13.3/libQScintilla.a | c++filt | grep QsciScintilla::wheelEvent
000000000000abf2 T QsciScintilla::wheelEvent(QWheelEvent*)
So I manually added this library to the linker command:
sancho@extSsd:~/Desktop/github/sonic-pi/app/build/gui/qt$ /usr/bin/c++ -rdynamic CMakeFiles/sonic-pi.dir/sonic-pi_autogen/mocs_compilation.cpp.o CMakeFiles/sonic-pi.dir/widgets/infowidget.cpp.o CMakeFiles/sonic-pi.dir/widgets/settingswidget.cpp.o CMakeFiles/sonic-pi.dir/widgets/bpmscrubwidget.cpp.o CMakeFiles/sonic-pi.dir/mainwindow.cpp.o CMakeFiles/sonic-pi.dir/model/sonicpitheme.cpp.o CMakeFiles/sonic-pi.dir/main.cpp.o CMakeFiles/sonic-pi.dir/utils/scintilla_api.cpp.o CMakeFiles/sonic-pi.dir/utils/sonicpi_i18n.cpp.o CMakeFiles/sonic-pi.dir/widgets/sonicpilog.cpp.o CMakeFiles/sonic-pi.dir/widgets/sonicpicontext.cpp.o CMakeFiles/sonic-pi.dir/widgets/sonicpimetro.cpp.o CMakeFiles/sonic-pi.dir/widgets/timewarpedit.cpp.o CMakeFiles/sonic-pi.dir/widgets/sonicpieditor.cpp.o CMakeFiles/sonic-pi.dir/widgets/sonicpiscintilla.cpp.o CMakeFiles/sonic-pi.dir/widgets/sonicpilexer.cpp.o CMakeFiles/sonic-pi.dir/qt_api_client.cpp.o CMakeFiles/sonic-pi.dir/visualizer/scope_window.cpp.o CMakeFiles/sonic-pi.dir/sonic-pi_autogen/EWIEGA46WW/qrc_SonicPi.cpp.o CMakeFiles/sonic-pi.dir/sonic-pi_autogen/EWIEGA46WW/qrc_help_files.cpp.o CMakeFiles/sonic-pi.dir/sonic-pi_autogen/EWIEGA46WW/qrc_info_files.cpp.o -o sonic-pi -Wl,-rpath,/usr/local/lib ../../api/libsonic-pi-api.a ../../../gui/qt/QScintilla_src-2.13.3/libQScintilla.a /usr/lib/x86_64-linux-gnu/libqscintilla2.so /usr/lib/x86_64-linux-gnu/libQt5OpenGL.so.5.15.3 /usr/lib/x86_64-linux-gnu/libQt5Concurrent.so.5.15.3 /usr/lib/x86_64-linux-gnu/libQt5Network.so.5.15.3 -lrt /usr/local/lib/libplatform_folders.a /usr/local/lib/libreproc++.a /usr/local/lib/libreproc.a /usr/local/lib/libkissfft-float.so -lstdc++fs -lrt /usr/local/lib/libcrossguid.a -luuid /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.3 /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.15.3 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.3
/usr/bin/ld: ../../../gui/qt/QScintilla_src-2.13.3/libQScintilla.a(qsciscintilla.o): in function `QsciScintilla::handleMarginRightClick(int, int, int)':
qsciscintilla.cpp:(.text+0x53db): undefined reference to `QsciScintilla::marginRightClicked(int, int, QFlags<Qt::KeyboardModifier>)'
/usr/bin/ld: ../../../gui/qt/QScintilla_src-2.13.3/libQScintilla.a(qsciscintillabase.o): in function `QsciScintillaBase::dropEvent(QDropEvent*)':
qsciscintillabase.cpp:(.text+0x1c03): undefined reference to `QsciScintillaBase::SCN_URIDROPPED(QUrl const&)'
/usr/bin/ld: ../../../gui/qt/QScintilla_src-2.13.3/libQScintilla.a(ScintillaQt.o): in function `QsciScintillaQt::NotifyParent(SCNotification)':
ScintillaQt.cpp:(.text+0xaef): undefined reference to `QsciScintillaBase::SCN_AUTOCCOMPLETED(char const*, int, int, int)'
/usr/bin/ld: ScintillaQt.cpp:(.text+0xb23): undefined reference to `QsciScintillaBase::SCN_AUTOCSELECTION(char const*, int, int, int)'
/usr/bin/ld: ScintillaQt.cpp:(.text+0xb69): undefined reference to `QsciScintillaBase::SCN_AUTOCSELECTIONCHANGE(char const*, int, int)'
/usr/bin/ld: ScintillaQt.cpp:(.text+0xd4b): undefined reference to `QsciScintillaBase::SCN_MARGINRIGHTCLICK(int, int, int)'
/usr/bin/ld: ScintillaQt.cpp:(.text+0xfa0): undefined reference to `QsciScintillaBase::SCN_USERLISTSELECTION(char const*, int, int, int, int)'
/usr/bin/ld: ScintillaQt.cpp:(.text+0xfc9): undefined reference to `QsciScintillaBase::SCN_USERLISTSELECTION(char const*, int, int, int)'
It’s complaining about yet more undefined symbols. How is this even meant to be built?
Thanks,
Martin