Fix krename-5.0.2 with podofo 0.10

Cheers Rafael

diff --git a/sysutils/krename/Makefile b/sysutils/krename/Makefile
index 75590637896..5fa2f224676 100644
--- a/sysutils/krename/Makefile
+++ b/sysutils/krename/Makefile
@@ -2,7 +2,7 @@ COMMENT =       powerful batch file renamer
 
 VERSION =      5.0.2
 DISTNAME =     krename-${VERSION}
-REVISION =     3
+REVISION =     4
 
 CATEGORIES =   sysutils x11
 
@@ -34,7 +34,7 @@ RUN_DEPENDS = devel/desktop-file-utils \
 
 LIB_DEPENDS =  audio/taglib \
                graphics/exiv2 \
-               textproc/podofo \
+               textproc/podofo>=0.10 \
                devel/kf5/kcompletion \
                devel/kf5/kconfig \
                devel/kf5/kcoreaddons \
diff --git a/sysutils/krename/patches/patch-cmake_modules_FindPoDoFo_cmake 
b/sysutils/krename/patches/patch-cmake_modules_FindPoDoFo_cmake
new file mode 100644
index 00000000000..2f5ff072cce
--- /dev/null
+++ b/sysutils/krename/patches/patch-cmake_modules_FindPoDoFo_cmake
@@ -0,0 +1,60 @@
+Index: cmake/modules/FindPoDoFo.cmake
+--- cmake/modules/FindPoDoFo.cmake.orig
++++ cmake/modules/FindPoDoFo.cmake
+@@ -36,16 +36,9 @@
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+-find_path(PoDoFo_INCLUDE_DIRS
+-  NAMES podofo/podofo.h
+-)
+-find_library(PoDoFo_LIBRARIES
+-  NAMES libpodofo podofo
+-)
++include(FindPkgConfig)
++pkg_search_module(PoDoFo libpodofo libpodofo-0)
+ 
+-include(FindPackageHandleStandardArgs)
+-find_package_handle_standard_args(PoDoFo DEFAULT_MSG PoDoFo_LIBRARIES 
PoDoFo_INCLUDE_DIRS)
+-
+ set(PoDoFo_DEFINITIONS)
+ if(PoDoFo_FOUND)
+   if(WIN32)
+@@ -61,17 +54,19 @@ if(PoDoFo_FOUND)
+     endif()
+   endif()
+ 
+-  # PoDoFo-0.9.5 unconditionally includes openssl/opensslconf.h in a public
+-  # header. The fix is in https://sourceforge.net/p/podofo/code/1830/ and will
+-  # hopefully be released soon with 0.9.6. Note that krename doesn't use
+-  # OpenSSL in any way.
+-  file(STRINGS "${PoDoFo_INCLUDE_DIRS}/podofo/base/podofo_config.h" 
PoDoFo_MAJOR_VER_LINE REGEX "^#define[ \t]+PODOFO_VERSION_MAJOR[ \t]+[0-9]+$")
+-  file(STRINGS "${PoDoFo_INCLUDE_DIRS}/podofo/base/podofo_config.h" 
PoDoFo_MINOR_VER_LINE REGEX "^#define[ \t]+PODOFO_VERSION_MINOR[ \t]+[0-9]+$")
+-  file(STRINGS "${PoDoFo_INCLUDE_DIRS}/podofo/base/podofo_config.h" 
PoDoFo_PATCH_VER_LINE REGEX "^#define[ \t]+PODOFO_VERSION_PATCH[ \t]+[0-9]+$")
++  find_file(PoDoFo_CONFIG podofo_config.h PATHS ${PoDoFo_INCLUDE_DIRS} 
PATH_SUFFIXES auxiliary base)
++  file(STRINGS "${PoDoFo_CONFIG}" PoDoFo_MAJOR_VER_LINE REGEX "^#define[ 
\t]+PODOFO_VERSION_MAJOR[ \t]+[0-9]+$")
++  file(STRINGS "${PoDoFo_CONFIG}" PoDoFo_MINOR_VER_LINE REGEX "^#define[ 
\t]+PODOFO_VERSION_MINOR[ \t]+[0-9]+$")
++  file(STRINGS "${PoDoFo_CONFIG}" PoDoFo_PATCH_VER_LINE REGEX "^#define[ 
\t]+PODOFO_VERSION_PATCH[ \t]+[0-9]+$")
+   string(REGEX REPLACE "^#define[ \t]+PODOFO_VERSION_MAJOR[ \t]+([0-9]+)$" 
"\\1" PoDoFo_MAJOR_VER "${PoDoFo_MAJOR_VER_LINE}")
+   string(REGEX REPLACE "^#define[ \t]+PODOFO_VERSION_MINOR[ \t]+([0-9]+)$" 
"\\1" PoDoFo_MINOR_VER "${PoDoFo_MINOR_VER_LINE}")
+   string(REGEX REPLACE "^#define[ \t]+PODOFO_VERSION_PATCH[ \t]+([0-9]+)$" 
"\\1" PoDoFo_PATCH_VER "${PoDoFo_PATCH_VER_LINE}")
+   set(PoDoFo_VERSION 
"${PoDoFo_MAJOR_VER}.${PoDoFo_MINOR_VER}.${PoDoFo_PATCH_VER}")
++
++  # PoDoFo-0.9.5 unconditionally includes openssl/opensslconf.h in a public
++  # header. The fix is in https://sourceforge.net/p/podofo/code/1830/ and will
++  # hopefully be released soon with 0.9.6. Note that krename doesn't use
++  # OpenSSL in any way.
+   if(PoDoFo_VERSION VERSION_EQUAL "0.9.5")
+     find_package(OpenSSL)
+     if (OpenSSL_FOUND)
+@@ -82,6 +77,10 @@ if(PoDoFo_FOUND)
+       message("OpenSSL NOT found, which is required for this version of 
PoDofo (0.9.5)")
+     endif()
+   endif()
++endif()
++
++if(PoDoFo_VERSION VERSION_GREATER_EQUAL 0.10.0)
++  set(CMAKE_CXX_STANDARD 17)
+ endif()
+ 
+ mark_as_advanced(PoDoFo_INCLUDE_DIRS PoDoFo_LIBRARIES PoDoFo_DEFINITIONS)
diff --git a/sysutils/krename/patches/patch-src_podofoplugin_cpp 
b/sysutils/krename/patches/patch-src_podofoplugin_cpp
new file mode 100644
index 00000000000..200835f4f3b
--- /dev/null
+++ b/sysutils/krename/patches/patch-src_podofoplugin_cpp
@@ -0,0 +1,38 @@
+Index: src/podofoplugin.cpp
+--- src/podofoplugin.cpp.orig
++++ src/podofoplugin.cpp
+@@ -61,6 +61,26 @@ QString PodofoPlugin::processFile(BatchRenamer *b, int
+     try {
+         PdfMemDocument doc;
+         doc.Load(filename.toUtf8().data());
++#if (PODOFO_VERSION_MINOR>=10 || PODOFO_VERSION_MAJOR>=1)
++        const PdfInfo *info = doc.GetInfo();
++
++        if (token == "pdfauthor") {
++
++            return info->GetAuthor().has_value() ? 
QString::fromUtf8(info->GetAuthor()->GetString().c_str()) : QString();
++        } else if (token == "pdfcreator") {
++            return info->GetCreator().has_value() ? 
QString::fromUtf8(info->GetCreator()->GetString().c_str()) : QString();
++        } else if (token == "pdfkeywords") {
++            return info->GetKeywords().has_value() ? 
QString::fromUtf8(info->GetKeywords()->GetString().c_str()) : QString();
++        } else if (token == "pdfsubject") {
++            return info->GetSubject().has_value() ? 
QString::fromUtf8(info->GetSubject()->GetString().c_str()) : QString();
++        } else if (token == "pdftitle") {
++            return info->GetTitle().has_value() ? 
QString::fromUtf8(info->GetTitle()->GetString().c_str()) : QString();
++        } else if (token == "pdfproducer") {
++            return info->GetProducer().has_value() ? 
QString::fromUtf8(info->GetProducer()->GetString().c_str()) : QString();
++        } else if (token == "pdfpages") {
++            return QString::number(doc.GetPages().GetCount());
++        }
++#else
+         PdfInfo *info = doc.GetInfo();
+ 
+         if (token == "pdfauthor") {
+@@ -78,6 +98,7 @@ QString PodofoPlugin::processFile(BatchRenamer *b, int
+         } else if (token == "pdfpages") {
+             return QString::number(doc.GetPageCount());
+         }
++#endif
+     } catch (PdfError &error) {
+         return QString::fromUtf8(error.what());
+     }

Reply via email to