diff --git a/community/gdal/PKGBUILD b/community/gdal/PKGBUILD index 71663f237..ea01598c0 100644 --- a/community/gdal/PKGBUILD +++ b/community/gdal/PKGBUILD @@ -9,7 +9,7 @@ pkgbase=gdal pkgname=('gdal' 'python-gdal') pkgver=3.4.0 -pkgrel=3 +pkgrel=5 pkgdesc="A translator library for raster geospatial data formats" arch=('x86_64') url="https://gdal.org/" @@ -23,8 +23,10 @@ optdepends=('postgresql: postgresql database support' options=('!emptydirs') changelog=$pkgbase.changelog source=(https://download.osgeo.org/${pkgbase}/${pkgver}/${pkgbase}-${pkgver}.tar.xz + poppler-22.03.0.patch gdal-perl-vendor.patch) sha256sums=('ac7bd2bb9436f3fc38bc7309704672980f82d64b4d57627d27849259b8f71d5c' + 'b60d94457199ab49ff11cbbb793cd6cd459c732265d342f1c04721f164383e73' '2103b98f2f15954f042d5620658b30d703125927bde2e5eb671c5facb6c2f5ed') prepare() { @@ -33,6 +35,9 @@ prepare() { # Fix mandir sed -i "s|^mandir=.*|mandir='\${prefix}/share/man'|" configure +# Fix build with poppler 22.03.0 + patch -Np1 -i "${srcdir}"/poppler-22.03.0.patch + # Fix Perl bindings installation path patch -Np0 -i "${srcdir}"/gdal-perl-vendor.patch } diff --git a/community/gdal/poppler-22.03.0.patch b/community/gdal/poppler-22.03.0.patch new file mode 100644 index 000000000..94640e046 --- /dev/null +++ b/community/gdal/poppler-22.03.0.patch @@ -0,0 +1,54 @@ +From 17e98757e78969a199d1d6318f53d088da192191 Mon Sep 17 00:00:00 2001 +From: Even Rouault +Date: Fri, 18 Feb 2022 22:47:01 +0100 +Subject: [PATCH] PDF: fix build against Poppler > 22.2 + +--- + frmts/pdf/pdfdataset.cpp | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +diff --git a/frmts/pdf/pdfdataset.cpp b/frmts/pdf/pdfdataset.cpp +index 22238bd74822..08f8e31c86a7 100644 +--- a/frmts/pdf/pdfdataset.cpp ++++ b/frmts/pdf/pdfdataset.cpp +@@ -4241,8 +4241,6 @@ PDFDataset *PDFDataset::Open( GDALOpenInfo * poOpenInfo ) + #ifdef HAVE_POPPLER + if(bUseLib.test(PDFLIB_POPPLER)) + { +- GooString* poUserPwd = nullptr; +- + static bool globalParamsCreatedByGDAL = false; + { + CPLMutexHolderD(&hGlobalParamsMutex); +@@ -4310,9 +4308,6 @@ PDFDataset *PDFDataset::Open( GDALOpenInfo * poOpenInfo ) + while( true ) + { + VSIFSeekL(fp, 0, SEEK_SET); +- if (pszUserPwd) +- poUserPwd = new GooString(pszUserPwd); +- + g_nPopplerErrors = 0; + if( globalParamsCreatedByGDAL ) + registerErrorCallback(); +@@ -4322,10 +4317,20 @@ PDFDataset *PDFDataset::Open( GDALOpenInfo * poOpenInfo ) + oObj.getObj()->initNull(); + auto poStream = new VSIPDFFileStream(fp, pszFilename, oObj.getObj()); + #endif ++#if POPPLER_MAJOR_VERSION > 22 || (POPPLER_MAJOR_VERSION == 22 && POPPLER_MINOR_VERSION > 2) ++ std::optional osUserPwd; ++ if (pszUserPwd) ++ osUserPwd = std::optional(pszUserPwd); ++ poDocPoppler = new PDFDoc(poStream, std::optional(), osUserPwd); ++#else ++ GooString* poUserPwd = nullptr; ++ if (pszUserPwd) ++ poUserPwd = new GooString(pszUserPwd); + poDocPoppler = new PDFDoc(poStream, nullptr, poUserPwd); ++ delete poUserPwd; ++#endif + if( globalParamsCreatedByGDAL ) + registerErrorCallback(); +- delete poUserPwd; + if( g_nPopplerErrors >= MAX_POPPLER_ERRORS ) + { + PDFFreeDoc(poDocPoppler);