commit:     ec7cf9f84477ba75203a7182ad5d720259d90874
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 21 18:38:09 2023 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Thu Sep 21 18:42:32 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ec7cf9f8

kde-misc/krename: Fix configure with >=app-text/podofo-0.10

Closes: https://bugs.gentoo.org/914497
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 .../krename/files/krename-5.0.2-podofo-0.10.patch  | 319 +++++++++++++++++++++
 kde-misc/krename/krename-5.0.2-r1.ebuild           |   5 +-
 2 files changed, 323 insertions(+), 1 deletion(-)

diff --git a/kde-misc/krename/files/krename-5.0.2-podofo-0.10.patch 
b/kde-misc/krename/files/krename-5.0.2-podofo-0.10.patch
new file mode 100644
index 000000000000..3410e3f20c2d
--- /dev/null
+++ b/kde-misc/krename/files/krename-5.0.2-podofo-0.10.patch
@@ -0,0 +1,319 @@
+From 0528606297a82aae46cb5e44a2bb406cbc033615 Mon Sep 17 00:00:00 2001
+From: Antonio Rojas <[email protected]>
+Date: Mon, 17 Jul 2023 20:29:37 +0000
+Subject: [PATCH 1/2] Support podofo 0.10
+
+Version 0.10 of podofo is a complete rewrite. krename's use of it is minimal, 
so porting is easy.
+
+Switch the cmake module to use pkgconfig, which is available since 0.9.5 
(release in 2017).
+
+Unfortunately, the hack to find the version number is still needed, since the 
pc file is buggy and ships an empty "Version" field.
+---
+ cmake/modules/FindPoDoFo.cmake | 31 +++++++++++++++----------------
+ src/podofoplugin.cpp           | 20 ++++++++++++++++++++
+ 2 files changed, 35 insertions(+), 16 deletions(-)
+
+diff --git a/cmake/modules/FindPoDoFo.cmake b/cmake/modules/FindPoDoFo.cmake
+index 3d044f0..c771149 100644
+--- a/cmake/modules/FindPoDoFo.cmake
++++ b/cmake/modules/FindPoDoFo.cmake
+@@ -36,15 +36,8 @@
+ # (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(FindPackageHandleStandardArgs)
+-find_package_handle_standard_args(PoDoFo DEFAULT_MSG PoDoFo_LIBRARIES 
PoDoFo_INCLUDE_DIRS)
++include(FindPkgConfig)
++pkg_search_module(PoDoFo libpodofo libpodofo-0)
+ 
+ set(PoDoFo_DEFINITIONS)
+ if(PoDoFo_FOUND)
+@@ -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)
+@@ -84,4 +79,8 @@ if(PoDoFo_FOUND)
+   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/src/podofoplugin.cpp b/src/podofoplugin.cpp
+index 9bcce21..79fd735 100644
+--- a/src/podofoplugin.cpp
++++ b/src/podofoplugin.cpp
+@@ -61,6 +61,25 @@ QString PodofoPlugin::processFile(BatchRenamer *b, int 
index, const QString &fil
+     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 +97,7 @@ QString PodofoPlugin::processFile(BatchRenamer *b, int 
index, const QString &fil
+         } else if (token == "pdfpages") {
+             return QString::number(doc.GetPageCount());
+         }
++#endif
+     } catch (PdfError &error) {
+         return QString::fromUtf8(error.what());
+     }
+-- 
+2.42.0
+
+
+From a054a825521698f1de4b387949ef56a15e78feb6 Mon Sep 17 00:00:00 2001
+From: Heiko Becker <[email protected]>
+Date: Sat, 15 Jul 2023 18:20:06 +0200
+Subject: [PATCH 2/2] cmake: Improve FindPoDoFo
+
+Add some rst based documentation and provide an imported target for
+example.
+I've dropped -DUSING_SHARED_PODOFO, which looks weird nowadays and
+seems to exist because of Windows, which I can't test. So comment it out
+for now, but it'll probably be removed in the future, if nobody turns up
+who cares about Windows and can comment on it.
+---
+ CMakeLists.txt                 |   5 +-
+ cmake/modules/FindPoDoFo.cmake | 121 ++++++++++++++++++++++++---------
+ src/CMakeLists.txt             |   7 +-
+ 3 files changed, 91 insertions(+), 42 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index a772b6a..9d736be 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -63,10 +63,7 @@ endif()
+ 
+ # Find podofo
+ find_package(PoDoFo)
+-set_package_properties(PoDoFo PROPERTIES
+-    DESCRIPTION "A library to access PDF metadata"
+-    URL "http://podofo.sourceforge.net/";
+-    TYPE OPTIONAL)
++set_package_properties(PoDoFo PROPERTIES TYPE OPTIONAL)
+ 
+ # Find freetype
+ find_package(Freetype)
+diff --git a/cmake/modules/FindPoDoFo.cmake b/cmake/modules/FindPoDoFo.cmake
+index c771149..dce7473 100644
+--- a/cmake/modules/FindPoDoFo.cmake
++++ b/cmake/modules/FindPoDoFo.cmake
+@@ -1,17 +1,5 @@
+-# - Try to find the PoDoFo library
+-#
+-# Windows users MUST set when building:
+-#
+-# PoDoFo_USE_SHARED - whether use PoDoFo as shared library
+-#
+-# Once done this will define:
+-#
+-# PoDoFo_FOUND - system has the PoDoFo library
+-# PoDoFo_INCLUDE_DIRS - the PoDoFo include directory
+-# PoDoFo_LIBRARIES - the libraries needed to use PoDoFo
+-# PoDoFo_DEFINITIONS - the definitions needed to use PoDoFo
+-#
+ # Copyright 2016 Pino Toscano <[email protected]>
++# Copyright 2023 Heiko Becker <[email protected]>
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions
+@@ -36,23 +24,63 @@
+ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ 
+-include(FindPkgConfig)
+-pkg_search_module(PoDoFo libpodofo libpodofo-0)
+-
+-set(PoDoFo_DEFINITIONS)
+-if(PoDoFo_FOUND)
+-  if(WIN32)
+-    if(NOT DEFINED PoDoFo_USE_SHARED)
+-      message(SEND_ERROR "Win32 users MUST set PoDoFo_USE_SHARED")
+-      message(SEND_ERROR "Set -DPoDoFo_USE_SHARED=0 if linking to a static 
library PoDoFo")
+-      message(SEND_ERROR "or -DPoDoFo_USE_SHARED=1 if linking to a DLL build 
of PoDoFo")
+-      message(FATAL_ERROR "PoDoFo_USE_SHARED unset on win32 build")
+-    else()
+-      if(PoDoFo_USE_SHARED)
+-        set(PoDoFo_DEFINITIONS "${PoDoFo_DEFINITIONS} -DUSING_SHARED_PODOFO")
+-      endif(PoDoFo_USE_SHARED)
+-    endif()
+-  endif()
++#[=======================================================================[.rst:
++FindPoDoFo
++------------
++
++Try to find PoDoFo, a C++ library to work with the PDF file format
++
++This will define the following variables:
++
++``PoDoFo_FOUND``
++    True if PoDoFo is available
++``PoDoFo_VERSION``
++    The version of PoDoFo
++``PoDoFo_LIBRARIES``
++    The libraries of PoDoFofor use with target_link_libraries()
++``PoDoFo_INCLUDE_DIRS``
++    The include dirs of PoDoFo for use with target_include_directories()
++
++If ``PoDoFo_FOUND`` is TRUE, it will also define the following imported
++target:
++
++``PoDoFo::PoDoFo``
++    The PoDoFo library
++
++In general we recommend using the imported target, as it is easier to use.
++Bear in mind, however, that if the target is in the link interface of an
++exported library, it must be made available by the package config file.
++
++#]=======================================================================]
++
++find_package(PkgConfig QUIET)
++pkg_search_module(PC_PoDoFo QUIET libpodofo libpodofo-0)
++
++find_library(PoDoFo_LIBRARIES
++    NAMES podofo
++    HINTS ${PC_PoDoFo_LIBRARY_DIRS}
++)
++
++find_path(PoDoFo_INCLUDE_DIRS
++    NAMES podofo.h
++    HINTS ${PC_PoDoFo_INCLUDE_DIRS}
++)
++
++if(PoDoFo_INCLUDE_DIRS)
++  # NOTE: I have no idea if that's still needed and no possibility to test on
++  # Windows.
++  #if(WIN32)
++  #  if(NOT DEFINED PoDoFo_USE_SHARED)
++  #    message(SEND_ERROR "Win32 users MUST set PoDoFo_USE_SHARED")
++  #    message(SEND_ERROR "Set -DPoDoFo_USE_SHARED=0 if linking to a static 
library PoDoFo")
++  #    message(SEND_ERROR "or -DPoDoFo_USE_SHARED=1 if linking to a DLL build 
of PoDoFo")
++  #    message(FATAL_ERROR "PoDoFo_USE_SHARED unset on win32 build")
++  #  else()
++  #    if(PoDoFo_USE_SHARED)
++  #      set(PoDoFo_DEFINITIONS "${PoDoFo_DEFINITIONS} -DUSING_SHARED_PODOFO")
++  #    endif(PoDoFo_USE_SHARED)
++  #  endif()
++  #endif()
+ 
+   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]+$")
+@@ -80,7 +108,36 @@ if(PoDoFo_FOUND)
+ endif()
+ 
+ if(PoDoFo_VERSION VERSION_GREATER_EQUAL 0.10.0)
+-  set(CMAKE_CXX_STANDARD 17)
++    set(CMAKE_CXX_STANDARD 17)
++endif()
++
++include(FindPackageHandleStandardArgs)
++find_package_handle_standard_args(PoDoFo
++    FOUND_VAR
++        PoDoFo_FOUND
++    REQUIRED_VARS
++        PoDoFo_LIBRARIES
++        PoDoFo_INCLUDE_DIRS
++    VERSION_VAR
++        PoDoFo_VERSION
++)
++
++if(PoDoFo_FOUND AND NOT TARGET PoDoFo::PoDoFo)
++    add_library(PoDoFo::PoDoFo UNKNOWN IMPORTED)
++    set_target_properties(PoDoFo::PoDoFo PROPERTIES
++        IMPORTED_LOCATION "${PoDoFo_LIBRARIES}"
++        INTERFACE_COMPILE_OPTIONS "${PC_PoDoFo_CFLAGS}"
++        INTERFACE_INCLUDE_DIRECTORIES "${PoDoFo_INCLUDE_DIRS}"
++    )
++    if(TARGET PkgConfig::PC_PoDoFo)
++        target_link_libraries(PoDoFo::PoDoFo INTERFACE PkgConfig::PC_PoDoFo)
++    endif()
+ endif()
+ 
+-mark_as_advanced(PoDoFo_INCLUDE_DIRS PoDoFo_LIBRARIES PoDoFo_DEFINITIONS)
++mark_as_advanced(PoDoFo_LIBRARIES PoDoFo_INCLUDE_DIRS PoDoFo_VERSION)
++
++include(FeatureSummary)
++set_package_properties(PoDoFo PROPERTIES
++    DESCRIPTION "A C++ libary to work with the PDF file format"
++    URL "https://github.com/podofo/podofo";
++)
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index e4b00ac..cffe7fb 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -14,11 +14,6 @@ if(EXIV2_FOUND)
+     include_directories(${EXIV2_INCLUDE_DIR})
+ endif()
+ 
+-if(PoDoFo_FOUND)
+-    include_directories(${PoDoFo_INCLUDE_DIRS})
+-    add_definitions(${PoDoFo_DEFINITIONS})
+-endif()
+-
+ if(FREETYPE_FOUND)
+     include_directories(${FREETYPE_INCLUDE_DIRS})
+ endif()
+@@ -138,7 +133,7 @@ if(LibExiv2_FOUND)
+ endif()
+ if(PoDoFo_FOUND)
+     target_link_libraries(krename
+-        ${PoDoFo_LIBRARIES}
++        PoDoFo::PoDoFo
+     )
+ endif()
+ if(FREETYPE_FOUND)
+-- 
+2.42.0
+

diff --git a/kde-misc/krename/krename-5.0.2-r1.ebuild 
b/kde-misc/krename/krename-5.0.2-r1.ebuild
index 36cabcc29156..fc67232d79aa 100644
--- a/kde-misc/krename/krename-5.0.2-r1.ebuild
+++ b/kde-misc/krename/krename-5.0.2-r1.ebuild
@@ -46,7 +46,10 @@ DEPEND="
 RDEPEND="${DEPEND}"
 BDEPEND="sys-devel/gettext"
 
-PATCHES=( "${WORKDIR}/${P}-patchset-1" ) # upstream, git master
+PATCHES=(
+       "${WORKDIR}/${P}-patchset-1" # upstream, git master
+       "${FILESDIR}/${P}-podofo-0.10.patch" # bug 914497
+)
 
 src_configure() {
        local mycmakeargs=(

Reply via email to