commit:     6c20ca938f7f64f9882ad152877ee209fcb5dc18
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Wed Dec 20 19:52:25 2017 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed Dec 20 20:08:23 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6c20ca93

sci-libs/gdal: Fix build w/ >=dev-libs/json-c-0.13

Thanks-to: Attila Tóth <atoth <AT> atoth.sote.hu>
Closes: https://bugs.gentoo.org/641658
Package-Manager: Portage-2.3.19, Repoman-2.3.6

 sci-libs/gdal/files/gdal-2.2.3-json-c-0.13.patch | 84 ++++++++++++++++++++++++
 sci-libs/gdal/gdal-2.2.3.ebuild                  |  1 +
 2 files changed, 85 insertions(+)

diff --git a/sci-libs/gdal/files/gdal-2.2.3-json-c-0.13.patch 
b/sci-libs/gdal/files/gdal-2.2.3-json-c-0.13.patch
new file mode 100644
index 00000000000..bbee77b51c7
--- /dev/null
+++ b/sci-libs/gdal/files/gdal-2.2.3-json-c-0.13.patch
@@ -0,0 +1,84 @@
+Index: gdal/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp
+===================================================================
+--- a/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp     (revision 41042)
++++ b/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp     (revision 41043)
+@@ -28,4 +28,6 @@
+  ****************************************************************************/
+ 
++#define JSON_C_VER_013 (13 << 8)
++
+ #include "ogrgeojsonwriter.h"
+ #include "ogrgeojsonutils.h"
+@@ -33,5 +35,9 @@
+ #include "ogrgeojsonreader.h"
+ #include <json.h>  // JSON-C
++
++#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
+ #include <json_object_private.h>
++#endif
++
+ #include <printbuf.h>
+ #include <ogr_api.h>
+@@ -1382,11 +1388,15 @@
+     // TODO(schwehr): Explain this casting.
+     const int nPrecision =
++#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
+         static_cast<int>(reinterpret_cast<GUIntptr_t>(jso->_userdata));
++#else
++        
static_cast<int>(reinterpret_cast<GUIntptr_t>(json_object_get_userdata(jso)));
++#endif
+     char szBuffer[75] = {};
+-    OGRFormatDouble( szBuffer, sizeof(szBuffer), jso->o.c_double, '.',
++    OGRFormatDouble( szBuffer, sizeof(szBuffer), json_object_get_double(jso), 
'.',
+                      (nPrecision < 0) ? 15 : nPrecision );
+     if( szBuffer[0] == 't' /*oobig */ )
+     {
+-        CPLsnprintf(szBuffer, sizeof(szBuffer), "%.18g", jso->o.c_double);
++        CPLsnprintf(szBuffer, sizeof(szBuffer), "%.18g", 
json_object_get_double(jso));
+     }
+     return printbuf_memappend(pb, szBuffer, 
static_cast<int>(strlen(szBuffer)));
+@@ -1418,9 +1428,9 @@
+     char szBuffer[75] = {};
+     int nSize = 0;
+-    if( CPLIsNan(jso->o.c_double))
++    if( CPLIsNan(json_object_get_double(jso)))
+         nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), "NaN");
+-    else if( CPLIsInf(jso->o.c_double) )
+-    {
+-        if( jso->o.c_double > 0 )
++    else if( CPLIsInf(json_object_get_double(jso)) )
++    {
++        if( json_object_get_double(jso) > 0 )
+             nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), "Infinity");
+         else
+@@ -1430,5 +1440,9 @@
+     {
+         char szFormatting[32] = {};
++#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
+         const int nSignificantFigures = (int) (GUIntptr_t) jso->_userdata;
++#else
++        const int nSignificantFigures = (int) (GUIntptr_t) 
json_object_get_userdata(jso);
++#endif
+         const int nInitialSignificantFigures =
+             nSignificantFigures >= 0 ? nSignificantFigures : 17;
+@@ -1436,5 +1450,5 @@
+                     "%%.%dg", nInitialSignificantFigures);
+         nSize = CPLsnprintf(szBuffer, sizeof(szBuffer),
+-                            szFormatting, jso->o.c_double);
++                            szFormatting, json_object_get_double(jso));
+         const char* pszDot = NULL;
+         if( nSize+2 < static_cast<int>(sizeof(szBuffer)) &&
+@@ -1458,5 +1472,5 @@
+                             "%%.%dg", nInitialSignificantFigures- i);
+                 nSize = CPLsnprintf(szBuffer, sizeof(szBuffer),
+-                                    szFormatting, jso->o.c_double);
++                                    szFormatting, 
json_object_get_double(jso));
+                 pszDot = strchr(szBuffer, '.');
+                 if( pszDot != NULL &&
+@@ -1473,5 +1487,5 @@
+                             "%%.%dg", nInitialSignificantFigures);
+                 nSize = CPLsnprintf(szBuffer, sizeof(szBuffer),
+-                                    szFormatting, jso->o.c_double);
++                                    szFormatting, 
json_object_get_double(jso));
+                 if( nSize+2 < static_cast<int>(sizeof(szBuffer)) &&
+                     strchr(szBuffer, '.') == NULL )

diff --git a/sci-libs/gdal/gdal-2.2.3.ebuild b/sci-libs/gdal/gdal-2.2.3.ebuild
index 0ee11731348..d9baddecf2b 100644
--- a/sci-libs/gdal/gdal-2.2.3.ebuild
+++ b/sci-libs/gdal/gdal-2.2.3.ebuild
@@ -71,6 +71,7 @@ REQUIRED_USE="mdb? ( java )
 
 PATCHES=(
        "${FILESDIR}/${PN}-2.2.3-soname.patch"
+       "${FILESDIR}/${PN}-2.2.3-json-c-0.13.patch" # bug 641658
 )
 
 src_prepare() {

Reply via email to