From eb7142ac006821e29725501bad5e103d1b6dd643 Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Fri, 15 Apr 2022 18:29:10 +0200 Subject: [PATCH] - added poppler patch (backport from git + additional fix for 22.04); release 14 --- gdal-poppler.patch | 74 ++++++++++++++++++++++++++++++++++++++++++++++ gdal.spec | 4 ++- 2 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 gdal-poppler.patch diff --git a/gdal-poppler.patch b/gdal-poppler.patch new file mode 100644 index 0000000..243c4ce --- /dev/null +++ b/gdal-poppler.patch @@ -0,0 +1,74 @@ +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 +@@ -4101,8 +4101,6 @@ PDFDataset *PDFDataset::Open( GDALOpenIn + #ifdef HAVE_POPPLER + if(bUseLib.test(PDFLIB_POPPLER)) + { +- GooString* poUserPwd = nullptr; +- + /* Set custom error handler for poppler errors */ + #if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 85 + setErrorCallback(PDFDatasetErrorFunction); +@@ -4136,8 +4134,6 @@ PDFDataset *PDFDataset::Open( GDALOpenIn + while( true ) + { + VSIFSeekL(fp, 0, SEEK_SET); +- if (pszUserPwd) +- poUserPwd = new GooString(pszUserPwd); + + #if POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 58 + auto poStream = new VSIPDFFileStream(fp, pszFilename, std::move(oObj)); +@@ -4145,8 +4141,18 @@ PDFDataset *PDFDataset::Open( GDALOpenIn + 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 ( !poDocPoppler->isOk() || poDocPoppler->getNumPages() == 0 ) + { +--- gdal-3.0.4/frmts/pdf/pdfdataset.cpp.orig 2022-04-15 17:08:03.072819386 +0200 ++++ gdal-3.0.4/frmts/pdf/pdfdataset.cpp 2022-04-15 17:43:26.613241927 +0200 +@@ -4837,7 +4837,11 @@ PDFDataset *PDFDataset::Open( GDALOpenIn + #ifdef HAVE_POPPLER + if (bUseLib.test(PDFLIB_POPPLER)) + { ++#if POPPLER_MAJOR_VERSION > 22 || (POPPLER_MAJOR_VERSION == 22 && POPPLER_MINOR_VERSION > 3) ++ std::unique_ptr poMetadata = poCatalogPoppler->readMetadata(); ++#else + GooString* poMetadata = poCatalogPoppler->readMetadata(); ++#endif + if (poMetadata) + { + #if (POPPLER_MAJOR_VERSION >= 1 || POPPLER_MINOR_VERSION >= 72) +@@ -4851,7 +4855,9 @@ PDFDataset *PDFDataset::Open( GDALOpenIn + const char * const apszMDList[2] = { pszContent, nullptr }; + poDS->SetMetadata(const_cast(apszMDList), "xml:XMP"); + } ++#if POPPLER_MAJOR_VERSION < 22 || (POPPLER_MAJOR_VERSION == 22 && POPPLER_MINOR_VERSION < 4) + delete poMetadata; ++#endif + } + + /* Read Info object */ diff --git a/gdal.spec b/gdal.spec index 0fa9099..f810948 100644 --- a/gdal.spec +++ b/gdal.spec @@ -50,7 +50,7 @@ Summary: Geospatial Data Abstraction Library Summary(pl.UTF-8): Biblioteka abstrakcji danych dotyczących powierzchni Ziemi Name: gdal Version: 3.0.4 -Release: 13 +Release: 14 License: BSD-like Group: Libraries Source0: https://github.com/OSGeo/gdal/releases/download/v%{version}/%{name}-%{version}.tar.gz @@ -61,6 +61,7 @@ Patch2: %{name}-dds.patch Patch3: %{name}-rasdaman.patch Patch4: %{name}-pluginsdir.patch Patch5: libx32.patch +Patch6: %{name}-poppler.patch Patch7: decl.patch Patch8: %{name}_tirpcinc.patch Patch9: jasper.patch @@ -275,6 +276,7 @@ Moduł Pythona GDAL. %patch3 -p1 %patch4 -p1 %patch5 -p1 +%patch6 -p1 %patch7 -p1 %patch8 -p1 %patch9 -p2 -- 2.44.0