Bug 347042

Summary: building modemmanager-qt while building KDE 5.3 fails
Product: [Frameworks and Libraries] frameworks-modemmanager-qt Reporter: Mario <spam>
Component: generalAssignee: Jan Grulich <jgrulich>
Status: RESOLVED FIXED    
Severity: crash CC: aspotashev, lamarque, lukas.tinkl
Priority: NOR    
Version First Reported In: 5.9.0   
Target Milestone: ---   
Platform: Debian testing   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Mario 2015-05-02 08:46:23 UTC
# kdesrc-build running: 'make'
# from directory: /opt/kde/build/modemmanager-qt
[  0%] Automatic moc for target fakeModem
[  0%] Built target fakeModem_automoc
[  1%] Automatic moc for target KF5ModemManagerQt_static
[  1%] Built target KF5ModemManagerQt_static_automoc
[  2%] Building CXX object src/CMakeFiles/KF5ModemManagerQt_static.dir/modem.cpp.o
/opt/kde/sources/modemmanager-qt/src/modem.cpp: In constructor ‘ModemManager::ModemPrivate::ModemPrivate(const QString&, ModemManager::Modem*)’:
/opt/kde/sources/modemmanager-qt/src/modem.cpp:210:83: error: no matching function for call to ‘QTimer::singleShot(int, ModemManager::ModemPrivate*, void (ModemManager::ModemPrivate::*)())’
         QTimer::singleShot(0, this, &ModemManager::ModemPrivate::initializeBearers);
                                                                                   ^
/opt/kde/sources/modemmanager-qt/src/modem.cpp:210:83: note: candidates are:
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/QtCore:77:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtDBus/QtDBusDepends:2,
                 from /usr/include/x86_64-linux-gnu/qt5/QtDBus/QtDBus:3,
                 from /opt/kde/sources/modemmanager-qt/src/generictypes.h:30,
                 from /opt/kde/sources/modemmanager-qt/src/bearer.h:30,
                 from /opt/kde/sources/modemmanager-qt/src/modem.h:37,
                 from /opt/kde/sources/modemmanager-qt/src/modem.cpp:25:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtimer.h:81:17: note: static void QTimer::singleShot(int, const QObject*, const char*)
     static void singleShot(int msec, const QObject *receiver, const char *member);
                 ^
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtimer.h:81:17: note:   no known conversion for argument 3 from ‘void (ModemManager::ModemPrivate::*)()’ to ‘const char*’
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtimer.h:82:17: note: static void QTimer::singleShot(int, Qt::TimerType, const QObject*, const char*)
     static void singleShot(int msec, Qt::TimerType timerType, const QObject *receiver, const char *member);
                 ^
/usr/include/x86_64-linux-gnu/qt5/QtCore/qtimer.h:82:17: note:   candidate expects 4 arguments, 3 provided
src/CMakeFiles/KF5ModemManagerQt_static.dir/build.make:146: recipe for target 'src/CMakeFiles/KF5ModemManagerQt_static.dir/modem.cpp.o' failed
make[2]: *** [src/CMakeFiles/KF5ModemManagerQt_static.dir/modem.cpp.o] Error 1
CMakeFiles/Makefile2:982: recipe for target 'src/CMakeFiles/KF5ModemManagerQt_static.dir/all' failed
make[1]: *** [src/CMakeFiles/KF5ModemManagerQt_static.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

Reproducible: Always
Comment 1 Lamarque V. Souza 2015-05-02 12:25:46 UTC
According to http://doc.qt.io/qt-5/qtimer.html#singleShot-3 this singleShot() method was introduced in Qt 5.4. We can add a #ifdef to use it only with Qt >= 5.4 and fallback to old SLOT() macro when it is not available. This code is for Frameworks 5.10, Frameworks 5.9 requires Qt 5.2. If 5.10 keeps the Qt 5.2 requirement using #ifdef is the best solution.
Comment 2 Lamarque V. Souza 2015-05-02 12:41:23 UTC
Git commit 9e6e4d8672c45c3806a881950f600cd973f58349 by Lamarque V. Souza.
Committed on 02/05/2015 at 12:40.
Pushed by lvsouza into branch 'master'.

Bump Qt required version to 5.4 due to changes in
7ab9feb2c1a7f6989bfe99e53b42f6a0b597e0ff

M  +1    -1    CMakeLists.txt

http://commits.kde.org/libmm-qt/9e6e4d8672c45c3806a881950f600cd973f58349
Comment 3 Alexander Potashev 2016-03-11 22:52:14 UTC
modemmanager-qt-5.3.0 has never been released, but I guess 5.9.0 was meant here because Plasma-5.3.0 depends on modemmanager-qt-5.9.0.