Add upstream patch to fix builds on ARM systems

This commit is contained in:
Volker Fröhlich 2015-03-10 00:31:47 +01:00
parent 35853ac786
commit 9833ffb114
2 changed files with 438 additions and 1 deletions

430
qgis-2.8.1-arm.patch Normal file
View File

@ -0,0 +1,430 @@
commit 1aff7335d004bc410eb61e1436ee7648716f9319
Author: Juergen E. Fischer <jef@norbit.de>
Date: Mon Mar 9 09:27:27 2015 +0100
fix arm build
diff --git a/src/app/qgsdecorationgrid.cpp b/src/app/qgsdecorationgrid.cpp
index ba2f8c0..ba7735d 100644
--- a/src/app/qgsdecorationgrid.cpp
+++ b/src/app/qgsdecorationgrid.cpp
@@ -217,14 +217,14 @@ void QgsDecorationGrid::render( QPainter * p )
// p->setPen( mGridPen );
- QList< QPair< double, QLineF > > verticalLines;
+ QList< QPair< qreal, QLineF > > verticalLines;
yGridLines( verticalLines );
- QList< QPair< double, QLineF > > horizontalLines;
+ QList< QPair< qreal, QLineF > > horizontalLines;
xGridLines( horizontalLines );
//QgsDebugMsg( QString("grid has %1 vertical and %2 horizontal lines").arg( verticalLines.size() ).arg( horizontalLines.size() ) );
- QList< QPair< double, QLineF > >::const_iterator vIt = verticalLines.constBegin();
- QList< QPair< double, QLineF > >::const_iterator hIt = horizontalLines.constBegin();
+ QList< QPair< qreal, QLineF > >::const_iterator vIt = verticalLines.constBegin();
+ QList< QPair< qreal, QLineF > >::const_iterator hIt = horizontalLines.constBegin();
//simpler approach: draw vertical lines first, then horizontal ones
if ( mGridStyle == QgsDecorationGrid::Line )
@@ -338,7 +338,7 @@ void QgsDecorationGrid::render( QPainter * p )
}
}
-void QgsDecorationGrid::drawCoordinateAnnotations( QPainter* p, const QList< QPair< double, QLineF > >& hLines, const QList< QPair< double, QLineF > >& vLines )
+void QgsDecorationGrid::drawCoordinateAnnotations( QPainter* p, const QList< QPair< qreal, QLineF > >& hLines, const QList< QPair< qreal, QLineF > >& vLines )
{
if ( !p )
{
@@ -346,7 +346,7 @@ void QgsDecorationGrid::drawCoordinateAnnotations( QPainter* p, const QList< QPa
}
QString currentAnnotationString;
- QList< QPair< double, QLineF > >::const_iterator it = hLines.constBegin();
+ QList< QPair< qreal, QLineF > >::const_iterator it = hLines.constBegin();
for ( ; it != hLines.constEnd(); ++it )
{
currentAnnotationString = QString::number( it->first, 'f', mGridAnnotationPrecision );
@@ -566,7 +566,7 @@ QPolygonF canvasExtent()
return poly;
}
-int QgsDecorationGrid::xGridLines( QList< QPair< double, QLineF > >& lines ) const
+int QgsDecorationGrid::xGridLines( QList< QPair< qreal, QLineF > >& lines ) const
{
// prepare horizontal lines
lines.clear();
@@ -612,7 +612,7 @@ int QgsDecorationGrid::xGridLines( QList< QPair< double, QLineF > >& lines ) con
return 0;
}
-int QgsDecorationGrid::yGridLines( QList< QPair< double, QLineF > >& lines ) const
+int QgsDecorationGrid::yGridLines( QList< QPair< qreal, QLineF > >& lines ) const
{
// prepare vertical lines
diff --git a/src/app/qgsdecorationgrid.h b/src/app/qgsdecorationgrid.h
index 22f4549..3ad7ebf 100644
--- a/src/app/qgsdecorationgrid.h
+++ b/src/app/qgsdecorationgrid.h
@@ -199,7 +199,7 @@ class APP_EXPORT QgsDecorationGrid: public QgsDecorationItem
@param p drawing painter
@param hLines horizontal coordinate lines in item coordinates
@param vLines vertical coordinate lines in item coordinates*/
- void drawCoordinateAnnotations( QPainter* p, const QList< QPair< double, QLineF > >& hLines, const QList< QPair< double, QLineF > >& vLines );
+ void drawCoordinateAnnotations( QPainter* p, const QList< QPair< qreal, QLineF > >& hLines, const QList< QPair< qreal, QLineF > >& vLines );
void drawCoordinateAnnotation( QPainter* p, const QPointF& pos, QString annotationString );
/**Draws a single annotation
@param p drawing painter
@@ -209,10 +209,10 @@ class APP_EXPORT QgsDecorationGrid: public QgsDecorationItem
void drawAnnotation( QPainter* p, const QPointF& pos, int rotation, const QString& annotationText );
/**Returns the grid lines with associated coordinate value
@return 0 in case of success*/
- int xGridLines( QList< QPair< double, QLineF > >& lines ) const;
+ int xGridLines( QList< QPair< qreal, QLineF > >& lines ) const;
/**Returns the grid lines for the y-coordinates. Not vertical in case of rotation
@return 0 in case of success*/
- int yGridLines( QList< QPair< double, QLineF > >& lines ) const;
+ int yGridLines( QList< QPair< qreal, QLineF > >& lines ) const;
/**Returns the item border of a point (in item coordinates)*/
Border borderForLineCoord( const QPointF& point, QPainter* p ) const;
diff --git a/src/app/qgsmapmouseevent.cpp b/src/app/qgsmapmouseevent.cpp
index 997aaa0..631c750 100644
--- a/src/app/qgsmapmouseevent.cpp
+++ b/src/app/qgsmapmouseevent.cpp
@@ -86,8 +86,7 @@ void QgsMapMouseEvent::snapPoint()
QPoint QgsMapMouseEvent::mapToPixelCoordinates( QgsMapCanvas* canvas, const QgsPoint& point )
{
- double x = point.x();
- double y = point.y();
+ qreal x = point.x(), y = point.y();
canvas->mapSettings().mapToPixel().transformInPlace( x, y );
diff --git a/src/core/composer/qgscomposermapgrid.cpp b/src/core/composer/qgscomposermapgrid.cpp
index 7d790e6..7656be2 100644
--- a/src/core/composer/qgscomposermapgrid.cpp
+++ b/src/core/composer/qgscomposermapgrid.cpp
@@ -1838,7 +1838,7 @@ bool QgsComposerMapGrid::shouldShowDivisionForDisplayMode( const QgsComposerMapG
|| ( mode == QgsComposerMapGrid::LongitudeOnly && coordinate == QgsComposerMapGrid::Longitude );
}
-bool sortByDistance( const QPair<double, QgsComposerMapGrid::BorderSide>& a, const QPair<double, QgsComposerMapGrid::BorderSide>& b )
+bool sortByDistance( const QPair<qreal , QgsComposerMapGrid::BorderSide>& a, const QPair<qreal , QgsComposerMapGrid::BorderSide>& b )
{
return a.first < b.first;
}
@@ -1885,7 +1885,7 @@ QgsComposerMapGrid::BorderSide QgsComposerMapGrid::borderForLineCoord( const QPo
}
//otherwise, guess side based on closest map side to point
- QList< QPair<double, QgsComposerMapGrid::BorderSide > > distanceToSide;
+ QList< QPair<qreal, QgsComposerMapGrid::BorderSide > > distanceToSide;
distanceToSide << qMakePair( p.x(), QgsComposerMapGrid::Left );
distanceToSide << qMakePair( mComposerMap->rect().width() - p.x(), QgsComposerMapGrid::Right );
distanceToSide << qMakePair( p.y(), QgsComposerMapGrid::Top );
diff --git a/src/core/qgsgeometry.cpp b/src/core/qgsgeometry.cpp
index 81753c4..ab7281a 100644
--- a/src/core/qgsgeometry.cpp
+++ b/src/core/qgsgeometry.cpp
@@ -4679,7 +4679,7 @@ bool QgsGeometry::convertToMultiType()
void QgsGeometry::transformVertex( QgsWkbPtr &wkbPtr, const QTransform& trans, bool hasZValue )
{
- double x, y, rotated_x, rotated_y;
+ qreal x, y, rotated_x, rotated_y;
QgsWkbPtr tmp = wkbPtr;
tmp >> x >> y;
diff --git a/src/core/qgsgeometry.h b/src/core/qgsgeometry.h
index 46f4a7f..36d23ac 100644
--- a/src/core/qgsgeometry.h
+++ b/src/core/qgsgeometry.h
@@ -686,12 +686,18 @@ class CORE_EXPORT QgsWkbPtr
inline const QgsWkbPtr &operator>>( unsigned int &v ) const { memcpy( &v, mP, sizeof( v ) ); mP += sizeof( v ); return *this; }
inline const QgsWkbPtr &operator>>( char &v ) const { memcpy( &v, mP, sizeof( v ) ); mP += sizeof( v ); return *this; }
inline const QgsWkbPtr &operator>>( QGis::WkbType &v ) const { memcpy( &v, mP, sizeof( v ) ); mP += sizeof( v ); return *this; }
+#ifdef QT_ARCH_ARM
+ inline const QgsWkbPtr &operator>>( qreal &v ) const { double d; memcpy( &d, mP, sizeof( d ) ); mP += sizeof( d ); v=d; return *this; }
+#endif
inline QgsWkbPtr &operator<<( const double &v ) { memcpy( mP, &v, sizeof( v ) ); mP += sizeof( v ); return *this; }
inline QgsWkbPtr &operator<<( const int &v ) { memcpy( mP, &v, sizeof( v ) ); mP += sizeof( v ); return *this; }
inline QgsWkbPtr &operator<<( const unsigned int &v ) { memcpy( mP, &v, sizeof( v ) ); mP += sizeof( v ); return *this; }
inline QgsWkbPtr &operator<<( const char &v ) { memcpy( mP, &v, sizeof( v ) ); mP += sizeof( v ); return *this; }
inline QgsWkbPtr &operator<<( const QGis::WkbType &v ) { memcpy( mP, &v, sizeof( v ) ); mP += sizeof( v ); return *this; }
+#ifdef QT_ARCH_ARM
+ inline QgsWkbPtr &operator<<( const qreal &v ) { double d = v; memcpy( mP, &d, sizeof( d ) ); mP += sizeof( d ); return *this; }
+#endif
inline void operator+=( int n ) { mP += n; }
@@ -710,6 +716,9 @@ class CORE_EXPORT QgsConstWkbPtr
inline const QgsConstWkbPtr &operator>>( unsigned int &v ) const { memcpy( &v, mP, sizeof( v ) ); mP += sizeof( v ); return *this; }
inline const QgsConstWkbPtr &operator>>( char &v ) const { memcpy( &v, mP, sizeof( v ) ); mP += sizeof( v ); return *this; }
inline const QgsConstWkbPtr &operator>>( QGis::WkbType &v ) const { memcpy( &v, mP, sizeof( v ) ); mP += sizeof( v ); return *this; }
+#ifdef QT_ARCH_ARM
+ inline const QgsConstWkbPtr &operator>>( qreal &v ) const { double d; memcpy( &d, mP, sizeof( d ) ); mP += sizeof( d ); v=d; return *this; }
+#endif
inline void operator+=( int n ) { mP += n; }
diff --git a/src/core/qgsmaptopixel.cpp b/src/core/qgsmaptopixel.cpp
index 16ade54..08e06e4 100644
--- a/src/core/qgsmaptopixel.cpp
+++ b/src/core/qgsmaptopixel.cpp
@@ -114,22 +114,18 @@ void QgsMapToPixel::updateMatrix()
mMatrix = QTransform::fromTranslate( cx, cy )
.rotate( rotation )
.scale( 1 / mMapUnitsPerPixel, -1 / mMapUnitsPerPixel )
- .translate( -xCenter, -yCenter )
- ;
+ .translate( -xCenter, -yCenter );
}
-QgsPoint QgsMapToPixel::toMapPoint( double x, double y ) const
+QgsPoint QgsMapToPixel::toMapPoint( qreal x, qreal y ) const
{
bool invertible;
QTransform matrix = mMatrix.inverted( &invertible );
assert( invertible );
- double mx, my;
+ qreal mx, my;
matrix.map( x, y, &mx, &my );
- QgsPoint ret( mx, my );
-
//QgsDebugMsg(QString("XXX toMapPoint x:%1 y:%2 -> x:%3 y:%4").arg(x).arg(y).arg(mx).arg(my));
-
- return ret;
+ return QgsPoint( mx, my );
}
QgsPoint QgsMapToPixel::toMapCoordinates( QPoint p ) const
@@ -232,42 +228,34 @@ QString QgsMapToPixel::showParameters() const
<< " rotation: " << mRotation
<< " size: " << mWidth << "x" << mHeight;
return rep;
-
}
-
-QgsPoint QgsMapToPixel::transform( double x, double y ) const
+QgsPoint QgsMapToPixel::transform( qreal x, qreal y ) const
{
transformInPlace( x, y );
return QgsPoint( x, y );
}
-QgsPoint QgsMapToPixel::transform( const QgsPoint& p ) const
+QgsPoint QgsMapToPixel::transform( const QgsPoint &p ) const
{
- double dx = p.x();
- double dy = p.y();
- transformInPlace( dx, dy );
-
+ qreal x = p.x(), y = p.y();
+ transformInPlace( x, y );
// QgsDebugMsg(QString("Point to pixel...X : %1-->%2, Y: %3 -->%4").arg(p.x()).arg(dx).arg(p.y()).arg(dy));
- return QgsPoint( dx, dy );
+ return QgsPoint( x, y );
}
-void QgsMapToPixel::transform( QgsPoint* p ) const
+void QgsMapToPixel::transform( QgsPoint *p ) const
{
- double x = p->x();
- double y = p->y();
+ qreal x = p->x(), y = p->y();
transformInPlace( x, y );
-
-#ifdef QGISDEBUG
// QgsDebugMsg(QString("Point to pixel...X : %1-->%2, Y: %3 -->%4").arg(p->x()).arg(x).arg(p->y()).arg(y));
-#endif
p->set( x, y );
}
-void QgsMapToPixel::transformInPlace( qreal& x, qreal& y ) const
+void QgsMapToPixel::transformInPlace( qreal &x, qreal &y ) const
{
// Map 2 Pixel
- double mx, my;
+ qreal mx, my;
mMatrix.map( x, y, &mx, &my );
//QgsDebugMsg(QString("XXX transformInPlace X : %1-->%2, Y: %3 -->%4").arg(x).arg(mx).arg(y).arg(my));
x = mx; y = my;
diff --git a/src/core/qgsmaptopixel.h b/src/core/qgsmaptopixel.h
index c11fb90..081e5d1 100644
--- a/src/core/qgsmaptopixel.h
+++ b/src/core/qgsmaptopixel.h
@@ -74,7 +74,7 @@ class CORE_EXPORT QgsMapToPixel
* @param y y coordinate of point to transform
* @return QgsPoint in device coordinates
*/
- QgsPoint transform( double x, double y ) const;
+ QgsPoint transform( qreal x, qreal y ) const;
/*! Transform device coordinates to map (world) coordinates
* @param x x coordinate of point to be converted to map cooordinates
* @param y y coordinate of point to be converted to map cooordinates
@@ -110,7 +110,7 @@ class CORE_EXPORT QgsMapToPixel
*/
QgsPoint toMapCoordinates( QPoint p ) const;
- QgsPoint toMapPoint( double x, double y ) const;
+ QgsPoint toMapPoint( qreal x, qreal y ) const;
/*! Set map units per pixel
* @param mapUnitsPerPixel Map units per pixel
diff --git a/src/core/qgspallabeling.cpp b/src/core/qgspallabeling.cpp
index 768a511..b5ecc8c 100644
--- a/src/core/qgspallabeling.cpp
+++ b/src/core/qgspallabeling.cpp
@@ -2105,7 +2105,7 @@ void QgsPalLayerSettings::registerFeature( QgsFeature& f, const QgsRenderContext
QTransform t = QTransform::fromTranslate( center.x(), center.y() );
t.rotate( -m2p.mapRotation() );
t.translate( -center.x(), -center.y() );
- double xPosR, yPosR;
+ qreal xPosR, yPosR;
t.map( xPos, yPos, &xPosR, &yPosR );
xPos = xPosR; yPos = yPosR;
}
diff --git a/src/core/qgspointlocator.cpp b/src/core/qgspointlocator.cpp
index 534e7da..4bea360 100644
--- a/src/core/qgspointlocator.cpp
+++ b/src/core/qgspointlocator.cpp
@@ -268,6 +268,8 @@ struct _CohenSutherland
y = y0 + ( y1 - y0 ) * ( mRect.xMinimum() - x0 ) / ( x1 - x0 );
x = mRect.xMinimum();
}
+ else
+ break;
// Now we move outside point to intersection point to clip
// and get ready for next pass.
@@ -536,13 +538,13 @@ class QgsPointLocator_DumpTree : public SpatialIndex::IQueryStrategy
if ( !n )
return;
- qDebug( "NODE: %ld", n->getIdentifier() );
+ QgsDebugMsg( QString( "NODE: %1" ).arg( n->getIdentifier() ) );
if ( n->getLevel() > 0 )
{
// inner nodes
for ( uint32_t cChild = 0; cChild < n->getChildrenCount(); cChild++ )
{
- qDebug( "- CH: %ld", n->getChildIdentifier( cChild ) );
+ QgsDebugMsg( QString( "- CH: %1" ).arg( n->getChildIdentifier( cChild ) ) );
ids.push( n->getChildIdentifier( cChild ) );
}
}
@@ -551,7 +553,7 @@ class QgsPointLocator_DumpTree : public SpatialIndex::IQueryStrategy
// leaves
for ( uint32_t cChild = 0; cChild < n->getChildrenCount(); cChild++ )
{
- qDebug( "- L: %ld", n->getChildIdentifier( cChild ) );
+ QgsDebugMsg( QString( "- L: %1" ).arg( n->getChildIdentifier( cChild ) ) );
}
}
diff --git a/src/core/symbology-ng/qgsrendererv2.cpp b/src/core/symbology-ng/qgsrendererv2.cpp
index 73b4f22..6e114ca 100644
--- a/src/core/symbology-ng/qgsrendererv2.cpp
+++ b/src/core/symbology-ng/qgsrendererv2.cpp
@@ -39,10 +39,7 @@ const unsigned char* QgsFeatureRendererV2::_getPoint( QPointF& pt, QgsRenderCont
{
QgsConstWkbPtr wkbPtr( wkb + 1 );
unsigned int wkbType;
- wkbPtr >> wkbType;
-
- double x, y;
- wkbPtr >> x >> y;
+ wkbPtr >> wkbType >> pt.rx() >> pt.ry();
if ( wkbType == QGis::WKBPoint25D )
wkbPtr += sizeof( double );
@@ -50,12 +47,11 @@ const unsigned char* QgsFeatureRendererV2::_getPoint( QPointF& pt, QgsRenderCont
if ( context.coordinateTransform() )
{
double z = 0; // dummy variable for coordiante transform
- context.coordinateTransform()->transformInPlace( x, y, z );
+ context.coordinateTransform()->transformInPlace( pt.rx(), pt.ry(), z );
}
- context.mapToPixel().transformInPlace( x, y );
+ context.mapToPixel().transformInPlace( pt.rx(), pt.ry() );
- pt = QPointF( x, y );
return wkbPtr;
}
@@ -65,7 +61,7 @@ const unsigned char* QgsFeatureRendererV2::_getLineString( QPolygonF& pts, QgsRe
unsigned int wkbType, nPoints;
wkbPtr >> wkbType >> nPoints;
- bool hasZValue = ( wkbType == QGis::WKBLineString25D );
+ bool hasZValue = wkbType == QGis::WKBLineString25D;
double x, y;
const QgsCoordinateTransform* ct = context.coordinateTransform();
diff --git a/src/gui/qgsmapcanvasitem.cpp b/src/gui/qgsmapcanvasitem.cpp
index c0dd3ec..763f340 100644
--- a/src/gui/qgsmapcanvasitem.cpp
+++ b/src/gui/qgsmapcanvasitem.cpp
@@ -63,7 +63,7 @@ QgsPoint QgsMapCanvasItem::toMapCoordinates( const QPoint& point ) const
QPointF QgsMapCanvasItem::toCanvasCoordinates( const QgsPoint& point ) const
{
- double x = point.x(), y = point.y();
+ qreal x = point.x(), y = point.y();
mMapCanvas->getCoordinateTransform()->transformInPlace( x, y );
return QPointF( x, y ) + mPanningOffset;
}
diff --git a/src/gui/qgsmaptool.cpp b/src/gui/qgsmaptool.cpp
index 463a07a..4fd0f4c 100644
--- a/src/gui/qgsmaptool.cpp
+++ b/src/gui/qgsmaptool.cpp
@@ -68,7 +68,7 @@ QgsRectangle QgsMapTool::toLayerCoordinates( QgsMapLayer* layer, const QgsRectan
QPoint QgsMapTool::toCanvasCoordinates( const QgsPoint& point )
{
- double x = point.x(), y = point.y();
+ qreal x = point.x(), y = point.y();
mCanvas->getCoordinateTransform()->transformInPlace( x, y );
return QPoint( qRound( x ), qRound( y ) );
}
diff --git a/src/providers/wcs/qgswcsprovider.cpp b/src/providers/wcs/qgswcsprovider.cpp
index 77022ac..88618ef 100644
--- a/src/providers/wcs/qgswcsprovider.cpp
+++ b/src/providers/wcs/qgswcsprovider.cpp
@@ -516,7 +516,7 @@ void QgsWcsProvider::readBlock( int bandNo, QgsRectangle const & viewExtent, in
// TODO: set block to null values, move that to function and call only if fails
memset( block, 0, pixelWidth * pixelHeight * QgsRasterBlock::typeSize( dataType( bandNo ) ) );
- // Requested extent must at least partialy overlap coverage extent, otherwise
+ // Requested extent must at least partially overlap coverage extent, otherwise
// server gives error. QGIS usually does not request blocks outside raster extent
// (higher level checks) but it is better to do check here as well
if ( !viewExtent.intersects( mCoverageExtent ) )
diff --git a/tests/src/core/testqgsatlascomposition.cpp b/tests/src/core/testqgsatlascomposition.cpp
index 1a26cc2..4b94bfb 100644
--- a/tests/src/core/testqgsatlascomposition.cpp
+++ b/tests/src/core/testqgsatlascomposition.cpp
@@ -308,13 +308,13 @@ void TestQgsAtlasComposition::predefinedscales_render()
mAtlasMap->setAtlasDriven( true );
mAtlasMap->setAtlasScalingMode( QgsComposerMap::Predefined );
- QVector<double> scales;
- scales << 1800000;
- scales << 5000000;
+ QVector<qreal> scales;
+ scales << 1800000.0;
+ scales << 5000000.0;
mAtlas->setPredefinedScales( scales );
{
- const QVector<double>& setScales = mAtlas->predefinedScales();
+ const QVector<qreal> &setScales = mAtlas->predefinedScales();
for ( int i = 0; i < setScales.size(); i++ )
{
QVERIFY( setScales[i] == scales[i] );

View File

@ -13,7 +13,7 @@
Name: qgis
Version: 2.8.1
Release: 1%{?dist}
Release: 2%{?dist}
Summary: A user friendly Open Source Geographic Information System
Group: Applications/Engineering
@ -36,6 +36,9 @@ Source5: %{name}-mime.xml
# Fix detection problem for GRASS libraries
Patch0: %{name}-2.4.0-grass.patch
# https://github.com/qgis/QGIS/commit/1aff7335d004bc410eb61e1436ee7648716f9319
Patch1: %{name}-2.8.1-arm.patch
# Some plug-ins need Pyspatialite (bundled)
# The license is not totally clear, see:
# http://code.google.com/p/pyspatialite/issues/detail?id=3
@ -172,6 +175,7 @@ Please refer to %{name}-server-README.fedora for details!
%prep
%setup -q
%patch0 -p1 -b .grass~
%patch1 -p1 -b .arm~
# Remove executable permissions from source code files
find . \( -name "*.cpp" -o -name "*.h" \) -type f -perm /111 -execdir chmod -x {} \+
@ -394,6 +398,9 @@ update-mime-database %{?fedora:-n} %{_datadir}/mime &> /dev/null || :
%changelog
* Mon Mar 9 2015 Volker Fröhlich <volker27@gmx.at> - 2.8.1-2
- Add upstream patch to fix the build on ARM
* Sun Mar 8 2015 Volker Fröhlich <volker27@gmx.at> - 2.8.1-1
- New upstream release, remove included patch change
- Rename mapserver sub-package to server