commit:     e9aced03ab6c5b8c5697f02a4f69b6bc68188a60
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat Nov  3 22:50:29 2018 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat Nov  3 22:51:01 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e9aced03

sci-libs/gdal: Fix build with app-text/poppler-0.69.0

Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
Package-Manager: Portage-2.3.51, Repoman-2.3.11

 .../gdal/files/gdal-2.3.1-poppler-0.69.0.patch     | 301 +++++++++++++++++++++
 sci-libs/gdal/gdal-2.3.1.ebuild                    |   1 +
 2 files changed, 302 insertions(+)

diff --git a/sci-libs/gdal/files/gdal-2.3.1-poppler-0.69.0.patch 
b/sci-libs/gdal/files/gdal-2.3.1-poppler-0.69.0.patch
new file mode 100644
index 00000000000..a89970074b0
--- /dev/null
+++ b/sci-libs/gdal/files/gdal-2.3.1-poppler-0.69.0.patch
@@ -0,0 +1,301 @@
+From 0c0b9ea5a5d6bbef938de8a77c5b00cb228b902d Mon Sep 17 00:00:00 2001
+From: Even Rouault <even.roua...@spatialys.com>
+Date: Fri, 12 Oct 2018 19:02:40 +0200
+Subject: [PATCH] Add support for Poppler 0.69 (fixes #1004)
+
+---
+ GDALmake.opt.in          |  1 +
+ configure                | 61 ++++++++++++++++++++++++++---------
+ configure.ac             | 56 +++++++++++++++++++++++---------
+ frmts/pdf/GNUmakefile    |  4 +++
+ frmts/pdf/makefile.vc    |  6 +++-
+ frmts/pdf/pdfdataset.cpp | 12 +++++++
+ nmake.opt                |  2 ++
+ 7 files changed, 111 insertions(+), 31 deletions(-)
+
+diff --git a/GDALmake.opt.in b/GDALmake.opt.in
+index 30749ae982a..f9ab41fd124 100644
+--- a/GDALmake.opt.in
++++ b/GDALmake.opt.in
+@@ -481,6 +481,7 @@ POPPLER_BASE_STREAM_HAS_TWO_ARGS = 
@POPPLER_BASE_STREAM_HAS_TWO_ARGS@
+ POPPLER_0_20_OR_LATER = @POPPLER_0_20_OR_LATER@
+ POPPLER_0_23_OR_LATER = @POPPLER_0_23_OR_LATER@
+ POPPLER_0_58_OR_LATER = @POPPLER_0_58_OR_LATER@
++POPPLER_0_69_OR_LATER = @POPPLER_0_69_OR_LATER@
+ POPPLER_INC = @POPPLER_INC@
+ POPPLER_PLUGIN_LIB = @POPPLER_PLUGIN_LIB@
+ 
+diff --git a/configure b/configure
+index 050bc79ac97..a8472ba8c2d 100755
+--- a/configure
++++ b/configure
+@@ -669,6 +669,7 @@ PODOFO_INC
+ HAVE_PODOFO
+ POPPLER_PLUGIN_LIB
+ POPPLER_INC
++POPPLER_0_69_OR_LATER
+ POPPLER_0_58_OR_LATER
+ POPPLER_0_23_OR_LATER
+ POPPLER_0_20_OR_LATER
+@@ -34798,6 +34799,7 @@ POPPLER_BASE_STREAM_HAS_TWO_ARGS=no
+ POPPLER_0_20_OR_LATER=no
+ POPPLER_0_23_OR_LATER=no
+ POPPLER_0_58_OR_LATER=no
++POPPLER_0_69_OR_LATER=no
+ 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for poppler" >&5
+ $as_echo_n "checking for poppler... " >&6; }
+@@ -34840,24 +34842,51 @@ $as_echo "yes" >&6; }
+ 
+         CHECK_OTHER_POPPLER_VERSION=yes
+ 
+-        # And now we check if we have Poppler >= 0.58.0
+-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Object does have 
new API (>= 0.58.0)" >&5
++        if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
++            { $as_echo "$as_me:${as_lineno-$LINENO}: checking if 
OptionalContent has API >= 0.69.0" >&5
++$as_echo_n "checking if OptionalContent has API >= 0.69.0... " >&6; }
++            rm -f testpoppler.*
++            echo '#include <poppler/OptionalContent.h>' > testpoppler.cpp
++            echo 'int main(int argc, char** argv) {' >> testpoppler.cpp
++            echo 'OCGs ocg(nullptr, nullptr);' >> testpoppler.cpp
++            echo 'ocg.getOCGs().size();' >> testpoppler.cpp
++            echo 'return 0; }' >> testpoppler.cpp
++            if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c 
${POPPLER_INC} 2>&1`" ; then
++                POPPLER_0_69_OR_LATER=yes
++                POPPLER_0_58_OR_LATER=yes
++                POPPLER_0_23_OR_LATER=yes
++                POPPLER_0_20_OR_LATER=yes
++                POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
++                POPPLER_HAS_OPTCONTENT=yes
++                CHECK_OTHER_POPPLER_VERSION=no
++                { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++$as_echo "yes" >&6; }
++            else
++                { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++$as_echo "no" >&6; }
++            fi
++        fi
++
++        if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
++            # And now we check if we have Poppler >= 0.58.0
++            { $as_echo "$as_me:${as_lineno-$LINENO}: checking if Object does 
have new API (>= 0.58.0)" >&5
+ $as_echo_n "checking if Object does have new API (>= 0.58.0)... " >&6; }
+-        rm -f testpoppler.*
+-        echo '#include <poppler/Object.h>' > testpoppler.cpp
+-        echo 'int main(int argc, char** argv) { Object o(objNull); return 0; 
}' >> testpoppler.cpp
+-        if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c 
${POPPLER_INC} 2>&1`" ; then
+-            POPPLER_0_58_OR_LATER=yes
+-            POPPLER_0_23_OR_LATER=yes
+-            POPPLER_0_20_OR_LATER=yes
+-            POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
+-            POPPLER_HAS_OPTCONTENT=yes
+-            CHECK_OTHER_POPPLER_VERSION=no
+-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
++            rm -f testpoppler.*
++            echo '#include <poppler/Object.h>' > testpoppler.cpp
++            echo 'int main(int argc, char** argv) { Object o(objNull); return 
0; }' >> testpoppler.cpp
++            if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c 
${POPPLER_INC} 2>&1`" ; then
++                POPPLER_0_58_OR_LATER=yes
++                POPPLER_0_23_OR_LATER=yes
++                POPPLER_0_20_OR_LATER=yes
++                POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
++                POPPLER_HAS_OPTCONTENT=yes
++                CHECK_OTHER_POPPLER_VERSION=no
++                { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
+-        else
+-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
++            else
++                { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
++            fi
+         fi
+ 
+         if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
+@@ -34962,6 +34991,8 @@ POPPLER_0_23_OR_LATER=$POPPLER_0_23_OR_LATER
+ 
+ POPPLER_0_58_OR_LATER=$POPPLER_0_58_OR_LATER
+ 
++POPPLER_0_69_OR_LATER=$POPPLER_0_69_OR_LATER
++
+ POPPLER_INC=$POPPLER_INC
+ 
+ POPPLER_PLUGIN_LIB=$POPPLER_PLUGIN_LIB
+diff --git a/configure.ac b/configure.ac
+index 4b8ab911cec..0c588e04f03 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -4496,6 +4496,7 @@ POPPLER_BASE_STREAM_HAS_TWO_ARGS=no
+ POPPLER_0_20_OR_LATER=no
+ POPPLER_0_23_OR_LATER=no
+ POPPLER_0_58_OR_LATER=no
++POPPLER_0_69_OR_LATER=no
+ 
+ AC_MSG_CHECKING([for poppler])
+ 
+@@ -4536,21 +4537,45 @@ if test "$with_poppler" != "no" -a "$with_poppler" != 
""; then
+ 
+         CHECK_OTHER_POPPLER_VERSION=yes
+ 
+-        # And now we check if we have Poppler >= 0.58.0
+-        AC_MSG_CHECKING([if Object does have new API (>= 0.58.0)])
+-        rm -f testpoppler.*
+-        echo '#include <poppler/Object.h>' > testpoppler.cpp
+-        echo 'int main(int argc, char** argv) { Object o(objNull); return 0; 
}' >> testpoppler.cpp
+-        if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c 
${POPPLER_INC} 2>&1`" ; then
+-            POPPLER_0_58_OR_LATER=yes
+-            POPPLER_0_23_OR_LATER=yes
+-            POPPLER_0_20_OR_LATER=yes
+-            POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
+-            POPPLER_HAS_OPTCONTENT=yes
+-            CHECK_OTHER_POPPLER_VERSION=no
+-            AC_MSG_RESULT([yes])
+-        else
+-            AC_MSG_RESULT([no])
++        if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
++            AC_MSG_CHECKING([if OptionalContent has API >= 0.69.0])
++            rm -f testpoppler.*
++            echo '#include <poppler/OptionalContent.h>' > testpoppler.cpp
++            echo 'int main(int argc, char** argv) {' >> testpoppler.cpp
++            echo 'OCGs ocg(nullptr, nullptr);' >> testpoppler.cpp
++            echo 'ocg.getOCGs().size();' >> testpoppler.cpp
++            echo 'return 0; }' >> testpoppler.cpp
++            if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c 
${POPPLER_INC} 2>&1`" ; then
++                POPPLER_0_69_OR_LATER=yes
++                POPPLER_0_58_OR_LATER=yes
++                POPPLER_0_23_OR_LATER=yes
++                POPPLER_0_20_OR_LATER=yes
++                POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
++                POPPLER_HAS_OPTCONTENT=yes
++                CHECK_OTHER_POPPLER_VERSION=no
++                AC_MSG_RESULT([yes])
++            else
++                AC_MSG_RESULT([no])
++            fi
++        fi
++
++        if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
++            # And now we check if we have Poppler >= 0.58.0
++            AC_MSG_CHECKING([if Object does have new API (>= 0.58.0)])
++            rm -f testpoppler.*
++            echo '#include <poppler/Object.h>' > testpoppler.cpp
++            echo 'int main(int argc, char** argv) { Object o(objNull); return 
0; }' >> testpoppler.cpp
++            if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c 
${POPPLER_INC} 2>&1`" ; then
++                POPPLER_0_58_OR_LATER=yes
++                POPPLER_0_23_OR_LATER=yes
++                POPPLER_0_20_OR_LATER=yes
++                POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
++                POPPLER_HAS_OPTCONTENT=yes
++                CHECK_OTHER_POPPLER_VERSION=no
++                AC_MSG_RESULT([yes])
++            else
++                AC_MSG_RESULT([no])
++            fi
+         fi
+ 
+         if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
+@@ -4635,6 +4660,7 @@ AC_SUBST(POPPLER_BASE_STREAM_HAS_TWO_ARGS, 
$POPPLER_BASE_STREAM_HAS_TWO_ARGS)
+ AC_SUBST(POPPLER_0_20_OR_LATER, $POPPLER_0_20_OR_LATER)
+ AC_SUBST(POPPLER_0_23_OR_LATER, $POPPLER_0_23_OR_LATER)
+ AC_SUBST(POPPLER_0_58_OR_LATER, $POPPLER_0_58_OR_LATER)
++AC_SUBST(POPPLER_0_69_OR_LATER, $POPPLER_0_69_OR_LATER)
+ AC_SUBST(POPPLER_INC, $POPPLER_INC)
+ AC_SUBST(POPPLER_PLUGIN_LIB, $POPPLER_PLUGIN_LIB)
+ 
+diff --git a/frmts/pdf/GNUmakefile b/frmts/pdf/GNUmakefile
+index 2c332d2798f..6a267f529b2 100644
+--- a/frmts/pdf/GNUmakefile
++++ b/frmts/pdf/GNUmakefile
+@@ -34,6 +34,10 @@ ifeq ($(POPPLER_0_58_OR_LATER),yes)
+ CPPFLAGS +=  -DPOPPLER_0_58_OR_LATER
+ endif
+ 
++ifeq ($(POPPLER_0_69_OR_LATER),yes)
++CPPFLAGS +=  -DPOPPLER_0_69_OR_LATER
++endif
++
+ ifeq ($(HAVE_PODOFO),yes)
+ CPPFLAGS +=  -DHAVE_PODOFO
+ endif
+diff --git a/frmts/pdf/makefile.vc b/frmts/pdf/makefile.vc
+index b4fa14d0a18..ad76d3de70c 100644
+--- a/frmts/pdf/makefile.vc
++++ b/frmts/pdf/makefile.vc
+@@ -14,7 +14,7 @@ OBJ = $(OBJ) ..\..\ogr\ogrsf_frmts\mem\ogrmemdatasource.obj 
..\..\ogr\ogrsf_frmt
+ EXTRAFLAGS =  -I..\vrt -I..\mem -I..\..\ogr\ogrsf_frmts\mem 
$(POPPLER_EXTRAFLAGS) $(PODOFO_EXTRAFLAGS) $(PDFIUM_EXTRAFLAGS)
+ 
+ !IFDEF POPPLER_ENABLED
+-POPPLER_EXTRAFLAGS = $(POPPLER_CFLAGS) $(POPPLER_HAS_OPTCONTENT_FLAGS) 
$(POPPLER_BASE_STREAM_HAS_TWO_ARGS_FLAGS) $(POPPLER_0_20_OR_LATER_FLAGS) 
$(POPPLER_0_23_OR_LATER_FLAGS) $(POPPLER_0_58_OR_LATER_FLAGS) -DHAVE_POPPLER
++POPPLER_EXTRAFLAGS = $(POPPLER_CFLAGS) $(POPPLER_HAS_OPTCONTENT_FLAGS) 
$(POPPLER_BASE_STREAM_HAS_TWO_ARGS_FLAGS) $(POPPLER_0_20_OR_LATER_FLAGS) 
$(POPPLER_0_23_OR_LATER_FLAGS) $(POPPLER_0_58_OR_LATER_FLAGS) 
$(POPPLER_0_69_OR_LATER_FLAGS) -DHAVE_POPPLER
+ 
+ !IFDEF POPPLER_HAS_OPTCONTENT
+ POPPLER_HAS_OPTCONTENT_FLAGS = -DPOPPLER_HAS_OPTCONTENT
+@@ -36,6 +36,10 @@ POPPLER_0_23_OR_LATER_FLAGS = -DPOPPLER_0_23_OR_LATER
+ POPPLER_0_58_OR_LATER_FLAGS = -DPOPPLER_0_58_OR_LATER
+ !ENDIF
+ 
++!IFDEF POPPLER_0_69_OR_LATER
++POPPLER_0_69_OR_LATER_FLAGS = -DPOPPLER_0_69_OR_LATER
++!ENDIF
++
+ !ENDIF
+ 
+ !IFDEF PODOFO_ENABLED
+diff --git a/frmts/pdf/pdfdataset.cpp b/frmts/pdf/pdfdataset.cpp
+index ee89fd07564..1a56f57ee06 100644
+--- a/frmts/pdf/pdfdataset.cpp
++++ b/frmts/pdf/pdfdataset.cpp
+@@ -3440,10 +3440,16 @@ void PDFDataset::FindLayersPoppler()
+     }
+     else
+     {
++#ifdef POPPLER_0_69_OR_LATER
++        for( const auto& refOCGPair: optContentConfig->getOCGs() )
++        {
++            auto ocg = refOCGPair.second.get();
++#else
+         GooList* ocgList = optContentConfig->getOCGs();
+         for(int i=0;i<ocgList->getLength();i++)
+         {
+             OptionalContentGroup* ocg = (OptionalContentGroup*) 
ocgList->get(i);
++#endif
+             if( ocg != nullptr && ocg->getName() != nullptr )
+             {
+                 const char* pszLayerName = (const 
char*)ocg->getName()->getCString();
+@@ -3472,10 +3478,16 @@ void PDFDataset::TurnLayersOnOffPoppler()
+     {
+         int i;
+         int bAll = EQUAL(pszLayers, "ALL");
++#ifdef POPPLER_0_69_OR_LATER
++        for( const auto& refOCGPair: optContentConfig->getOCGs() )
++        {
++            auto ocg = refOCGPair.second.get();
++#else
+         GooList* ocgList = optContentConfig->getOCGs();
+         for(i=0;i<ocgList->getLength();i++)
+         {
+             OptionalContentGroup* ocg = (OptionalContentGroup*) 
ocgList->get(i);
++#endif
+             ocg->setState( (bAll) ? OptionalContentGroup::On : 
OptionalContentGroup::Off );
+         }
+ 
+diff --git a/nmake.opt b/nmake.opt
+index 682d766d93e..1eb049038c8 100644
+--- a/nmake.opt
++++ b/nmake.opt
+@@ -639,6 +639,7 @@ OCI_INCLUDE =      -I$(ORACLE_HOME)\oci\include
+ # Uncomment POPPLER_0_20_OR_LATER = YES for Poppler >= 0.20.0
+ # Uncomment POPPLER_0_23_OR_LATER = YES for Poppler >= 0.23.0
+ # Uncomment POPPLER_0_58_OR_LATER = YES for Poppler >= 0.58.0
++# Uncomment POPPLER_0_69_OR_LATER = YES for Poppler >= 0.69.0
+ #POPPLER_ENABLED = YES
+ #POPPLER_CFLAGS = -Ie:/kde/include -Ie:/kde/include/poppler
+ #POPPLER_HAS_OPTCONTENT = YES
+@@ -646,6 +647,7 @@ OCI_INCLUDE =      -I$(ORACLE_HOME)\oci\include
+ #POPPLER_0_20_OR_LATER = YES
+ #POPPLER_0_23_OR_LATER = YES
+ #POPPLER_0_58_OR_LATER = YES
++#POPPLER_0_69_OR_LATER = YES
+ #POPPLER_LIBS = e:/kde/lib/poppler.lib e:/kde/lib/freetype.lib 
e:/kde/lib/liblcms-1.lib advapi32.lib gdi32.lib
+ 
+ # Uncomment for PDF support

diff --git a/sci-libs/gdal/gdal-2.3.1.ebuild b/sci-libs/gdal/gdal-2.3.1.ebuild
index 65af4595613..317b386da9e 100644
--- a/sci-libs/gdal/gdal-2.3.1.ebuild
+++ b/sci-libs/gdal/gdal-2.3.1.ebuild
@@ -82,6 +82,7 @@ PATCHES=(
        "${FILESDIR}/${PN}-2.2.3-soname.patch"
        "${FILESDIR}/${PN}-2.2.3-bashcomp-path.patch" # bug 641866
        "${FILESDIR}/${PN}-2.3.0-curl.patch" # bug 659840
+       "${FILESDIR}/${PN}-2.3.1-poppler-0.69.0.patch"
 )
 
 src_prepare() {

Reply via email to