add poppler

This commit is contained in:
fabolous005 2025-10-06 14:39:26 +02:00
parent ca9ffba1fe
commit 2ded19ac46
4 changed files with 353 additions and 0 deletions

View File

@ -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)

View File

@ -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 <telans@posteo.de>
Date: Wed, 14 Apr 2021 10:16:11 +1200
Subject: [PATCH] build: respect cflags
[Rebased by: Stefan Radermacher <gentoo@zaister.de>]
Signed-off-by: Theo Anderson <telans@posteo.de>
--- 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

View File

@ -0,0 +1,61 @@
From e5927c7250afd6b715a9de520851b26e41b7f422 Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <asturm@gentoo.org>
Date: Wed, 9 Dec 2020 01:28:25 +0100
Subject: [PATCH] Move Qt test dependencies into test dir
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
---
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

View File

@ -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
}