Project

General

Profile

Bug #1544

Quassel does not compile with qt 5.14.0

Added by buzo 7 months ago. Updated 23 days ago.

Status:
Confirmed
Priority:
High
Assignee:
-
Category:
-
Target version:
Start date:
12/24/2019
Due date:
% Done:

0%

Estimated time:
Version:
0.13.0
OS:
Any

Description

Compiling Quassel 0.13.1 with qt 5.14.0 gives compilation errors:

In file included from /usr/include/qt/QtCore/QDataStream:1,
                 from /build/quassel-core-small/src/quassel-0.13.1/src/common/syncableobject.h:24,
                 from /build/quassel-core-small/src/quassel-0.13.1/src/common/dccconfig.h:25,
                 from /build/quassel-core-small/src/quassel-0.13.1/src/common/dccconfig.cpp:21:
/usr/include/qt/QtCore/qdatastream.h:389:1: note: candidate: ‘typename std::enable_if<std::is_enum<_Tp>::value, QDataStream&>::type& operator<<(QDataStream&, const T&) [with T = DccConfig::PortSelectionMode; typename std::enable_if<std::is_enum<_Tp>::value, QDataStream&>::type = QDataStream&]’
  389 | operator<<(QDataStream &s, const T &t)
      | ^~~~~~~~
In file included from /build/quassel-core-small/src/quassel-0.13.1/src/common/dccconfig.cpp:25:
/build/quassel-core-small/src/quassel-0.13.1/src/common/types.h:152:14: note: candidate: ‘QDataStream& operator<<(QDataStream&, T) [with T = DccConfig::PortSelectionMode; <template-parameter-1-2> = void]’
  152 | QDataStream &operator<<(QDataStream &out, T value) {
      |              ^~~~~~~~
In file included from /usr/include/qt/QtCore/qobject.h:54,
                 from /usr/include/qt/QtCore/qiodevice.h:45,
                 from /usr/include/qt/QtNetwork/qabstractsocket.h:44,
                 from /usr/include/qt/QtNetwork/qhostaddress.h:48,
                 from /usr/include/qt/QtNetwork/QHostAddress:1,
                 from /build/quassel-core-small/src/quassel-0.13.1/src/common/dccconfig.h:23,
                 from /build/quassel-core-small/src/quassel-0.13.1/src/common/dccconfig.cpp:21:
/usr/include/qt/QtCore/qmetatype.h: In instantiation of ‘static void QtMetaTypePrivate::QMetaTypeFunctionHelper<T, Accepted>::Load(QDataStream&, void*) [with T = DccConfig::PortSelectionMode; bool Accepted = true]’:
/usr/include/qt/QtCore/qmetatype.h:1802:39:   required from ‘void qRegisterMetaTypeStreamOperators(const char*, T*) [with T = DccConfig::PortSelectionMode]’
/build/quassel-core-small/src/quassel-0.13.1/src/common/dccconfig.cpp:34:91:   required from here
/usr/include/qt/QtCore/qmetatype.h:823:16: error: ambiguous overload for ‘operator>>’ (operand types are ‘QDataStream’ and ‘DccConfig::PortSelectionMode’)
  823 |         stream >> *static_cast<T*>(t);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/qt/QtCore/QDataStream:1,
                 from /build/quassel-core-small/src/quassel-0.13.1/src/common/syncableobject.h:24,
                 from /build/quassel-core-small/src/quassel-0.13.1/src/common/dccconfig.h:25,
                 from /build/quassel-core-small/src/quassel-0.13.1/src/common/dccconfig.cpp:21:
/usr/include/qt/QtCore/qdatastream.h:394:1: note: candidate: ‘typename std::enable_if<std::is_enum<_Tp>::value, QDataStream&>::type& operator>>(QDataStream&, T&) [with T = DccConfig::PortSelectionMode; typename std::enable_if<std::is_enum<_Tp>::value, QDataStream&>::type = QDataStream&]’
  394 | operator>>(QDataStream &s, T &t)
      | ^~~~~~~~
In file included from /build/quassel-core-small/src/quassel-0.13.1/src/common/dccconfig.cpp:25:
/build/quassel-core-small/src/quassel-0.13.1/src/common/types.h:166:14: note: candidate: ‘QDataStream& operator>>(QDataStream&, T&) [with T = DccConfig::PortSelectionMode; <template-parameter-1-2> = void]’
  166 | QDataStream &operator>>(QDataStream &in, T &value) {
      |              ^~~~~~~~
[82/172] Building CXX object src/common/CMakeFiles/mod_common.dir/mod_common_autogen/mocs_compilation.cpp.o
[83/172] Building CXX object src/common/CMakeFiles/mod_common.dir/ctcpevent.cpp.o
[84/172] Building CXX object src/common/CMakeFiles/mod_common.dir/coreinfo.cpp.o
[85/172] Building CXX object src/common/CMakeFiles/mod_common.dir/event.cpp.o
[86/172] Building CXX object src/common/CMakeFiles/mod_common.dir/eventmanager.cpp.o
ninja: build stopped: subcommand failed.
==> ERROR: A failure occurred in build().

History

#1 Updated by crabbedhaloablution 6 months ago

There's a similar issue in musescore:
https://musescore.org/en/node/299162

They fixed it with a commit:
https://github.com/musescore/MuseScore/pull/5583
" Specializes template routines.

Qt 5.14 introduces serialisation/deserialisation for enum classes,
this results in ambiguous templates between qdatastream.h and preferences.h.
we specialize everything to workaround this."

#3 Updated by buzo 6 months ago

Thanks. When can I expect a new Quassel release containing these changes?

#4 Updated by buzo 3 months ago

The package built from the current Github version works fine on Arch Linux: https://aur.archlinux.org/packages/quassel-core-small-git/

Building version 0.13.1 still fails: https://aur.archlinux.org/packages/quassel-core-small/

Main bug report on Arch Linux: https://bugs.archlinux.org/task/65085

#5 Updated by digitalcircuit 23 days ago

We're hoping to have a 0.14-rc1 in the upcoming weeks, so this will hopefully be addressed soon. The Quassel CI was also updated to test against Debian testing/etc ( https://github.com/quassel/quassel/commit/1193d9d1f3f7c1c26e2c659b137046a31fe43bb4 ) to catch this sooner in the future.

Thanks for your patience!

#6 Updated by digitalcircuit 23 days ago

  • Status changed from New to Confirmed
  • Target version set to 0.14.0

Also available in: Atom PDF