[rkward:bugs] #137 rkward 0.6.3 fails to compile on Linux/ARM

Thomas Friedrichsmeier tfry at users.sf.net
Thu Dec 31 22:11:14 UTC 2015


- **status**: open --> closed-fixed
- **Comment**:

Applied in 0.6.4. Thanks!



---

** [bugs:#137] rkward 0.6.3 fails to compile on Linux/ARM**

**Status:** closed-fixed
**Group:** CRASH
**Created:** Wed Mar 11, 2015 12:39 AM UTC by Tom 'spot' Callaway
**Last Updated:** Wed Mar 11, 2015 12:39 AM UTC
**Owner:** nobody


In the process of updating rkward to 0.6.3 (against R 3.1.3) in Fedora, it was discovered that 0.6.3 failed to compile on ARM. The specific failure was:

~~~~~~~
/builddir/build/BUILD/rkward-0.6.3/rkward/plugin/rkpluginspinbox.cpp: In constructor 'RKPluginSpinBox::RKPluginSpinBox(const QDomElement&, RKComponent*, QWidget*)':
/builddir/build/BUILD/rkward-0.6.3/rkward/plugin/rkpluginspinbox.cpp:53:97: error: no matching function for call to 'qMax(double&, qreal)'
   double initial = xml->getDoubleAttribute (element, "initial", qMin (max, qMax (min, qreal(0.0))), DL_INFO);
                                                                                                 ^
/builddir/build/BUILD/rkward-0.6.3/rkward/plugin/rkpluginspinbox.cpp:53:97: note: candidate is:
In file included from /usr/include/QtCore/qatomic.h:45:0,
                 from /usr/include/QtCore/qhash.h:45,
                 from /usr/include/QtCore/QHash:1,
                 from /builddir/build/BUILD/rkward-0.6.3/rkward/plugin/rkcomponent.h:21,
                 from /builddir/build/BUILD/rkward-0.6.3/rkward/plugin/rkpluginspinbox.h:20,
                 from /builddir/build/BUILD/rkward-0.6.3/rkward/plugin/rkpluginspinbox.cpp:17:
/usr/include/QtCore/qglobal.h:1217:34: note: template<class T> const T& qMax(const T&, const T&)
 Q_DECL_CONSTEXPR inline const T &qMax(const T &a, const T &b) { return (a < b) ? b : a; }
                                  ^
/usr/include/QtCore/qglobal.h:1217:34: note:   template argument deduction/substitution failed:
/builddir/build/BUILD/rkward-0.6.3/rkward/plugin/rkpluginspinbox.cpp:53:97: note:   deduced conflicting types for parameter 'const T' ('double' and 'qreal {aka float}')
   double initial = xml->getDoubleAttribute (element, "initial", qMin (max, qMax (min, qreal(0.0))), DL_INFO);
~~~~~~~

This failure has been noted in other QT apps, specifically, it is the same issue noted in Debian Bug 638813: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=638813

The fix is the same, to cast the necessary parameters of qMax to a double:

~~~~~~~
diff -up rkward-0.6.3/rkward/plugin/rkpluginspinbox.cpp.armfix rkward-0.6.3/rkward/plugin/rkpluginspinbox.cpp
--- rkward-0.6.3/rkward/plugin/rkpluginspinbox.cpp.armfix	2015-03-10 19:37:12.501771989 -0400
+++ rkward-0.6.3/rkward/plugin/rkpluginspinbox.cpp	2015-03-10 19:37:45.131562327 -0400
@@ -50,7 +50,7 @@ RKPluginSpinBox::RKPluginSpinBox (const
        if (!intmode) {
                double min = xml->getDoubleAttribute (element, "min", -FLT_MAX, DL_INFO);
                double max = xml->getDoubleAttribute (element, "max", FLT_MAX, DL_INFO);
-               double initial = xml->getDoubleAttribute (element, "initial", qMin (max, qMax (min, qreal(0.0))), DL_INFO);
+               double initial = xml->getDoubleAttribute (element, "initial", qMin (max, qMax (min, double(qreal(0.0)))), DL_INFO);
                int default_precision = xml->getIntAttribute (element, "default_precision", 2, DL_INFO);
                int max_precision = xml->getIntAttribute (element, "max_precision", 8, DL_INFO);

diff -up rkward-0.6.3/rkward/rbackend/rkwarddevice/rkgraphicsdevice_frontendtransmitter.cpp.armfix rkward-0.6.3/rkward/rbackend/rkwarddevice/rkgraphicsdevice_frontendtransmitter.cpp
--- rkward-0.6.3/rkward/rbackend/rkwarddevice/rkgraphicsdevice_frontendtransmitter.cpp.armfix	2015-03-10 20:11:02.363493214 -0400
+++ rkward-0.6.3/rkward/rbackend/rkwarddevice/rkgraphicsdevice_frontendtransmitter.cpp	2015-03-10 20:11:13.903466769 -0400
@@ -105,7 +105,7 @@ static QPen readSimplePen (QDataStream &
 	instream >> lwd >> lty;
 	if (!col.isValid () || (lty == -1L)) return QPen (Qt::NoPen);
 
-	lwd = qMax (qreal(1.0), lwd);	// minimum 1 px as in X11 device
+	lwd = qMax (double(qreal(1.0)), lwd);	// minimum 1 px as in X11 device
 	QPen ret;
 	if (lty != 0) {	// solid
 		QVector<qreal> dashes;
~~~~~~~

I waive any copyright on this patch, and when that is not possible, grant permission for it to be used under the same license as the rest of RKWard.


---

Sent from sourceforge.net because rkward-devel at kde.org is subscribed to https://sourceforge.net/p/rkward/bugs/

To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/rkward/admin/bugs/options.  Or, if this is a mailing list, you can unsubscribe from the mailing list.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/rkward-devel/attachments/20151231/66468829/attachment-0001.html>


More information about the rkward-devel mailing list