Skip to content

Fails to build with Qt 6.9(.1): error: no match for ‘operator==’ (operand types are ‘Flipper::Zero::HardwareInfo’ and ‘Flipper::Zero::HardwareInfo’) #237

@thican

Description

@thican

Describe the bug
Trying to build the qFlipper GUI with Qt 6.9.1 following build instructions from README.md, it fails during the make step.

To Reproduce

  1. Update your system or build environment with Qt 6.9.1;
  2. Query instructions for "Standalone build" on README.md;
  3. execute the make step;
  4. See error in build log or in your terminal.

Expected behavior
Build process should build without issues, at least as it was with Qt 6.8 and prior.

Actual behavior

It fails with the following error from GCC

Partial log from the following commands, from project directory, with branch over commit bfce851, tag 1.3.3:

mkdir build && cd build
qmake6 PREFIX="/usr" -spec linux-g++ CONFIG+=qtquickcompiler DEFINES+=DISABLE_APPLICATION_UPDATES ../qFlipper.pro
make qmake_all
make
x86_64-pc-linux-gnu-g++ -c -march=znver2 -O2 -pipe -fPIC -Wall -Wextra -mno-direct-extern-access -D_REENTRANT -DDISABLE_APPLICATION_UPDATES -DUSB_BACKEND_LIBUSB -DAPP_NAME=\"qFlipper\" -DAPP_VERSION=\"1.3.3\" -DAPP_COMMIT=\"bfce851d\" -DAPP_TIMESTAMP=1699609231 -DPB_ENABLE_MALLOC -DQT_NO_DEBUG -DQT_SERIALPORT_LIB -DQT_NETWORK_LIB -DQT_CORE5COMPAT_LIB -DQT_CORE_LIB -I. -I../dfu -I../plugins/protobufinterface -I/usr/include/libusb-1.0 -I/usr/include/qt6 -I/usr/include/qt6/QtSerialPort -I/usr/include/qt6/QtNetwork -I/usr/include/qt6/QtCore5Compat -I/usr/include/qt6/QtCore -I. -I/usr/lib64/qt6/mkspecs/linux-g++ -o moc_recoveryinterface.o moc_recoveryinterface.cpp
In file included from moc_deviceinfo.cpp:12:
/usr/include/qt6/QtCore/qtmochelpers.h: In instantiation of ‘bool QtMocHelpers::setProperty(Prop&, Value&&) [with Prop = Flipper::Zero::HardwareInfo; Value = Flipper::Zero::HardwareInfo&]’:
moc_deviceinfo.cpp:333:42:   required from here
  333 |         case 5: QtMocHelpers::setProperty(_t->hardware, *reinterpret_cast<Flipper::Zero::HardwareInfo*>(_v)); break;
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/qt6/QtCore/qtmochelpers.h:123:18: error: no match for ‘operator==’ (operand types are ‘Flipper::Zero::HardwareInfo’ and ‘Flipper::Zero::HardwareInfo’)
  123 |     if (property == value)
      |         ~~~~~~~~~^~~~~~~~
/usr/include/qt6/QtCore/qtmochelpers.h: In instantiation of ‘bool QtMocHelpers::setProperty(Prop&, Value&&) [with Prop = Flipper::Zero::SoftwareInfo; Value = Flipper::Zero::SoftwareInfo&]’:
moc_deviceinfo.cpp:334:42:   required from here
  334 |         case 6: QtMocHelpers::setProperty(_t->firmware, *reinterpret_cast<Flipper::Zero::SoftwareInfo*>(_v)); break;
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/qt6/QtCore/qtmochelpers.h:123:18: error: no match for ‘operator==’ (operand types are ‘Flipper::Zero::SoftwareInfo’ and ‘Flipper::Zero::SoftwareInfo’)
  123 |     if (property == value)
      |         ~~~~~~~~~^~~~~~~~
/usr/include/qt6/QtCore/qtmochelpers.h: In instantiation of ‘bool QtMocHelpers::setProperty(Prop&, Value&&) [with Prop = Flipper::Zero::StorageInfo; Value = Flipper::Zero::StorageInfo&]’:
moc_deviceinfo.cpp:335:42:   required from here
  335 |         case 7: QtMocHelpers::setProperty(_t->storage, *reinterpret_cast<Flipper::Zero::StorageInfo*>(_v)); break;
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/qt6/QtCore/qtmochelpers.h:123:18: error: no match for ‘operator==’ (operand types are ‘Flipper::Zero::StorageInfo’ and ‘Flipper::Zero::StorageInfo’)
  123 |     if (property == value)
      |         ~~~~~~~~~^~~~~~~~
x86_64-pc-linux-gnu-g++ -c -march=znver2 -O2 -pipe -fPIC -Wall -Wextra -mno-direct-extern-access -D_REENTRANT -DDISABLE_APPLICATION_UPDATES -DUSB_BACKEND_LIBUSB -DAPP_NAME=\"qFlipper\" -DAPP_VERSION=\"1.3.3\" -DAPP_COMMIT=\"bfce851d\" -DAPP_TIMESTAMP=1699609231 -DPB_ENABLE_MALLOC -DQT_NO_DEBUG -DQT_SERIALPORT_LIB -DQT_NETWORK_LIB -DQT_CORE5COMPAT_LIB -DQT_CORE_LIB -I. -I../dfu -I../plugins/protobufinterface -I/usr/include/libusb-1.0 -I/usr/include/qt6 -I/usr/include/qt6/QtSerialPort -I/usr/include/qt6/QtNetwork -I/usr/include/qt6/QtCore5Compat -I/usr/include/qt6/QtCore -I. -I/usr/lib64/qt6/mkspecs/linux-g++ -o moc_systemupdateoperation.o moc_systemupdateoperation.cpp
make[1]: *** [Makefile:3716: moc_deviceinfo.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory '/var/tmp/portage/net-wireless/qflipper-1.3.3-r2/work/qFlipper-1.3.3/backend'
make: *** [Makefile:77: sub-backend-make_first] Error 2

More details from Gentoo’s bug report 959273.

Additional troubleshooting

  1. Does the issue persist if you try multiple times?
  • Yes it does.
  1. Does reconnecting/rebooting Flipper solve it?
  • Unrelated.

The report must also include at least one of the following:

  1. A FULL LOG of this application run. (see below).
  • Non applicable.
  1. A screenshot of the application window (if it is a graphical issue).
  • Non applicable.

Additional context

No additional context

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions