Skip to content

Unable to build on Linux 6.9.12 #64

@F33RNI

Description

@F33RNI

Before building i upgraded every module (including uvw) to the latest version and got this error:

[63/79] Building CXX object src/Qv2rayBase/CMakeFiles/Qv2rayBase.dir/src/private/Plugin/LatencyTestThread_p.cpp.o
FAILED: src/Qv2rayBase/CMakeFiles/Qv2rayBase.dir/src/private/Plugin/LatencyTestThread_p.cpp.o 
/usr/bin/c++ -DQT_CORE_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQV2RAY_BASELIB_VERSION=\"3.0.0.0\" -DQV2RAY_BASELIB_VERSION_MAJOR=3 -DQV2RAY_BASELIB_VERSION_MINOR=0 -DQV2RAY_BASELIB_VERSION_PATCH=0 -DQV2RAY_BASELIB_VERSION_TWEAK=0 -DQV2RAY_DEFAULT_VASSETS_PATH=\"/usr/share/v2ray\" -DQV2RAY_DEFAULT_VCORE_PATH=\"/usr/bin/v2ray\" -DQV2RAY_NO_AUTOUPDATE=1 -DQv2rayBase_EXPORTS -DUVW_AS_LIB -I..../Qv2ray/build/src/Qv2rayBase -I..../Qv2ray/src/Qv2rayBase -I..../Qv2ray/build/src/Qv2rayBase/Qv2rayBase_autogen/include -I..../Qv2ray/src/Qv2rayBase/include -I..../Qv2ray/src/Qv2rayBase/src/PluginInterface/include -I..../Qv2ray/src/Qv2rayBase/3rdparty/uvw/src -I..../Qv2ray/build/_deps/libuv-src/include -isystem /usr/include/qt6/QtCore -isystem /usr/include/qt6 -isystem /usr/lib/qt6/mkspecs/linux-g++ -isystem /usr/include/qt6/QtNetwork -O3 -DNDEBUG -std=c++17 -fPIC -fvisibility=hidden -mno-direct-extern-access -MD -MT src/Qv2rayBase/CMakeFiles/Qv2rayBase.dir/src/private/Plugin/LatencyTestThread_p.cpp.o -MF src/Qv2rayBase/CMakeFiles/Qv2rayBase.dir/src/private/Plugin/LatencyTestThread_p.cpp.o.d -o src/Qv2rayBase/CMakeFiles/Qv2rayBase.dir/src/private/Plugin/LatencyTestThread_p.cpp.o -c ..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp: In member function ‘virtual void Qv2rayBase::Plugin::LatencyTestThread::run()’:
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:51:27: error: incomplete type ‘uvw::Loop’ used in nested name specifier
   51 |         loop = uvw::Loop::create();
      |                           ^~~~~~
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:52:25: error: invalid use of incomplete type ‘using std::__shared_ptr_access<uvw::Loop, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::Loop’ {aka ‘class uvw::Loop’}
   52 |         stopTimer = loop->resource<uvw::TimerHandle>();
      |                         ^~
In file included from ..../Qv2ray/src/Qv2rayBase/include/Qv2rayBase/private/Plugin/LatencyTestThread_p.hpp:26,
                 from ..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:17:
..../Qv2ray/src/Qv2rayBase/src/PluginInterface/include/QvPlugin/Handlers/LatencyTestHandler.hpp:7:11: note: forward declaration of ‘using std::__shared_ptr_access<uvw::Loop, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::Loop’ {aka ‘class uvw::Loop’}
    7 |     class Loop;
      |           ^~~~
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:52:52: error: expected primary-expression before ‘>’ token
   52 |         stopTimer = loop->resource<uvw::TimerHandle>();
      |                                                    ^
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:52:54: error: expected primary-expression before ‘)’ token
   52 |         stopTimer = loop->resource<uvw::TimerHandle>();
      |                                                      ^
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:53:18: error: invalid use of incomplete type ‘using std::__shared_ptr_access<uvw::TimerHandle, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::TimerHandle’ {aka ‘class uvw::TimerHandle’}
   53 |         stopTimer->on<uvw::TimerEvent>([this](auto &, auto &handle) { doTest(qobject_cast<Qv2rayBase::Plugin::LatencyTestHost *>(parent()), handle); });
      |                  ^~
..../Qv2ray/src/Qv2rayBase/include/Qv2rayBase/private/Plugin/LatencyTestThread_p.hpp:32:11: note: forward declaration of ‘using std::__shared_ptr_access<uvw::TimerHandle, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::TimerHandle’ {aka ‘class uvw::TimerHandle’}
   32 |     class TimerHandle;
      |           ^~~~~~~~~~~
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:53:28: error: ‘TimerEvent’ is not a member of ‘uvw’; did you mean ‘timer_event’?
   53 |         stopTimer->on<uvw::TimerEvent>([this](auto &, auto &handle) { doTest(qobject_cast<Qv2rayBase::Plugin::LatencyTestHost *>(parent()), handle); });
      |                            ^~~~~~~~~~
      |                            timer_event
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:54:18: error: invalid use of incomplete type ‘using std::__shared_ptr_access<uvw::TimerHandle, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::TimerHandle’ {aka ‘class uvw::TimerHandle’}
   54 |         stopTimer->start(uvw::TimerHandle::Time{ 500 }, uvw::TimerHandle::Time{ 500 });
      |                  ^~
..../Qv2ray/src/Qv2rayBase/include/Qv2rayBase/private/Plugin/LatencyTestThread_p.hpp:32:11: note: forward declaration of ‘using std::__shared_ptr_access<uvw::TimerHandle, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::TimerHandle’ {aka ‘class uvw::TimerHandle’}
   32 |     class TimerHandle;
      |           ^~~~~~~~~~~
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:54:44: error: incomplete type ‘uvw::TimerHandle’ used in nested name specifier
   54 |         stopTimer->start(uvw::TimerHandle::Time{ 500 }, uvw::TimerHandle::Time{ 500 });
      |                                            ^~~~
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:54:75: error: incomplete type ‘uvw::TimerHandle’ used in nested name specifier
   54 |         stopTimer->start(uvw::TimerHandle::Time{ 500 }, uvw::TimerHandle::Time{ 500 });
      |                                                                           ^~~~
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:55:13: error: invalid use of incomplete type ‘using std::__shared_ptr_access<uvw::Loop, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::Loop’ {aka ‘class uvw::Loop’}
   55 |         loop->run();
      |             ^~
..../Qv2ray/src/Qv2rayBase/src/PluginInterface/include/QvPlugin/Handlers/LatencyTestHandler.hpp:7:11: note: forward declaration of ‘using std::__shared_ptr_access<uvw::Loop, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::Loop’ {aka ‘class uvw::Loop’}
    7 |     class Loop;
      |           ^~~~
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp: In member function ‘void Qv2rayBase::Plugin::LatencyTestThread::doTest(Qv2rayBase::Plugin::LatencyTestHost*, uvw::TimerHandle&)’:
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:78:21: error: invalid use of incomplete type ‘using std::__shared_ptr_access<uvw::Loop, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::Loop’ {aka ‘class uvw::Loop’}
   78 |                 loop->raw(),
      |                     ^~
..../Qv2ray/src/Qv2rayBase/src/PluginInterface/include/QvPlugin/Handlers/LatencyTestHandler.hpp:7:11: note: forward declaration of ‘using std::__shared_ptr_access<uvw::Loop, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::Loop’ {aka ‘class uvw::Loop’}
    7 |     class Loop;
      |           ^~~~
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:88:17: error: invalid use of incomplete type ‘class uvw::TimerHandle’
   88 |                 handle.stop();
      |                 ^~~~~~
..../Qv2ray/src/Qv2rayBase/include/Qv2rayBase/private/Plugin/LatencyTestThread_p.hpp:32:11: note: forward declaration of ‘class uvw::TimerHandle’
   32 |     class TimerHandle;
      |           ^~~~~~~~~~~
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:89:17: error: invalid use of incomplete type ‘class uvw::TimerHandle’
   89 |                 handle.close();
      |                 ^~~~~~
..../Qv2ray/src/Qv2rayBase/include/Qv2rayBase/private/Plugin/LatencyTestThread_p.hpp:32:11: note: forward declaration of ‘class uvw::TimerHandle’
   32 |     class TimerHandle;
      |           ^~~~~~~~~~~
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:90:21: error: invalid use of incomplete type ‘using std::__shared_ptr_access<uvw::Loop, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::Loop’ {aka ‘class uvw::Loop’}
   90 |                 loop->clear();
      |                     ^~
..../Qv2ray/src/Qv2rayBase/src/PluginInterface/include/QvPlugin/Handlers/LatencyTestHandler.hpp:7:11: note: forward declaration of ‘using std::__shared_ptr_access<uvw::Loop, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::Loop’ {aka ‘class uvw::Loop’}
    7 |     class Loop;
      |           ^~~~
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:91:21: error: invalid use of incomplete type ‘using std::__shared_ptr_access<uvw::Loop, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::Loop’ {aka ‘class uvw::Loop’}
   91 |                 loop->close();
      |                     ^~
..../Qv2ray/src/Qv2rayBase/src/PluginInterface/include/QvPlugin/Handlers/LatencyTestHandler.hpp:7:11: note: forward declaration of ‘using std::__shared_ptr_access<uvw::Loop, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::Loop’ {aka ‘class uvw::Loop’}
    7 |     class Loop;
      |           ^~~~
..../Qv2ray/src/Qv2rayBase/src/private/Plugin/LatencyTestThread_p.cpp:92:21: error: invalid use of incomplete type ‘using std::__shared_ptr_access<uvw::Loop, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::Loop’ {aka ‘class uvw::Loop’}
   92 |                 loop->stop();
      |                     ^~
..../Qv2ray/src/Qv2rayBase/src/PluginInterface/include/QvPlugin/Handlers/LatencyTestHandler.hpp:7:11: note: forward declaration of ‘using std::__shared_ptr_access<uvw::Loop, __gnu_cxx::_S_atomic, false, false>::element_type = class uvw::Loop’ {aka ‘class uvw::Loop’}
    7 |     class Loop;
      |           ^~~~
ninja: build stopped: subcommand failed.

Downgrading uvw seems to help a bit but produce another error:

[3/28] Building CXX object CMakeFiles/qv2ray.dir/src/ui/widgets/TagLineEditorWidget.cpp.o
FAILED: CMakeFiles/qv2ray.dir/src/ui/widgets/TagLineEditorWidget.cpp.o 
/usr/bin/c++ -DQAPPLICATION_CLASS=QApplication -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_SVG_LIB -DQT_WIDGETS_LIB -DQV2RAY_BASELIB_VERSION=\"3.0.0.0\" -DQV2RAY_BASELIB_VERSION_MAJOR=3 -DQV2RAY_BASELIB_VERSION_MINOR=0 -DQV2RAY_BASELIB_VERSION_PATCH=0 -DQV2RAY_BASELIB_VERSION_TWEAK=0 -DQV2RAY_BUILD_EXTRA_INFO="\"3.0.0 - Qv2ray 3.0, the new era.\"" -DQV2RAY_BUILD_INFO="\"Qv2ray (Made By Yourself)\"" -DQV2RAY_COMPONENT_AutoLaunchHelper=1 -DQV2RAY_COMPONENT_ConnectionModelHelper=1 -DQV2RAY_COMPONENT_FlowLayout=1 -DQV2RAY_COMPONENT_GeositeReader=1 -DQV2RAY_COMPONENT_GuiPluginHost=1 -DQV2RAY_COMPONENT_LogHighlighter=1 -DQV2RAY_COMPONENT_MessageBus=1 -DQV2RAY_COMPONENT_QJsonModel=1 -DQV2RAY_COMPONENT_QRCodeHelper=1 -DQV2RAY_COMPONENT_QueryParser=1 -DQV2RAY_COMPONENT_RouteSchemeIO=1 -DQV2RAY_COMPONENT_SpeedWidget=1 -DQV2RAY_COMPONENT_StyleManager=1 -DQV2RAY_COMPONENT_UpdateChecker=1 -DQV2RAY_DEFAULT_VASSETS_PATH=\"/usr/share/v2ray\" -DQV2RAY_DEFAULT_VCORE_PATH=\"/usr/bin/v2ray\" -DQV2RAY_NO_AUTOUPDATE=1 -DQV2RAY_VERSION_STRING=\"3.0.0-rc1\" -I..../Qv2ray/build -I..../Qv2ray -I..../Qv2ray/build/qv2ray_autogen/include -I..../Qv2ray/3rdparty/qt-qrcode/lib -I..../Qv2ray/src -I..../Qv2ray/src/components -I..../Qv2ray/src/Qv2rayBase/include -I..../Qv2ray/build/src/Qv2rayBase -I..../Qv2ray/src/Qv2rayBase/src/PluginInterface/include -I..../Qv2ray/3rdparty/SingleApplication -isystem /usr/include/qt6/QtCore -isystem /usr/include/qt6 -isystem /usr/lib/qt6/mkspecs/linux-g++ -isystem /usr/include/qt6/QtGui -isystem /usr/include/qt6/QtSvg -isystem /usr/include/qt6/QtNetwork -isystem /usr/include/qt6/QtWidgets -O3 -DNDEBUG -std=c++17 -mno-direct-extern-access -MD -MT CMakeFiles/qv2ray.dir/src/ui/widgets/TagLineEditorWidget.cpp.o -MF CMakeFiles/qv2ray.dir/src/ui/widgets/TagLineEditorWidget.cpp.o.d -o CMakeFiles/qv2ray.dir/src/ui/widgets/TagLineEditorWidget.cpp.o -c ..../Qv2ray/src/ui/widgets/TagLineEditorWidget.cpp
..../Qv2ray/src/ui/widgets/TagLineEditorWidget.cpp: In lambda function:
..../Qv2ray/src/ui/widgets/TagLineEditorWidget.cpp:23:80: error: converting to ‘TagEntryWidget::QPrivateSignal’ from initializer list would use explicit constructor ‘constexpr TagEntryWidget::QPrivateSignal::QPrivateSignal()’
   23 |     connect(deleteAction, &QAction::triggered, this, [this] { emit OnTagDeleted(text, {}); });
      |                                                                    ~~~~~~~~~~~~^~~~~~~~~~
In file included from /usr/include/qt6/QtCore/qnamespace.h:13,
                 from /usr/include/qt6/QtCore/qobjectdefs.h:12,
                 from /usr/include/qt6/QtCore/qobject.h:10,
                 from /usr/include/qt6/QtWidgets/qlayout.h:8,
                 from /usr/include/qt6/QtWidgets/QLayout:1,
                 from ..../Qv2ray/src/components/FlowLayout/FlowLayout.hpp:3,
                 from ..../Qv2ray/src/ui/widgets/TagLineEditorWidget.hpp:3,
                 from ..../Qv2ray/src/ui/widgets/TagLineEditorWidget.cpp:1:
..../Qv2ray/src/ui/widgets/TagLineEditorWidget.hpp:13:5: note: ‘constexpr TagEntryWidget::QPrivateSignal::QPrivateSignal()’ declared here
   13 |     Q_OBJECT
      |     ^~~~~~~~

I also tried to build qv2ray-git package from AUR but it produces 1st error (uvw's Loop related)

How to properly build this on Linux?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions