commit:     5e3a8540c79c272331e3e08fb4be637dd98217a4
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat Oct 18 22:02:26 2025 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat Oct 18 22:36:45 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5e3a8540

app-office/calligra: add 25.08.2, build w/ eigen-5, cmake-4, poppler-25.10

Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 app-office/calligra/Manifest                       |   1 +
 app-office/calligra/calligra-25.08.2.ebuild        | 144 ++++++++++++++++
 .../calligra/files/calligra-25.08.2-cmake4.patch   |  29 ++++
 .../files/calligra-25.08.2-poppler-25.10.patch     | 183 +++++++++++++++++++++
 4 files changed, 357 insertions(+)

diff --git a/app-office/calligra/Manifest b/app-office/calligra/Manifest
index 5b44bb8add3e..fd09a57ea050 100644
--- a/app-office/calligra/Manifest
+++ b/app-office/calligra/Manifest
@@ -1,2 +1,3 @@
 DIST calligra-25.04.2.tar.xz 58079932 BLAKE2B 
e35ca854d61cb5996c6b50bdc74d580786b43b1bcb5ab87c2c2504279b176f34a801798b8e077f93d2f466595f7ac7979f3aa227fa26a8f17514935d5ff11a0e
 SHA512 
0cc253cdcc0d89f84ff103b43933ffd4c9562f840feaad52bff0c4d32e8454063277dc28c1edda9889257a818a6a84a1355f8b9742683dcc16f94bf03946a7be
+DIST calligra-25.08.2.tar.xz 58039844 BLAKE2B 
7bde4531c7631ff98ce4245150e881827dcb319d19dc7493d102d9887f6366dcd5121dc03f27f831daf52c667f6b468e0c7f975287b65c1dc41f9f58fa1ce5c1
 SHA512 
968c582ebe379bce9e80b54c06e33daadaaa30c2237285bbdf8bd656145cde03544f2c0bdbdb6767f9d5aa37c910c5f6af09027d5f8764ae4914c1a8b14d8460
 DIST calligra-3.2.1-patchset-1.tar.xz 11924 BLAKE2B 
5a71a7960a6d2a4d5e55129f4812fb13a2fb56613283d4582266e1836f107b711be43cb158e29c440fbda6992c03a3f4907f0600d21522fd9ab07c66354234a9
 SHA512 
26ec818f2415c43b116b716557710361621e1e4446087fe123e29107f82400ec82f19ab3a76dde9b749ed4b9f15da9c05c3fa6137fc814241c48ffc12f5628fc

diff --git a/app-office/calligra/calligra-25.08.2.ebuild 
b/app-office/calligra/calligra-25.08.2.ebuild
new file mode 100644
index 000000000000..5af68fa89f02
--- /dev/null
+++ b/app-office/calligra/calligra-25.08.2.ebuild
@@ -0,0 +1,144 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CHECKREQS_DISK_BUILD="4G"
+ECM_HANDBOOK="forceoptional"
+ECM_TEST="forceoptional"
+KFMIN=6.16.0
+QTMIN=6.9.1
+inherit check-reqs ecm gear.kde.org xdg
+
+DESCRIPTION="KDE Office Suite"
+HOMEPAGE="https://calligra.org/";
+PATCHSET="${PN}-3.2.1-patchset-1"
+SRC_URI+=" https://dev.gentoo.org/~asturm/distfiles/${PATCHSET}.tar.xz";
+
+LICENSE="GPL-2"
+SLOT="0"
+if [[ ${KDE_BUILD_TYPE} == release ]]; then
+       KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+fi
+CAL_FTS=( karbon sheets stage words )
+IUSE="+charts +fontconfig gsl +import-filter +lcms okular +pdf phonon
+       +truetype webengine X $(printf 'calligra_features_%s ' ${CAL_FTS[@]})"
+
+RESTRICT="test"
+
+# TODO: Not packaged: Cauchy (https://bitbucket.org/cyrille/cauchy)
+# Required for the matlab/octave formula tool
+COMMON_DEPEND="
+       dev-lang/perl
+       dev-libs/openssl:=
+       >=dev-libs/qtkeychain-0.14.2:=[qt6(+)]
+       >=dev-qt/qtbase-${QTMIN}:6[dbus,gui,network,widgets,xml]
+       >=dev-qt/qtdeclarative-${QTMIN}:6[widgets]
+       >=dev-qt/qtsvg-${QTMIN}:6
+       >=dev-qt/qttools-${QTMIN}:6[designer]
+       >=kde-frameworks/karchive-${KFMIN}:6
+       >=kde-frameworks/kcmutils-${KFMIN}:6
+       >=kde-frameworks/kcompletion-${KFMIN}:6
+       >=kde-frameworks/kconfig-${KFMIN}:6
+       >=kde-frameworks/kconfigwidgets-${KFMIN}:6
+       >=kde-frameworks/kcoreaddons-${KFMIN}:6
+       >=kde-frameworks/kcrash-${KFMIN}:6
+       >=kde-frameworks/kdbusaddons-${KFMIN}:6
+       >=kde-frameworks/kguiaddons-${KFMIN}:6
+       >=kde-frameworks/ki18n-${KFMIN}:6
+       >=kde-frameworks/kiconthemes-${KFMIN}:6
+       >=kde-frameworks/kio-${KFMIN}:6
+       >=kde-frameworks/kirigami-${KFMIN}:6
+       >=kde-frameworks/kitemviews-${KFMIN}:6
+       >=kde-frameworks/kjobwidgets-${KFMIN}:6
+       >=kde-frameworks/knotifications-${KFMIN}:6
+       >=kde-frameworks/knotifyconfig-${KFMIN}:6
+       >=kde-frameworks/ktextwidgets-${KFMIN}:6
+       >=kde-frameworks/kwidgetsaddons-${KFMIN}:6
+       >=kde-frameworks/kwindowsystem-${KFMIN}:6
+       >=kde-frameworks/kxmlgui-${KFMIN}:6
+       >=kde-frameworks/sonnet-${KFMIN}:6
+       sys-libs/zlib
+       virtual/libiconv
+       charts? ( dev-libs/kdiagram:6 )
+       fontconfig? ( media-libs/fontconfig )
+       gsl? ( sci-libs/gsl:= )
+       import-filter? (
+               app-text/libetonyek
+               app-text/libodfgen
+               app-text/libwpd:*
+               app-text/libwpg:*
+               >=app-text/libwps-0.4
+               dev-libs/librevenge
+               media-libs/libvisio
+       )
+       lcms? ( media-libs/lcms:2 )
+       okular? ( kde-apps/okular:6 )
+       pdf? ( >=app-text/poppler-25.02.0:=[qt6] )
+       phonon? ( >=media-libs/phonon-4.12.0[qt6(+)] )
+       truetype? ( media-libs/freetype:2 )
+       webengine? ( >=dev-qt/qtwebengine-${QTMIN}:6[widgets] )
+       calligra_features_sheets? ( dev-cpp/eigen:3 )
+       calligra_features_words? ( dev-libs/libxslt )
+"
+DEPEND="${COMMON_DEPEND}
+       dev-libs/boost
+       lcms? ( dev-libs/imath:3 )
+       test? ( >=kde-frameworks/threadweaver-${KFMIN}:6 )
+"
+RDEPEND="${COMMON_DEPEND}
+       !${CATEGORY}/${PN}:5
+       calligra_features_karbon? ( media-gfx/pstoedit[plotutils] )
+"
+BDEPEND="
+       sys-devel/gettext
+       virtual/pkgconfig
+"
+
+PATCHES=(
+       "${WORKDIR}"/${PATCHSET}/${PN}-3.1.89-no-arch-detection.patch # 
downstream
+       "${FILESDIR}"/${P}-cmake4.patch # pending MR
+       "${FILESDIR}"/${P}-poppler-25.10.patch # git master
+)
+
+src_configure() {
+       local cal_ft myproducts
+
+       # applications
+       for cal_ft in ${CAL_FTS[@]}; do
+               use calligra_features_${cal_ft} && myproducts+=( "${cal_ft^^}" )
+       done
+
+       use lcms && myproducts+=( PLUGIN_COLORENGINES )
+       use okular && myproducts+=( OKULAR )
+
+       local mycmakeargs=(
+               -DPACKAGERS_BUILD=OFF
+               -DRELEASE_BUILD=ON
+               -DWITH_Iconv=ON
+               -DWITH_Imath=ON # w/ LCMS: 16 bit floating point Grayscale 
colorspace
+               -DCMAKE_DISABLE_FIND_PACKAGE_Cauchy=ON
+               -DPRODUCTSET="${myproducts[*]}"
+               $(cmake_use_find_package charts KChart6)
+               -DWITH_Fontconfig=$(usex fontconfig)
+               -DWITH_GSL=$(usex gsl)
+               -DWITH_LibEtonyek=$(usex import-filter)
+               -DWITH_LibOdfGen=$(usex import-filter)
+               -DWITH_LibRevenge=$(usex import-filter)
+               -DWITH_LibVisio=$(usex import-filter)
+               -DWITH_LibWpd=$(usex import-filter)
+               -DWITH_LibWpg=$(usex import-filter)
+               -DWITH_LibWps=$(usex import-filter)
+               $(cmake_use_find_package phonon Phonon4Qt6)
+               -DWITH_LCMS2=$(usex lcms)
+               -DWITH_Okular6=$(usex okular)
+               -DWITH_Poppler=$(usex pdf)
+               -DWITH_PopplerXPDFHeaders=$(usex pdf)
+               -DWITH_Eigen3=$(usex calligra_features_sheets)
+               -DBUILD_UNMAINTAINED=$(usex calligra_features_stage)
+               -DWITH_Freetype=$(usex truetype)
+               $(cmake_use_find_package webengine Qt6WebEngineWidgets)
+       )
+
+       ecm_src_configure
+}

diff --git a/app-office/calligra/files/calligra-25.08.2-cmake4.patch 
b/app-office/calligra/files/calligra-25.08.2-cmake4.patch
new file mode 100644
index 000000000000..7551ccbaa814
--- /dev/null
+++ b/app-office/calligra/files/calligra-25.08.2-cmake4.patch
@@ -0,0 +1,29 @@
+Source: https://invent.kde.org/office/calligra/-/merge_requests/161
+
+From 1cd552847b4d936dd494159ba1fb8f8a9b83d065 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <[email protected]>
+Date: Sun, 19 Oct 2025 00:11:16 +0200
+Subject: [PATCH] Align words generator CMake minimum version w/ root
+ CMakeLists.txt
+
+CMake 4 dropped support for versions below 3.5.
+
+Signed-off-by: Andreas Sturmlechner <[email protected]>
+---
+ filters/words/msword-odf/wv2/src/generator/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/filters/words/msword-odf/wv2/src/generator/CMakeLists.txt 
b/filters/words/msword-odf/wv2/src/generator/CMakeLists.txt
+index 10d1c022e9e..df964873b0e 100644
+--- a/filters/words/msword-odf/wv2/src/generator/CMakeLists.txt
++++ b/filters/words/msword-odf/wv2/src/generator/CMakeLists.txt
+@@ -1,5 +1,5 @@
+ # Generate parsers for some Word structures.
+-cmake_minimum_required(VERSION 3.2.0)
++cmake_minimum_required(VERSION 3.16)
+ 
+ set( scanner_word95
+       ${CMAKE_CURRENT_BINARY_DIR}/word95_generated.h
+-- 
+2.51.1
+

diff --git a/app-office/calligra/files/calligra-25.08.2-poppler-25.10.patch 
b/app-office/calligra/files/calligra-25.08.2-poppler-25.10.patch
new file mode 100644
index 000000000000..3c0b8246b126
--- /dev/null
+++ b/app-office/calligra/files/calligra-25.08.2-poppler-25.10.patch
@@ -0,0 +1,183 @@
+From 45e8b302bce1d318f310ea13599d7ce84acc477e Mon Sep 17 00:00:00 2001
+From: Carl Schwan <[email protected]>
+Date: Sun, 5 Oct 2025 14:21:49 +0200
+Subject: [PATCH] Bump poppler to 25.02.0
+
+---
+ CMakeLists.txt                       |  2 +-
+ filters/karbon/pdf/Pdf2OdgImport.cpp | 18 +++++-------------
+ filters/karbon/pdf/PdfImport.cpp     | 27 +++++++++------------------
+ filters/karbon/pdf/SvgOutputDev.cpp  | 18 ++++++++++++------
+ 4 files changed, 27 insertions(+), 38 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 237308baa5d..878caf74af4 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -618,7 +618,7 @@ set_package_properties(LibEtonyek PROPERTIES
+ ##
+ ## Test for qt-poppler
+ ##
+-macro_optional_find_package(Poppler "22.02.0" COMPONENTS Qt6)
++macro_optional_find_package(Poppler "25.02.0" COMPONENTS Qt6)
+ set_package_properties(Poppler PROPERTIES
+     PURPOSE "Required by the Karbon PDF import filter and CSTester PDF 
feature"
+     TYPE RECOMMENDED
+diff --git a/filters/karbon/pdf/Pdf2OdgImport.cpp 
b/filters/karbon/pdf/Pdf2OdgImport.cpp
+index 22124b5bc03..be9db2db942 100644
+--- a/filters/karbon/pdf/Pdf2OdgImport.cpp
++++ b/filters/karbon/pdf/Pdf2OdgImport.cpp
+@@ -31,8 +31,6 @@
+ 
+ #include <KPluginFactory>
+ 
+-#include <poppler-version.h>
+-
+ // Don't show this warning: it's an issue in poppler
+ #ifdef __GNUC__
+ #pragma GCC diagnostic ignored "-Wunused-parameter"
+@@ -42,8 +40,6 @@
+ #include <GlobalParams.h>
+ #include <PDFDoc.h>
+ 
+-#define POPPLER_VERSION_MACRO ((POPPLER_VERSION_MAJOR << 16) | 
(POPPLER_VERSION_MINOR << 8) | (POPPLER_VERSION_MICRO))
+-
+ K_PLUGIN_FACTORY_WITH_JSON(Pdf2OdgImportFactory, 
"calligra_filter_pdf2odg.json", registerPlugin<Pdf2OdgImport>();)
+ 
+ Pdf2OdgImport::Pdf2OdgImport(QObject *parent, const QVariantList &)
+@@ -70,17 +66,13 @@ KoFilter::ConversionStatus Pdf2OdgImport::convert(const 
QByteArray &from, const
+     Q_ASSERT(m_document->pages().isEmpty());
+ 
+     // read config file
+-    globalParams = std::unique_ptr<GlobalParams>(new GlobalParams);
+-    if (!globalParams)
++    globalParams = std::make_unique<GlobalParams>();
++    if (!globalParams) {
+         return KoFilter::NotImplemented;
++    }
+ 
+-#if POPPLER_VERSION_MACRO < QT_VERSION_CHECK(22, 03, 0)
+-    GooString *fname = new 
GooString(QFile::encodeName(m_chain->inputFile()).data());
+-    PDFDoc *pdfDoc = new PDFDoc(fname, 0, 0, 0);
+-#else
+     std::unique_ptr<GooString> fname = 
std::make_unique<GooString>(QFile::encodeName(m_chain->inputFile()).data());
+-    PDFDoc *pdfDoc = new PDFDoc(std::move(fname));
+-#endif
++    auto pdfDoc = new PDFDoc(std::move(fname));
+     if (!pdfDoc) {
+         globalParams.reset();
+         return KoFilter::StupidError;
+@@ -109,7 +101,7 @@ KoFilter::ConversionStatus Pdf2OdgImport::convert(const 
QByteArray &from, const
+         }
+         tmpFile.close();
+         debugPdf << "tmpFile:" << tmpFile.fileName();
+-        SvgOutputDev *dev = new SvgOutputDev(tmpFile.fileName());
++        auto dev = new SvgOutputDev(tmpFile.fileName());
+         if (dev->isOk()) {
+             int rotate = 0;
+             bool useMediaBox = true;
+diff --git a/filters/karbon/pdf/PdfImport.cpp 
b/filters/karbon/pdf/PdfImport.cpp
+index d41eb163250..511962cc0b6 100644
+--- a/filters/karbon/pdf/PdfImport.cpp
++++ b/filters/karbon/pdf/PdfImport.cpp
+@@ -17,10 +17,6 @@
+ 
+ #include <KPluginFactory>
+ 
+-#include <poppler-version.h>
+-
+-#define POPPLER_VERSION_MACRO ((POPPLER_VERSION_MAJOR << 16) | 
(POPPLER_VERSION_MINOR << 8) | (POPPLER_VERSION_MICRO))
+-
+ // Don't show this warning: it's an issue in poppler
+ #ifdef __GNUC__
+ #pragma GCC diagnostic ignored "-Wunused-parameter"
+@@ -51,17 +47,13 @@ KoFilter::ConversionStatus PdfImport::convert(const 
QByteArray &from, const QByt
+     }
+ 
+     // read config file
+-    globalParams = std::unique_ptr<GlobalParams>(new GlobalParams);
+-    if (!globalParams)
++    globalParams = std::make_unique<GlobalParams>();
++    if (!globalParams) {
+         return KoFilter::NotImplemented;
++    }
+ 
+-#if POPPLER_VERSION_MACRO < QT_VERSION_CHECK(22, 03, 0)
+-    GooString *fname = new 
GooString(QFile::encodeName(m_chain->inputFile()).data());
+-    PDFDoc *pdfDoc = new PDFDoc(fname, 0, 0, 0);
+-#else
+-    std::unique_ptr<GooString> fname = 
std::make_unique<GooString>(QFile::encodeName(m_chain->inputFile()).data());
+-    PDFDoc *pdfDoc = new PDFDoc(std::move(fname));
+-#endif
++    auto fname = 
std::make_unique<GooString>(QFile::encodeName(m_chain->inputFile()).data());
++    auto pdfDoc = new PDFDoc(std::move(fname));
+     if (!pdfDoc) {
+         globalParams.reset();
+         return KoFilter::StupidError;
+@@ -81,19 +73,18 @@ KoFilter::ConversionStatus PdfImport::convert(const 
QByteArray &from, const QByt
+ 
+     debugPdf << "converting pages" << firstPage << "-" << lastPage;
+ 
+-    SvgOutputDev *dev = new SvgOutputDev(m_chain->outputFile());
+-    if (dev->isOk()) {
++    SvgOutputDev dev(m_chain->outputFile());
++    if (dev.isOk()) {
+         int rotate = 0;
+         bool useMediaBox = true;
+         bool crop = false;
+         bool printing = false;
+-        pdfDoc->displayPages(dev, firstPage, lastPage, hDPI, vDPI, rotate, 
useMediaBox, crop, printing);
+-        dev->dumpContent();
++        pdfDoc->displayPages(&dev, firstPage, lastPage, hDPI, vDPI, rotate, 
useMediaBox, crop, printing);
++        dev.dumpContent();
+     }
+ 
+     debugPdf << "wrote file to" << m_chain->outputFile();
+ 
+-    delete dev;
+     delete pdfDoc;
+     globalParams.reset();
+ 
+diff --git a/filters/karbon/pdf/SvgOutputDev.cpp 
b/filters/karbon/pdf/SvgOutputDev.cpp
+index 1e553ab391e..436243da7bd 100644
+--- a/filters/karbon/pdf/SvgOutputDev.cpp
++++ b/filters/karbon/pdf/SvgOutputDev.cpp
+@@ -386,23 +386,29 @@ void SvgOutputDev::drawString(GfxState *state, const 
GooString *s)
+ {
+     int render = state->getRender();
+     // check for invisible text -- this is used by Acrobat Capture
+-    if (render == 3)
++    if (render == 3) {
+         return;
++    }
+ 
+     // ignore empty strings
+-    if (s->getLength() == 0)
++#if POPPLER_VERSION_MACRO < QT_VERSION_CHECK(25, 10, 0)
++    if (s->getLength() == 0) {
++#else
++    if (s->size() == 0) {
++#endif
+         return;
++    }
+ 
+-#if POPPLER_VERSION_MACRO < QT_VERSION_CHECK(22, 04, 0)
+-    GfxFont *font = state->getFont();
+-#else
+     std::shared_ptr<GfxFont> font = state->getFont();
+-#endif
+ 
+     QString str;
+ 
+     const char *p = s->c_str();
++#if POPPLER_VERSION_MACRO < QT_VERSION_CHECK(25, 10, 0)
+     int len = s->getLength();
++#else
++    int len = s->size();
++#endif
+     CharCode code;
+     const Unicode *u = nullptr;
+     int uLen;
+-- 
+GitLab
+

Reply via email to