I fixed the qMax issue I mentioned in the original bug report and a
couple of similar qMin issues.
However I have now run into an issue I have no idea how to tackle and
google isn't helping much.
sip: /qgis-2.0.1/python/core/qgsclipper.sip:44:
QgsClipper::trimFeature() unsupported function argument type - provide
%MethodCode and a C++ signature
So i'm going to have to punt on this bug here until someone more
knowlageable comes along.
I also noticed that the previous upload had already introduced an arm
related patch and took a look at it. It looked obviously broken and
looking closer confirmed this. It was broken in two ways, firstly one of
Konstantinos's new functions was under an andriod ifdef. Secondly his
new functions converted reference parameters on input but not on output.
I fixed both of these but have not tested the fixes.
A debdiff of progress so-far is attatched.
diff -Nru qgis-2.0.1/debian/changelog qgis-2.0.1/debian/changelog
--- qgis-2.0.1/debian/changelog 2014-01-18 07:40:41.000000000 +0000
+++ qgis-2.0.1/debian/changelog 2014-02-06 08:24:08.000000000 +0000
@@ -1,3 +1,12 @@
+qgis (2.0.1-1.1) UNRELEASED; urgency=medium
+
+ * Patch for BTS, no intent to NMU
+ * Fix qreal vs double issues with qmin and qmax
+ * Fix broken arm Patch by Konstantinos Margaritis
+ * Disable python stuff on arm* due to qgis error
+
+ -- Peter Michael Green <[email protected]> Thu, 06 Feb 2014 06:30:03 +0000
+
qgis (2.0.1-1) unstable; urgency=low
[ Jürgen E. Fischer ]
diff -Nru qgis-2.0.1/debian/patches/fix-qreal-vs-double.patch
qgis-2.0.1/debian/patches/fix-qreal-vs-double.patch
--- qgis-2.0.1/debian/patches/fix-qreal-vs-double.patch 1970-01-01
00:00:00.000000000 +0000
+++ qgis-2.0.1/debian/patches/fix-qreal-vs-double.patch 2014-02-06
07:55:03.000000000 +0000
@@ -0,0 +1,48 @@
+Description: Fix qreal vs double.
+ In qt4 on arm architectures qreal is defined as float while on other
+ architectures it is defined as double. This can cause problems if qreal
+ and double are carelessly mixed.
+
+ In this particular case the problem is that qMin/qMax are templates defined
+ to take two parameters of the same type. If two different types are passed
+ in then C++ can't resolve what type the template parameter should be and
+ bails out. The fix is simple, typecast one of the parameters so they
+ match.
+
+Author: Peter Michael Green <[email protected]>
+
+Index: qgis-2.0.1/src/app/gps/qwtpolar-1.0/qwt_polar_curve.cpp
+===================================================================
+--- qgis-2.0.1.orig/src/app/gps/qwtpolar-1.0/qwt_polar_curve.cpp
2014-02-06 06:58:28.000000000 +0000
++++ qgis-2.0.1/src/app/gps/qwtpolar-1.0/qwt_polar_curve.cpp 2014-02-06
06:58:28.000000000 +0000
+@@ -433,7 +433,7 @@
+
+ if ( !clipRect.isEmpty() )
+ {
+- double off = qCeil( qMax( 1.0, painter->pen().widthF() ) );
++ double off = qCeil( qMax((qreal)1.0,painter->pen().widthF() ) );
+ clipRect = clipRect.toRect().adjusted( -off, -off, off, off );
+ polyline = QwtClipper::clipPolygonF( clipRect, polyline );
+ }
+Index: qgis-2.0.1/src/app/gps/qwtpolar-1.0/qwt_polar_layout.cpp
+===================================================================
+--- qgis-2.0.1.orig/src/app/gps/qwtpolar-1.0/qwt_polar_layout.cpp
2013-09-10 23:06:52.000000000 +0000
++++ qgis-2.0.1/src/app/gps/qwtpolar-1.0/qwt_polar_layout.cpp 2014-02-06
07:54:01.000000000 +0000
+@@ -278,7 +278,7 @@
+ // We don't allow vertical legends to take more than
+ // half of the available space.
+
+- dim = qMin( hint.width(), rect.width() * d_data->legendRatio );
++ dim = qMin( hint.width(), (qreal)(rect.width() * d_data->legendRatio)
);
+
+ if ( !( options & IgnoreScrollbars ) )
+ {
+@@ -293,7 +293,7 @@
+ }
+ else
+ {
+- dim = qMin( hint.height(), rect.height() * d_data->legendRatio );
++ dim = qMin( hint.height(), (qreal)(rect.height() *
d_data->legendRatio) );
+ dim = qMax( dim, d_data->layoutData.legend.hScrollBarHeight );
+ }
+
diff -Nru qgis-2.0.1/debian/patches/qgis_arm.patch
qgis-2.0.1/debian/patches/qgis_arm.patch
--- qgis-2.0.1/debian/patches/qgis_arm.patch 2014-01-18 07:40:41.000000000
+0000
+++ qgis-2.0.1/debian/patches/qgis_arm.patch 2014-02-06 08:13:23.000000000
+0000
@@ -1,10 +1,15 @@
Description: On armel/armhf qreal is typedef'ed to float not double.
+ This patch adds qreal versions of some functions on arm. It was originally
+ writen by Konstantinos Margaritis and later fixed by Peter Michael Green
Author: Konstantinos Margaritis <[email protected]>
+Author: Peter Michael Green <[email protected]>
Bug-Debian: http://bugs.debian.org/691333
-Last-Update: 2014-01-17
---- a/src/core/qgscoordinatetransform.h
-+++ b/src/core/qgscoordinatetransform.h
-@@ -154,6 +154,9 @@ class CORE_EXPORT QgsCoordinateTransform
+Last-Update: 2014-02-06
+Index: qgis-2.0.1/src/core/qgscoordinatetransform.h
+===================================================================
+--- qgis-2.0.1.orig/src/core/qgscoordinatetransform.h 2013-09-10
23:06:52.000000000 +0000
++++ qgis-2.0.1/src/core/qgscoordinatetransform.h 2014-02-06
06:17:14.000000000 +0000
+@@ -154,6 +154,9 @@
// and y variables in place. The second one works with good old-fashioned
// C style arrays.
void transformInPlace( double& x, double& y, double &z,
TransformDirection direction = ForwardTransform ) const;
@@ -14,9 +19,11 @@
//! @note not available in python bindings
void transformInPlace( QVector<double>& x, QVector<double>& y,
QVector<double>& z,
---- a/src/core/qgsmaptopixel.h
-+++ b/src/core/qgsmaptopixel.h
-@@ -66,6 +66,9 @@ class CORE_EXPORT QgsMapToPixel
+Index: qgis-2.0.1/src/core/qgsmaptopixel.h
+===================================================================
+--- qgis-2.0.1.orig/src/core/qgsmaptopixel.h 2013-09-10 23:06:52.000000000
+0000
++++ qgis-2.0.1/src/core/qgsmaptopixel.h 2014-02-06 06:17:14.000000000
+0000
+@@ -66,6 +66,9 @@
given coordinates in place. Intended as a fast way to do the
transform. */
void transformInPlace( double& x, double& y ) const;
@@ -26,31 +33,35 @@
/* Transform device coordinates to map coordinates. Modifies the
given coordinates in place. Intended as a fast way to do the
---- a/src/core/qgsmaptopixel.cpp
-+++ b/src/core/qgsmaptopixel.cpp
-@@ -138,6 +138,14 @@ void QgsMapToPixel::transformInPlace( do
+Index: qgis-2.0.1/src/core/qgsmaptopixel.cpp
+===================================================================
+--- qgis-2.0.1.orig/src/core/qgsmaptopixel.cpp 2013-09-10 23:06:52.000000000
+0000
++++ qgis-2.0.1/src/core/qgsmaptopixel.cpp 2014-02-06 08:04:26.000000000
+0000
+@@ -138,6 +138,14 @@
y = yMax - ( y - yMin ) / mMapUnitsPerPixel;
}
+#ifdef QT_ARCH_ARM
+void QgsMapToPixel::transformInPlace( qreal& x, qreal& y ) const
+{
-+ double xd = (double) x, yd = (double) y;
-+ transformInPlace(xd, yd);
++ x = ( x - xMin ) / mMapUnitsPerPixel;
++ y = yMax - ( y - yMin ) / mMapUnitsPerPixel;
+}
+#endif
+
void QgsMapToPixel::transformInPlace( QVector<double>& x,
QVector<double>& y ) const
{
-@@ -161,3 +169,4 @@ void QgsMapToPixel::transformInPlace( QV
+@@ -161,3 +169,4 @@
transformInPlace( x[i], y[i] );
}
#endif
+
---- a/src/core/qgscoordinatetransform.cpp
-+++ b/src/core/qgscoordinatetransform.cpp
-@@ -416,6 +416,15 @@ void QgsCoordinateTransform::transformIn
+Index: qgis-2.0.1/src/core/qgscoordinatetransform.cpp
+===================================================================
+--- qgis-2.0.1.orig/src/core/qgscoordinatetransform.cpp 2013-09-10
23:06:52.000000000 +0000
++++ qgis-2.0.1/src/core/qgscoordinatetransform.cpp 2014-02-06
08:08:46.000000000 +0000
+@@ -388,6 +388,17 @@
}
}
@@ -60,9 +71,11 @@
+{
+ double xd = (double) x, yd = (double) y;
+ transformInPlace(xd, yd, z, direction);
++ x=xd;
++ y=yd;
+}
+#endif
+
- void QgsCoordinateTransform::transformInPlace(
- QVector<float>& x, QVector<float>& y, QVector<float>& z,
- TransformDirection direction ) const
+ #ifdef ANDROID
+ void QgsCoordinateTransform::transformInPlace( float& x, float& y, float& z,
+ TransformDirection direction ) const
diff -Nru qgis-2.0.1/debian/patches/series qgis-2.0.1/debian/patches/series
--- qgis-2.0.1/debian/patches/series 2014-01-18 07:40:41.000000000 +0000
+++ qgis-2.0.1/debian/patches/series 2014-02-06 06:58:28.000000000 +0000
@@ -26,3 +26,4 @@
python-env.patch
wms-c-don-t-crash-if-tile-matrix-set-isn-t-available.patch
use-local-icon.patch
+fix-qreal-vs-double.patch