sci-geosciences/merkaartor: compatibility with gdal bug #554304. By wraeth
authorAmy Winston <amynka@gentoo.org>
Mon, 18 Jan 2016 18:28:31 +0000 (19:28 +0100)
committerAmy Winston <amynka@gentoo.org>
Mon, 18 Jan 2016 18:28:31 +0000 (19:28 +0100)
Package-Manager: portage-2.2.24

sci-geosciences/merkaartor/Manifest
sci-geosciences/merkaartor/files/merkaartor-gdal-2-fix.patch [new file with mode: 0644]
sci-geosciences/merkaartor/merkaartor-0.18.1-r2.ebuild [moved from sci-geosciences/merkaartor/merkaartor-0.18.1-r1.ebuild with 94% similarity]
sci-geosciences/merkaartor/merkaartor-0.18.1.ebuild [deleted file]

index 9950ede2b132073bd8c7535c5eb0da5202a1fed0..1b431ef42fade3af24ab26354552c59b5e7821d6 100644 (file)
@@ -1,3 +1,2 @@
 DIST merkaartor-0.17.2.tar.bz2 7138991 SHA256 425f4facefbf20a3dd1a09ee61ff8a8912482d1a30c957c50869d8ff59ba702a SHA512 3718131d855ad6ea17537c7879a3249f25f6f5aaaf00e2e59df10c5497a628f0877f85129a209d11dc969b5771598f9989cc6ca3a972dab4c3eaef507784d4ed WHIRLPOOL 22a07736e7da44d3799831352d0e9d323143f228dcf7693b6f90fe101a8a04c74c2c5186db15723902b7dd8aadd93a78547e4622b5238ceb7074027e987b8487
-DIST merkaartor-0.18.1.tar.bz2 5579080 SHA256 3d6a96599815d5f1c8558acd255a413ea47b93ddad8414147d11775a6f21139f SHA512 d45b25ad5a7f19b32ca3e91ad514ef1a8450024bdab9e8c215f60a5ec3fc6332a5cadfcec586a32805c7727d224588b504b01d3023120d55476660a8a394cd45 WHIRLPOOL 23327a7eaa91531a95665fe9ff647712606babf96e3843ef33b94a37f6f7ca6d1cb09576b0b31197badc32e87cfc7ca275a9e3792e57f57dd58fe0509ec1b46d
 DIST merkaartor-0.18.1.tar.gz 6459640 SHA256 e9fa5e30e6392c9224f73e9bb7d17b66c4eb6c023633eb2af0cf58ba8acf684f SHA512 5ccb2aca7463cd3b31790b0f231cd18f4499b38ec3eb14c3600bdaae880194a71aaf63a2c2f814af6277b1b07fd618b4393309aa5ded375940bd464d1e77d71d WHIRLPOOL fde10a93510c123f2e1065ad745c3abc7860892c55ed615e75214dd172bfbec1da6f254377cc2d6e0f1df6f9d0680d0f7878ba3224651f5b09c590c335211d9c
diff --git a/sci-geosciences/merkaartor/files/merkaartor-gdal-2-fix.patch b/sci-geosciences/merkaartor/files/merkaartor-gdal-2-fix.patch
new file mode 100644 (file)
index 0000000..4197610
--- /dev/null
@@ -0,0 +1,212 @@
+--- a/src/ImportExport/ImportExportGdal.cpp 2015-06-15 18:48:39.604575423 +0200
++++ b/src/ImportExport/ImportExportGdal.cpp 2015-06-15 18:48:39.604575423 +0200
+@@ -21,10 +21,13 @@
+ #include "ProjectionChooser.h"
+ #include "Global.h"
+-#include "cpl_vsi.h"
++#include <cpl_vsi.h>
++#include <gdal.h>
++#include <gdal_priv.h>
+ #include <QDir>
++
+ bool parseContainer(QDomElement& e, Layer* aLayer);
+ ImportExportGdal::ImportExportGdal(Document* doc)
+@@ -55,6 +58,55 @@ bool ImportExportGdal::saveFile(QString)
+ bool ImportExportGdal::export_(const QList<Feature *>& featList)
+ {
+     const char *pszDriverName = "SQLite";
++    QString fileName(HOMEDIR + "/test.sqlite");
++#ifdef GDAL2
++    GDALDriver *poDriver;
++    GDALDriverManager *driverManager = GetGDALDriverManager();
++    GDALAllRegister();
++    driverManager->AutoLoadDrivers();
++
++    poDriver = driverManager->GetDriverByName(pszDriverName);
++    if( poDriver == NULL )
++    {
++        qDebug( "%s driver not available.", pszDriverName );
++        return false;
++    }
++
++    /* Create create options */
++    char **createOptions = NULL;
++    createOptions = CSLSetNameValue( createOptions, "SPATIALITE", "YES" );
++
++    /* Open new dataset */
++    GDALDataset *poDS;
++
++    QFile::remove(fileName);
++    poDS = poDriver->Create( fileName.toUtf8().constData(), 0, 0, 0, GDT_Unknown, createOptions );
++    if( poDS == NULL )
++    {
++        qDebug( "Creation of output file failed." );
++        return false;
++    }
++    poDS->ExecuteSQL("PRAGMA synchronous = OFF", NULL, NULL);
++
++    /* Create Spatial reference object */
++    OGRSpatialReference *poSRS;
++    poSRS = new OGRSpatialReference();
++    poSRS->importFromEPSG(4326);
++
++    /* Create layer options */
++    char **layerOptions = NULL;
++    layerOptions = CSLSetNameValue( layerOptions, "FORMAT", "SPATIALITE" );
++    layerOptions = CSLSetNameValue( layerOptions, "SPATIAL_INDEX", "YES" );
++
++    /* Create layer */
++    OGRLayer *poLayer;
++    poLayer = poDS->CreateLayer( "osm", poSRS, wkbUnknown, layerOptions);
++
++    /* Free the options */
++    CSLDestroy( createOptions );
++    CSLDestroy( layerOptions );
++#else
++    /* This is legacy code, and is not tested at all */
+     OGRSFDriver *poDriver;
+     OGRRegisterAll();
+@@ -68,8 +120,8 @@ bool ImportExportGdal::export_(const QList<Feature *>& featList)
+     OGRDataSource *poDS;
+-    QFile::remove(QString(HOMEDIR + "/test.sqlite"));
+-    poDS = poDriver->CreateDataSource( QString(HOMEDIR + "/test.sqlite").toUtf8().constData(), NULL );
++    QFile::remove(fileName);
++    poDS = poDriver->CreateDataSource( fileName.toUtf8().constData(), NULL );
+     if( poDS == NULL )
+     {
+         qDebug( "Creation of output file failed." );
+@@ -89,6 +141,8 @@ bool ImportExportGdal::export_(const QList<Feature *>& featList)
+     OGRLayer *poLayer;
+     poLayer = poDS->CreateLayer( "osm", poSRS, wkbUnknown, papszOptions);
+     CSLDestroy( papszOptions );
++#endif
++
+     if( poLayer == NULL )
+     {
+@@ -142,7 +196,11 @@ bool ImportExportGdal::export_(const QList<Feature *>& featList)
+         }
+         OGRFeature::DestroyFeature( poFeature );
+     }
++#ifdef GDAL2
++    GDALClose( (GDALDatasetH) poDS );
++#else
+     OGRDataSource::DestroyDataSource( poDS );
++#endif
+     return true;
+ }
+@@ -264,7 +322,11 @@ Feature* ImportExportGdal::parseGeometry(Layer* aLayer, OGRGeometry *poGeometry)
+ // import the  input
+-bool ImportExportGdal::importGDALDataset(OGRDataSource* poDS, Layer* aLayer, bool confirmProjection)
++#ifndef GDAL2
++#define GDALDataset OGRDataSource
++#endif
++bool ImportExportGdal::importGDALDataset(GDALDataset* poDS, Layer* aLayer, bool confirmProjection)
++#undef GDALDataset
+ {
+     int ogrError;
+@@ -422,11 +484,16 @@ bool ImportExportGdal::importGDALDataset(OGRDataSource* poDS, Layer* aLayer, boo
+ bool ImportExportGdal::import(Layer* aLayer)
+ {
++#ifdef GDAL2
++    GDALAllRegister();
++    GDALDataset *poDS;
++    poDS = (GDALDataset *) GDALOpen( FileName.toUtf8().constData(), GA_ReadOnly );
++#else
+     OGRRegisterAll();
+-
+-    OGRDataSource       *poDS;
+-
++    OGRDataSource *poDS;
+     poDS = OGRSFDriverRegistrar::Open( FileName.toUtf8().constData(), FALSE );
++#endif
++
+     if( poDS == NULL )
+     {
+         qDebug( "GDAL Open failed.\n" );
+@@ -435,22 +502,26 @@ bool ImportExportGdal::import(Layer* aLayer)
+     importGDALDataset(poDS, aLayer, M_PREFS->getGdalConfirmProjection());
+-    OGRDataSource::DestroyDataSource( poDS );
++    GDALClose( (GDALDatasetH) poDS );
+     return true;
+ }
+ bool ImportExportGdal::import(Layer* aLayer, const QByteArray& ba, bool confirmProjection)
+ {
+-    OGRRegisterAll();
+-
+-    OGRDataSource       *poDS;
+-//    int ogrError;
+-
+     GByte* content = (GByte*)(ba.constData());
+     /*FILE* f = */VSIFileFromMemBuffer("/vsimem/temp", content, ba.size(), FALSE);
++#ifdef GDAL2
++    GDALAllRegister();
++    GDALDataset *poDS;
++    poDS = (GDALDataset *) GDALOpen( "/vsimem/temp", GA_ReadOnly );
++#else
++    OGRRegisterAll();
++    OGRDataSource *poDS;
+     poDS = OGRSFDriverRegistrar::Open( "/vsimem/temp", FALSE );
++#endif
++
+     if( poDS == NULL )
+     {
+         qDebug( "GDAL Open failed.\n" );
+@@ -458,7 +529,7 @@ bool ImportExportGdal::import(Layer* aLayer, const QByteArray& ba, bool confirmP
+     }
+     importGDALDataset(poDS, aLayer, confirmProjection);
+-    OGRDataSource::DestroyDataSource( poDS );
++    GDALClose( (GDALDatasetH) poDS );
+     return true;
+ }
+--- a/src/ImportExport/ImportExportGdal.h 2015-06-15 18:50:42.884995287 +0200
++++ b/src/ImportExport/ImportExportGdal.h 2015-06-15 18:50:42.884995287 +0200
+@@ -13,7 +13,15 @@
+ #define ImportExportGDAL_H
+ #include "IImportExport.h"
+-#include "ogrsf_frmts.h"
++
++#include <ogrsf_frmts.h>
++#include <gdal.h>
++#include <gdal_priv.h>
++#include <gdal_version.h>
++
++#if GDAL_VERSION_MAJOR == 2
++#define GDAL2
++#endif
+ class Projection;
+ class Layer;
+@@ -52,7 +60,11 @@ class ImportExportGdal : public IImportExport
+     Node *nodeFor(Layer* aLayer, OGRPoint point);
+     Way *readWay(Layer* aLayer, OGRLineString *poRing);
+-    bool importGDALDataset(OGRDataSource *poDs, Layer *aLayer, bool confirmProjection);
++#ifndef GDAL2
++#define GDALDataset OGRDataSource
++#endif
++    bool importGDALDataset(GDALDataset *poDs, Layer *aLayer, bool confirmProjection);
++#undef GDALDataset
+ private:
+     QHash<OGRPoint, Node*> pointHash;
similarity index 94%
rename from sci-geosciences/merkaartor/merkaartor-0.18.1-r1.ebuild
rename to sci-geosciences/merkaartor/merkaartor-0.18.1-r2.ebuild
index 33f4f5458c96e4532e9d93e3ac520e350fdb9c3a..211238ae8a627ee46a4cb576008bc0c79d5b81fd 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 1999-2015 Gentoo Foundation
+# Copyright 1999-2016 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
@@ -52,6 +52,10 @@ src_prepare() {
        fi
 
        epatch "${FILESDIR}"/${P}-system-libs.patch
+
+       # bug 554304 - build against gdal 2
+       epatch "${FILESDIR}"/${PN}-gdal-2-fix.patch
+
        epatch_user
 }
 
diff --git a/sci-geosciences/merkaartor/merkaartor-0.18.1.ebuild b/sci-geosciences/merkaartor/merkaartor-0.18.1.ebuild
deleted file mode 100644 (file)
index 97f7151..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=4
-
-REDMINE_HASH="301"
-
-inherit multilib qt4-r2 ${SCM_ECLASS}
-
-DESCRIPTION="A Qt4 based map editor for the openstreetmap.org project"
-HOMEPAGE="http://www.merkaartor.be"
-SRC_URI="http://merkaartor.be/attachments/download/${REDMINE_HASH}/merkaartor-${PV}.tar.bz2"
-
-LICENSE="GPL-2"
-SLOT="0"
-
-# Don't move KEYWORDS on the previous line or ekeyword won't work # 399061
-KEYWORDS="~amd64 ~x86"
-
-IUSE="debug exif gps nls libproxy"
-
-QT_MINIMAL="4.7.2"
-DEPEND="
-       >=dev-libs/boost-1.46
-       >=sci-libs/gdal-1.6.0
-       >=sci-libs/proj-4.6
-       >=dev-qt/qtgui-${QT_MINIMAL}:4
-       >=dev-qt/qtsvg-${QT_MINIMAL}:4
-       >=dev-qt/qtwebkit-${QT_MINIMAL}:4
-       exif? ( media-gfx/exiv2 )
-       gps? ( >=sci-geosciences/gpsd-2.92[cxx] )
-       libproxy? ( net-libs/libproxy )
-"
-RDEPEND="${DEPEND}"
-
-DOCS="AUTHORS CHANGELOG HACKING"
-
-PATCHES=(
-#      "${FILESDIR}"/0.17.2-includes.patch
-#      "${FILESDIR}"/0.17.2-libproxy.patch
-)
-
-merkaartor_use() {
-       local useflag=${1}
-       [[ -z ${useflag} ]] && die "No useflag specified"
-       if use ${useflag}; then
-               echo "1"
-       else
-               echo "0"
-       fi
-}
-
-src_configure() {
-       local myconf
-       myconf+=" RELEASE=1 ZBAR=0" # deps not in main tree so hard-disable
-       myconf+=" GEOIMAGE=$(${PN}_use exif)"
-       myconf+=" GPSDLIB=$(${PN}_use gps)"
-       myconf+=" LIBPROXY=$(${PN}_use libproxy)"
-       myconf+=" NODEBUG=$(use debug && echo "0" || echo "1")" # inverse logic
-       myconf+=" NOUSEWEBKIT=0" # fails to link if disabled, upstream needs to fix
-       myconf+=" TRANSDIR_MERKAARTOR=/usr/share/${PN}/translations TRANSDIR_SYSTEM=/usr/share/qt4/translations" #385671
-
-       if use nls; then
-               lrelease src/src.pro || die "lrelease failed"
-       fi
-
-       eqmake4 Merkaartor.pro LIBDIR=/usr/$(get_libdir) PREFIX=/usr/ ${myconf}
-}