diff --git a/srcpkgs/libgdal/patches/poppler-069.patch b/srcpkgs/libgdal/patches/poppler-069.patch new file mode 100644 index 00000000000..993a10ccb78 --- /dev/null +++ b/srcpkgs/libgdal/patches/poppler-069.patch @@ -0,0 +1,302 @@ +From 69e07012533b8393edd8b9ec4da6d239d204858a Mon Sep 17 00:00:00 2001 +From: Even Rouault +Date: Fri, 12 Oct 2018 19:02:40 +0200 +Subject: [PATCH] Add support for Poppler 0.69 (fixes #1004) + +--- + gdal/GDALmake.opt.in | 1 + + gdal/configure | 61 ++++++++++++++++++++++++++--------- + gdal/configure.ac | 56 +++++++++++++++++++++++--------- + gdal/frmts/pdf/GNUmakefile | 4 +++ + gdal/frmts/pdf/makefile.vc | 6 +++- + gdal/frmts/pdf/pdfdataset.cpp | 12 +++++++ + gdal/nmake.opt | 2 ++ + 7 files changed, 111 insertions(+), 31 deletions(-) + +diff --git a/gdal/GDALmake.opt.in b/gdal/GDALmake.opt.in +index c3b5b34f92b..eaf005e5a14 100644 +--- GDALmake.opt.in ++++ GDALmake.opt.in +@@ -473,6 +473,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/gdal/configure b/gdal/configure +index 1cc161303e4..fac9096939f 100755 +--- configure ++++ configure +@@ -664,6 +664,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 +@@ -34386,6 +34387,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; } +@@ -34428,24 +34430,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 ' > 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 ' > 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 ' > 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 +@@ -34550,6 +34579,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/gdal/configure.ac b/gdal/configure.ac +index 857f7fdb445..b6e59020c5b 100644 +--- configure.ac ++++ configure.ac +@@ -4446,6 +4446,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]) + +@@ -4486,21 +4487,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 ' > 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 ' > 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 ' > 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 +@@ -4585,6 +4610,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/gdal/frmts/pdf/GNUmakefile b/gdal/frmts/pdf/GNUmakefile +index 2014070eac7..618072f05d3 100644 +--- frmts/pdf/GNUmakefile ++++ frmts/pdf/GNUmakefile +@@ -35,6 +35,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/gdal/frmts/pdf/makefile.vc b/gdal/frmts/pdf/makefile.vc +index b4fa14d0a18..ad76d3de70c 100644 +--- frmts/pdf/makefile.vc ++++ 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/gdal/frmts/pdf/pdfdataset.cpp b/gdal/frmts/pdf/pdfdataset.cpp +index ee89fd07564..1a56f57ee06 100644 +--- frmts/pdf/pdfdataset.cpp ++++ 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;igetLength();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;igetLength();i++) + { + OptionalContentGroup* ocg = (OptionalContentGroup*) ocgList->get(i); ++#endif + ocg->setState( (bAll) ? OptionalContentGroup::On : OptionalContentGroup::Off ); + } + +diff --git a/gdal/nmake.opt b/gdal/nmake.opt +index a3b88583425..c9ca28d3cd9 100644 +--- nmake.opt ++++ nmake.opt +@@ -632,6 +632,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 +@@ -639,6 +640,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/srcpkgs/libgdal/template b/srcpkgs/libgdal/template index dc7965b261a..3bc3c8eaa44 100644 --- a/srcpkgs/libgdal/template +++ b/srcpkgs/libgdal/template @@ -1,8 +1,8 @@ # Template file for 'libgdal' pkgname=libgdal version=2.3.2 -revision=3 -wrksrc=gdal-${version} +revision=4 +wrksrc="gdal-${version}" build_style=gnu-configure configure_args="--with-liblzma --with-poppler" hostmakedepends="gettext-devel pkg-config python-numpy json-c-devel" @@ -16,6 +16,10 @@ homepage="http://www.gdal.org/" distfiles="http://download.osgeo.org/gdal/${version}/gdal-${version}.tar.xz" checksum=3f6d78fe8807d1d6afb7bed27394f19467840a82bc36d65e66316fa0aa9d32a4 +pre_build() { + find frmts/pdf -type f | xargs sed -e 's|GBool|bool|g' -e 's|gFalse|false|g' -i +} + post_install() { vinstall gdal.pc 644 usr/lib/pkgconfig vlicense LICENSE.TXT