From 2ded19ac464dcd1c12946e7cd9e4e37a56fa5535 Mon Sep 17 00:00:00 2001 From: fabolous005 Date: Mon, 6 Oct 2025 14:39:26 +0200 Subject: [PATCH] add poppler --- .../poppler-0.57.0-disable-internal-jpx.patch | 25 +++ .../poppler-21.09.0-respect-cflags.patch | 116 ++++++++++++++ .../files/poppler-23.10.0-qt-deps.patch | 61 +++++++ app-text/poppler/poppler-25.09.1.ebuild | 151 ++++++++++++++++++ 4 files changed, 353 insertions(+) create mode 100644 app-text/poppler/files/poppler-0.57.0-disable-internal-jpx.patch create mode 100644 app-text/poppler/files/poppler-21.09.0-respect-cflags.patch create mode 100644 app-text/poppler/files/poppler-23.10.0-qt-deps.patch create mode 100644 app-text/poppler/poppler-25.09.1.ebuild diff --git a/app-text/poppler/files/poppler-0.57.0-disable-internal-jpx.patch b/app-text/poppler/files/poppler-0.57.0-disable-internal-jpx.patch new file mode 100644 index 0000000..faf6321 --- /dev/null +++ b/app-text/poppler/files/poppler-0.57.0-disable-internal-jpx.patch @@ -0,0 +1,25 @@ +Fix security issue [internal unmaintained JPX decoder] that is caused +by building without system-jpeg libs. Fedora does not care because they +always build with system-jpeg, however in Gentoo we allow the user to +disable both options and poppler's buildsystem is making us believe +there would be no JPX decoder built in that case, when in reality +JPXStream.cc is built (even if it may not be used by the code). + + +--- a/CMakeLists.txt 2017-11-24 23:12:41.953450442 +0100 ++++ b/CMakeLists.txt 2017-11-24 23:16:09.441030669 +0100 +@@ -506,9 +508,11 @@ + add_definitions(-DUSE_OPENJPEG2) + set(poppler_LIBS ${poppler_LIBS} ${LIBOPENJPEG2_LIBRARIES}) + else () +- set(poppler_SRCS ${poppler_SRCS} +- poppler/JPXStream.cc +- ) ++ if(NOT WITH_OPENJPEG AND HAVE_JPX_DECODER) ++ set(poppler_SRCS ${poppler_SRCS} ++ poppler/JPXStream.cc ++ ) ++ endif() + endif() + if(USE_CMS) + if(LCMS_FOUND) diff --git a/app-text/poppler/files/poppler-21.09.0-respect-cflags.patch b/app-text/poppler/files/poppler-21.09.0-respect-cflags.patch new file mode 100644 index 0000000..08eb5be --- /dev/null +++ b/app-text/poppler/files/poppler-21.09.0-respect-cflags.patch @@ -0,0 +1,116 @@ +This can be renamed on the next version after 21.08.0. User wanted to test +some patches committed upstream so ended up needing to rebase this patch. + +From a9f54d7c37b2b738767d757517466768a9f5a8fe Mon Sep 17 00:00:00 2001 +From: Theo Anderson +Date: Wed, 14 Apr 2021 10:16:11 +1200 +Subject: [PATCH] build: respect cflags + +[Rebased by: Stefan Radermacher ] +Signed-off-by: Theo Anderson +--- a/cmake/modules/PopplerMacros.cmake ++++ b/cmake/modules/PopplerMacros.cmake +@@ -87,20 +87,15 @@ set(_known_build_types RELWITHDEBINFO;RELEASE;DEBUG;DEBUGFULL;PROFILE) + # CMake toolchain file). To avoid surprising compilation errors, we emit an + # error in that case, so that the user can handle the passed CMAKE_BUILD_TYPE + # in the compiler flags logic below. +-if (NOT "${_CMAKE_BUILD_TYPE_UPPER}" IN_LIST _known_build_types) +- message(FATAL_ERROR "Unsupported CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") +-endif() + set(_save_cflags "${CMAKE_C_FLAGS}") + set(_save_cxxflags "${CMAKE_CXX_FLAGS}") + + if(CMAKE_COMPILER_IS_GNUCXX) +- # set the default compile warnings + set(_warn "-Wall -Wextra -Wpedantic") + set(_warn "${_warn} -Wno-unused-parameter") + set(_warn "${_warn} -Wcast-align") + set(_warn "${_warn} -Wformat-security") + set(_warn "${_warn} -Wframe-larger-than=65536") +- set(_warn "${_warn} -Wlogical-op") + set(_warn "${_warn} -Wmissing-format-attribute") + set(_warn "${_warn} -Wnon-virtual-dtor") + set(_warn "${_warn} -Woverloaded-virtual") +@@ -116,20 +111,6 @@ if(CMAKE_COMPILER_IS_GNUCXX) + + set(DEFAULT_COMPILE_WARNINGS "${_warn}") + set(DEFAULT_COMPILE_WARNINGS_EXTRA "${_warn} ${_warnx}") +- +- set(CMAKE_CXX_FLAGS "-fno-exceptions -fno-check-new -fno-common -fno-operator-names -D_DEFAULT_SOURCE") +- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g") +- set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG") +- set(CMAKE_CXX_FLAGS_DEBUG "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline") +- set(CMAKE_CXX_FLAGS_DEBUGFULL "-g3 -fno-inline") +- set(CMAKE_CXX_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs") +- set(CMAKE_C_FLAGS "-std=c99 -D_DEFAULT_SOURCE") +- set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g") +- set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG") +- set(CMAKE_C_FLAGS_DEBUG "-g -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline") +- set(CMAKE_C_FLAGS_DEBUGFULL "-g3 -fno-inline") +- set(CMAKE_C_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs") +- + poppler_check_link_flag("-Wl,--as-needed" GCC_HAS_AS_NEEDED) + if(GCC_HAS_AS_NEEDED) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--as-needed") +@@ -139,56 +120,8 @@ if(CMAKE_COMPILER_IS_GNUCXX) + set(_compiler_flags_changed 1) + endif (CMAKE_COMPILER_IS_GNUCXX) + +-if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") +-# set the default compile warnings +- set(_warn "-Wall -Wextra -Wpedantic") +- set(_warn "${_warn} -Wno-unused-parameter") +- set(_warn "${_warn} -Wcast-align") +- set(_warn "${_warn} -Wformat-security") +- set(_warn "${_warn} -Wframe-larger-than=65536") +- set(_warn "${_warn} -Wmissing-format-attribute") +- set(_warn "${_warn} -Wnon-virtual-dtor") +- set(_warn "${_warn} -Woverloaded-virtual") +- set(_warn "${_warn} -Wmissing-declarations") +- set(_warn "${_warn} -Wundef") +- set(_warn "${_warn} -Wzero-as-null-pointer-constant") +- set(_warn "${_warn} -Wshadow") +- set(_warn "${_warn} -Wweak-vtables") +- +- # set extra warnings +- set(_warnx "${_warnx} -Wconversion") +- +- set(DEFAULT_COMPILE_WARNINGS "${_warn}") +- set(DEFAULT_COMPILE_WARNINGS_EXTRA "${_warn} ${_warnx}") +- +- set(CMAKE_CXX_FLAGS "-fno-exceptions -fno-check-new -fno-common -D_DEFAULT_SOURCE") +- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g") +- set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG") +- # clang does not support -fno-reorder-blocks -fno-schedule-insns, so do not use -O2 +- set(CMAKE_CXX_FLAGS_DEBUG "-g") +- set(CMAKE_CXX_FLAGS_DEBUGFULL "-g3 -fno-inline") +- set(CMAKE_CXX_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs") +- set(CMAKE_C_FLAGS "-std=c99 -D_DEFAULT_SOURCE") +- set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g") +- set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG") +- # clang does not support -fno-reorder-blocks -fno-schedule-insns, so do not use -O2 +- set(CMAKE_C_FLAGS_DEBUG "-g") +- set(CMAKE_C_FLAGS_DEBUGFULL "-g3 -fno-inline") +- set(CMAKE_C_FLAGS_PROFILE "-g3 -fno-inline -ftest-coverage -fprofile-arcs") +- set(_compiler_flags_changed 1) +-endif() +- +-if(CMAKE_C_COMPILER MATCHES "icc") +- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g") +- set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG") +- set(CMAKE_CXX_FLAGS_DEBUG "-O2 -g -0b0 -noalign") +- set(CMAKE_CXX_FLAGS_DEBUGFULL "-g -Ob0 -noalign") +- set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g") +- set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG") +- set(CMAKE_C_FLAGS_DEBUG "-O2 -g -Ob0 -noalign") +- set(CMAKE_C_FLAGS_DEBUGFULL "-g -Ob0 -noalign") +- set(_compiler_flags_changed 1) +-endif(CMAKE_C_COMPILER MATCHES "icc") ++set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Woverloaded-virtual") ++set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") + + if(_compiler_flags_changed) + # Ensure that the previous CMAKE_{C,CXX}_FLAGS are included in the current configuration flags. +-- +2.33.0 + diff --git a/app-text/poppler/files/poppler-23.10.0-qt-deps.patch b/app-text/poppler/files/poppler-23.10.0-qt-deps.patch new file mode 100644 index 0000000..f906e33 --- /dev/null +++ b/app-text/poppler/files/poppler-23.10.0-qt-deps.patch @@ -0,0 +1,61 @@ +From e5927c7250afd6b715a9de520851b26e41b7f422 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner +Date: Wed, 9 Dec 2020 01:28:25 +0100 +Subject: [PATCH] Move Qt test dependencies into test dir + +Signed-off-by: Andreas Sturmlechner +--- + CMakeLists.txt | 8 ++++---- + qt5/CMakeLists.txt | 7 +++++-- + qt6/CMakeLists.txt | 6 ++++-- + 3 files changed, 13 insertions(+), 8 deletions(-) + +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -212,15 +212,15 @@ + find_soft_mandatory_package(ENABLE_QT5 Qt5Core ${QT5_VERSION}) + find_soft_mandatory_package(ENABLE_QT5 Qt5Gui ${QT5_VERSION}) + find_soft_mandatory_package(ENABLE_QT5 Qt5Xml ${QT5_VERSION}) +-find_soft_mandatory_package(ENABLE_QT5 Qt5Widgets ${QT5_VERSION}) +-find_soft_mandatory_package(ENABLE_QT5 Qt5Test ${QT5_VERSION}) ++find_soft_mandatory_package(BUILD_QT5_TESTS Qt5Widgets ${QT5_VERSION}) ++find_soft_mandatory_package(BUILD_QT5_TESTS Qt5Test ${QT5_VERSION}) + + set(QT6_VERSION "6.2") + SET(QT_NO_CREATE_VERSIONLESS_TARGETS ON) + find_soft_mandatory_package(ENABLE_QT6 Qt6Core ${QT6_VERSION}) + find_soft_mandatory_package(ENABLE_QT6 Qt6Gui ${QT6_VERSION}) +-find_soft_mandatory_package(ENABLE_QT6 Qt6Widgets ${QT6_VERSION}) +-find_soft_mandatory_package(ENABLE_QT6 Qt6Test ${QT6_VERSION}) ++find_soft_mandatory_package(BUILD_QT6_TESTS Qt6Widgets ${QT6_VERSION}) ++find_soft_mandatory_package(BUILD_QT6_TESTS Qt6Test ${QT6_VERSION}) + + # Check for Cairo rendering backend + macro_optional_find_package(Cairo ${CAIRO_VERSION}) +--- a/qt5/CMakeLists.txt ++++ b/qt5/CMakeLists.txt +@@ -9,5 +9,8 @@ + add_definitions(-DQT_NO_DEPRECATED_WARNINGS) + + add_subdirectory(src) +-add_subdirectory(tests) +-add_subdirectory(demos) ++ ++if(BUILD_QT5_TESTS) ++ add_subdirectory(tests) ++ add_subdirectory(demos) ++endif() +--- a/qt6/CMakeLists.txt ++++ b/qt6/CMakeLists.txt +@@ -7,5 +7,7 @@ + + add_subdirectory(src) + +-add_subdirectory(tests) +-add_subdirectory(demos) ++if(BUILD_QT6_TESTS) ++ add_subdirectory(tests) ++ add_subdirectory(demos) ++endif() +-- +2.29.2 diff --git a/app-text/poppler/poppler-25.09.1.ebuild b/app-text/poppler/poppler-25.09.1.ebuild new file mode 100644 index 0000000..c3f042c --- /dev/null +++ b/app-text/poppler/poppler-25.09.1.ebuild @@ -0,0 +1,151 @@ +# Copyright 2005-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake flag-o-matic toolchain-funcs xdg-utils + +if [[ ${PV} == *9999* ]] ; then + inherit git-r3 + EGIT_REPO_URI="https://gitlab.freedesktop.org/poppler/poppler" + SLOT="0/9999" +else + VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/aacid.asc + inherit verify-sig + + TEST_COMMIT="c79c6839e859dbee6b73ac260788fa2de8618ba4" + SRC_URI="https://poppler.freedesktop.org/${P}.tar.xz" + SRC_URI+=" test? ( https://gitlab.freedesktop.org/poppler/test/-/archive/${TEST_COMMIT}/test-${TEST_COMMIT}.tar.bz2 -> ${PN}-test-${TEST_COMMIT}.tar.bz2 )" + SRC_URI+=" verify-sig? ( https://poppler.freedesktop.org/${P}.tar.xz.sig )" + KEYWORDS="~alpha ~amd64 arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + SLOT="0/153" # CHECK THIS WHEN BUMPING!!! SUBSLOT IS libpoppler.so SOVERSION +fi + +DESCRIPTION="PDF rendering library based on the xpdf-3.0 code base" +HOMEPAGE="https://poppler.freedesktop.org/" + +LICENSE="GPL-2" +IUSE="boost cairo cjk curl +cxx debug doc gpgme +introspection +jpeg +jpeg2k +lcms nss png qt5 qt6 test tiff +utils +glib" +RESTRICT="!test? ( test )" + +COMMON_DEPEND=" + >=media-libs/fontconfig-2.13 + >=media-libs/freetype-2.10 + sys-libs/zlib + cairo? ( + >=dev-libs/glib-2.64:2 + >=x11-libs/cairo-1.16 + introspection? ( >=dev-libs/gobject-introspection-1.72:= ) + ) + curl? ( net-misc/curl ) + gpgme? ( dev-cpp/gpgmepp:= ) + jpeg? ( >=media-libs/libjpeg-turbo-1.1.0:= ) + jpeg2k? ( >=media-libs/openjpeg-2.3.0-r1:2= ) + lcms? ( media-libs/lcms:2 ) + nss? ( >=dev-libs/nss-3.49 ) + png? ( media-libs/libpng:0= ) + qt5? ( + >=dev-qt/qtcore-5.15.2:5 + >=dev-qt/qtgui-5.15.2:5 + >=dev-qt/qtxml-5.15.2:5 + ) + qt6? ( dev-qt/qtbase:6[gui,xml] ) + tiff? ( media-libs/tiff:= ) +" +RDEPEND="${COMMON_DEPEND} + cjk? ( app-text/poppler-data ) +" +DEPEND="${COMMON_DEPEND} + boost? ( >=dev-libs/boost-1.74 ) + test? ( + qt5? ( + >=dev-qt/qttest-5.15.2:5 + >=dev-qt/qtwidgets-5.15.2:5 + ) + qt6? ( dev-qt/qtbase:6[widgets] ) + ) +" +BDEPEND=" + >=dev-util/glib-utils-2.64 + virtual/pkgconfig +" + +if [[ ${PV} != *9999* ]] ; then + BDEPEND+=" verify-sig? ( >=sec-keys/openpgp-keys-aacid-20230907 )" +fi + +DOCS=( AUTHORS NEWS README.md README-XPDF ) + +PATCHES=( + "${FILESDIR}/${PN}-23.10.0-qt-deps.patch" + "${FILESDIR}/${PN}-21.09.0-respect-cflags.patch" + "${FILESDIR}/${PN}-0.57.0-disable-internal-jpx.patch" +) + +src_unpack() { + if [[ ${PV} == *9999* ]] ; then + git-r3_src_unpack + elif use verify-sig ; then + verify-sig_verify_detached "${DISTDIR}"/${P}.tar.xz{,.sig} + fi + + default +} + +src_prepare() { + cmake_src_prepare + + # Clang doesn't grok this flag, the configure nicely tests that, but + # cmake just uses it, so remove it if we use clang + if tc-is-clang ; then + sed -e 's/-fno-check-new//' -i cmake/modules/PopplerMacros.cmake || die + fi +} + +src_configure() { + xdg_environment_reset + append-lfs-flags # bug #898506 + + local mycmakeargs=( + -DBUILD_GTK_TESTS=OFF + -DBUILD_QT5_TESTS=$(usex test $(usex qt5)) + -DBUILD_QT6_TESTS=$(usex test $(usex qt6)) + -DBUILD_CPP_TESTS=$(usex test) + -DBUILD_MANUAL_TESTS=$(usex test) + -DTESTDATADIR="${WORKDIR}"/test-${TEST_COMMIT} + -DRUN_GPERF_IF_PRESENT=OFF + -DENABLE_GLIB=$(usex glib) + -DENABLE_BOOST="$(usex boost)" + -DENABLE_ZLIB_UNCOMPRESS=OFF + -DENABLE_UNSTABLE_API_ABI_HEADERS=ON + -DUSE_FLOAT=OFF + -DWITH_Cairo=$(usex cairo) + -DENABLE_LIBCURL=$(usex curl) + -DENABLE_CPP=$(usex cxx) + -DENABLE_GPGME=$(usex gpgme) + -DWITH_JPEG=$(usex jpeg) + -DENABLE_DCTDECODER=$(usex jpeg libjpeg none) + -DENABLE_LIBOPENJPEG=$(usex jpeg2k openjpeg2 none) + -DENABLE_LCMS=$(usex lcms) + -DENABLE_NSS3=$(usex nss) + -DWITH_PNG=$(usex png) + -DENABLE_QT5=$(usex qt5) + -DENABLE_QT6=$(usex qt6) + -DENABLE_LIBTIFF=$(usex tiff) + -DENABLE_UTILS=$(usex utils) + ) + use cairo && mycmakeargs+=( -DWITH_GObjectIntrospection=$(usex introspection) ) + + cmake_src_configure +} + +src_install() { + cmake_src_install + + # live version doesn't provide html documentation + if use cairo && use doc && [[ ${PV} != *9999* ]]; then + # For now install gtk-doc there + insinto /usr/share/gtk-doc/html/poppler + doins -r "${S}"/glib/reference/html/* + fi +}