[packages/inkscape] - gdl no longer a BR, added poppler patches
mrozowik
mrozowik at pld-linux.org
Tue Jul 29 13:39:45 CEST 2025
commit dfd3d2c91365ff3783f65eba56c40706c0371d82
Author: Krzysztof Mrozowicz <mrozowik at pld-linux.org>
Date: Tue Jul 29 11:39:36 2025 +0000
- gdl no longer a BR, added poppler patches
inkscape.spec | 10 ++--
poppler-25.06.patch | 118 ++++++++++++++++++++++++++++++++++++++++++++++
poppler-25.07.patch | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 257 insertions(+), 4 deletions(-)
---
diff --git a/inkscape.spec b/inkscape.spec
index 7fc8153..e4dd101 100644
--- a/inkscape.spec
+++ b/inkscape.spec
@@ -8,12 +8,14 @@ Summary: Scalable vector graphics editor
Summary(pl.UTF-8): Edytor skalowalnej grafiki wektorowej
Name: inkscape
Version: 1.4.2
-Release: 3
+Release: 4
License: GPL v2+, LGPL v2.1+
Group: X11/Applications/Graphics
# download: follow https://inkscape.org/release/
Source0: https://media.inkscape.org/dl/resources/file/%{name}-%{version}.tar.xz
# Source0-md5: 0c24e84085bed3f0237d1cdf0856a855
+Patch0: poppler-25.06.patch
+Patch1: poppler-25.07.patch
URL: https://inkscape.org/
%{!?with_imagick:BuildRequires: GraphicsMagick-c++-devel}
%{?with_imagick:BuildRequires: ImageMagick6-c++-devel < 7}
@@ -28,7 +30,6 @@ BuildRequires: double-conversion-devel
BuildRequires: fontconfig-devel
BuildRequires: freetype-devel >= 2.0
BuildRequires: gc-devel >= 7.2
-BuildRequires: gdl-devel >= 3.6
BuildRequires: gettext-tools >= 0.17
BuildRequires: glib2-devel >= 1:2.28
BuildRequires: glibmm-devel >= 2.28
@@ -48,7 +49,6 @@ BuildRequires: libpng-devel >= 1.2
BuildRequires: librevenge-devel
BuildRequires: libsigc++-devel >= 2.0.17
BuildRequires: libsoup-devel >= 2.42
-# C++ 20 needed for poppler 24.x
BuildRequires: libstdc++-devel >= 6:8
BuildRequires: libvisio-devel >= 0.1
BuildRequires: libwpd-devel >= 0.9
@@ -75,7 +75,7 @@ Requires(post,postun): gtk-update-icon-cache
Requires: cairo >= 1.10
Requires: cairomm >= 1.9.8
Requires: gc >= 7.2
-Requires: gdl >= 3.6
+#Requires: gdl >= 3.6
Requires: glib2 >= 1:2.28
Requires: glibmm >= 2.28
Requires: gtk+3 >= 3.22
@@ -114,6 +114,8 @@ Bashowe dopełnianie argumentów programu inkscape.
%prep
%setup -q -n %{name}-%{version}_2025-05-08_ebf0e940d0
+%patch -P0 -p1
+%patch -P1 -p1
# python3-only
%{__sed} -i -e '1s,/usr/bin/env python3,%{__python3},' \
diff --git a/poppler-25.06.patch b/poppler-25.06.patch
new file mode 100644
index 0000000..676a2e7
--- /dev/null
+++ b/poppler-25.06.patch
@@ -0,0 +1,118 @@
+From 1fdfb889bba9ee146c8b826e97bc58a88cb1e529 Mon Sep 17 00:00:00 2001
+From: Rafael Siejakowski <rs at rs-math.net>
+Date: Sun, 8 Jun 2025 21:30:44 +0200
+Subject: [PATCH] Fix build against Poppler 25.06
+
+Accommodate for the private API change, whereby an array of pointers
+has been replaced with a vector of unique_ptr.
+
+Fixes https://gitlab.com/inkscape/inkscape/-/issues/5836
+---
+ .../internal/pdfinput/pdf-parser.cpp | 23 +++++++++++--------
+ .../pdfinput/poppler-transition-api.h | 12 ++++++++++
+ 2 files changed, 25 insertions(+), 10 deletions(-)
+
+diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp
+index b0b6aa9eec4..22c86fbc3a4 100644
+--- a/src/extension/internal/pdfinput/pdf-parser.cpp
++++ b/src/extension/internal/pdfinput/pdf-parser.cpp
+@@ -24,6 +24,7 @@
+ #include <cstdio>
+ #include <cstdlib>
+ #include <cstring>
++#include <memory>
+ #include <mutex> // std::call_once()
+ #include <utility>
+ #include <vector>
+@@ -693,7 +694,6 @@ void PdfParser::opSetLineWidth(Object args[], int /*numArgs*/)
+ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/)
+ {
+ Object obj1, obj2, obj3, obj4, obj5;
+- Function *funcs[4] = {nullptr, nullptr, nullptr, nullptr};
+ GfxColor backdropColor;
+ GBool haveBackdropColor = gFalse;
+ GBool alpha = gFalse;
+@@ -751,13 +751,14 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/)
+ state->setLineWidth(obj2.getNum());
+ }
+
++ _POPPLER_DECLARE_TRANSFER_FUNCTION_VECTOR(funcs);
++
+ // transfer function
+ if (_POPPLER_CALL_ARGS_DEREF(obj2, obj1.dictLookup, "TR2").isNull()) {
+ _POPPLER_CALL_ARGS(obj2, obj1.dictLookup, "TR");
+ }
+ if (obj2.isName(const_cast<char *>("Default")) || obj2.isName(const_cast<char *>("Identity"))) {
+- funcs[0] = funcs[1] = funcs[2] = funcs[3] = nullptr;
+- state->setTransfer(funcs);
++ state->setTransfer(std::move(funcs));
+ } else if (obj2.isArray() && obj2.arrayGetLength() == 4) {
+ int pos = 4;
+ for (int i = 0; i < 4; ++i) {
+@@ -770,12 +771,14 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/)
+ }
+ _POPPLER_FREE(obj3);
+ if (pos == 4) {
+- state->setTransfer(funcs);
++ state->setTransfer(std::move(funcs));
+ }
+ } else if (obj2.isName() || obj2.isDict() || obj2.isStream()) {
+ if ((funcs[0] = Function::parse(&obj2))) {
+- funcs[1] = funcs[2] = funcs[3] = nullptr;
+- state->setTransfer(funcs);
++ funcs[1] = nullptr;
++ funcs[2] = nullptr;
++ funcs[3] = nullptr;
++ state->setTransfer(std::move(funcs));
+ }
+ } else if (!obj2.isNull()) {
+ error(errSyntaxError, getPos(), "Invalid transfer function in ExtGState");
+@@ -797,8 +800,7 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/)
+ funcs[0] = Function::parse(&obj3);
+ if (funcs[0]->getInputSize() != 1 || funcs[0]->getOutputSize() != 1) {
+ error(errSyntaxError, getPos(), "Invalid transfer function in soft mask in ExtGState");
+- delete funcs[0];
+- funcs[0] = nullptr;
++ _POPPLER_DELETE_TRANSFER_FUNCTION(funcs[0]);
+ }
+ }
+ _POPPLER_FREE(obj3);
+@@ -842,9 +844,10 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/)
+ }
+ }
+ }
+- doSoftMask(&obj3, alpha, blendingColorSpace.get(), isolated, knockout, funcs[0], &backdropColor);
++ doSoftMask(&obj3, alpha, blendingColorSpace.get(), isolated, knockout,
++ _POPPLER_GET_TRANSFER_FUNCTION_POINTER(funcs[0]), &backdropColor);
+ if (funcs[0]) {
+- delete funcs[0];
++ _POPPLER_DELETE_TRANSFER_FUNCTION(funcs[0]);
+ }
+ } else {
+ error(errSyntaxError, getPos(), "Invalid soft mask in ExtGState - missing group");
+diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h b/src/extension/internal/pdfinput/poppler-transition-api.h
+index a67132ba6bd..d04412757bc 100644
+--- a/src/extension/internal/pdfinput/poppler-transition-api.h
++++ b/src/extension/internal/pdfinput/poppler-transition-api.h
+@@ -15,6 +15,18 @@
+ #include <glib/poppler-features.h>
+ #include <poppler/UTF.h>
+
++#if POPPLER_CHECK_VERSION(25, 6, 0)
++#define _POPPLER_DECLARE_TRANSFER_FUNCTION_VECTOR(name) std::vector<std::unique_ptr<Function>> name(4)
++#define _POPPLER_DELETE_TRANSFER_FUNCTION(name) name.reset()
++#define _POPPLER_GET_TRANSFER_FUNCTION_POINTER(name) name.get()
++#else
++#define _POPPLER_DECLARE_TRANSFER_FUNCTION_VECTOR(name) Function *name[4] = {}
++#define _POPPLER_DELETE_TRANSFER_FUNCTION(name) \
++ delete name; \
++ name = nullptr
++#define _POPPLER_GET_TRANSFER_FUNCTION_POINTER(name) name
++#endif
++
+ #if POPPLER_CHECK_VERSION(25,2,0)
+ #define _POPPLER_GET_CODE_TO_GID_MAP(ff, len) getCodeToGIDMap(ff)
+ #define _POPPLER_GET_CID_TO_GID_MAP(len) getCIDToGIDMap()
+--
+GitLab
+
diff --git a/poppler-25.07.patch b/poppler-25.07.patch
new file mode 100644
index 0000000..dd6d7a7
--- /dev/null
+++ b/poppler-25.07.patch
@@ -0,0 +1,133 @@
+From ce52c5f96106ae5747171663a46831f21aa52d95 Mon Sep 17 00:00:00 2001
+From: KrIr17 <elendil.krir17 at gmail.com>
+Date: Sun, 6 Jul 2025 15:42:13 +0200
+Subject: [PATCH] Fix building with Poppler 25.07.0
+
+Fix building issues with
+
+1. [`GfxState::shift()`](https://gitlab.freedesktop.org/poppler/poppler/-/commit/71bf5552d448a6fdb666f2b61764b61ca197617d)
+
+2. [`FoFiTrueType::make` and `FoFiType1C::make`](FoFiTrueType::make)
+
+3. Fix typo from 5c4c6d116dae5250d75d34a45f0d9220824d2e20
+---
+ src/extension/internal/pdfinput/pdf-parser.cpp | 4 ++--
+ .../pdfinput/poppler-cairo-font-engine.cpp | 16 +++++++++++-----
+ .../internal/pdfinput/poppler-transition-api.h | 14 ++++++++++++++
+ 3 files changed, 27 insertions(+), 7 deletions(-)
+
+diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp
+index f46d12f72e5..4071e464a44 100644
+--- a/src/extension/internal/pdfinput/pdf-parser.cpp
++++ b/src/extension/internal/pdfinput/pdf-parser.cpp
+@@ -2322,11 +2322,11 @@ void PdfParser::doShowText(GooString *s) {
+ state->textTransformDelta(originX, originY, &tOriginX, &tOriginY);
+
+ // In Gfx.cc this is drawChar(...)
+- builder->addChar(state, state->getCurX() + riseX, state->getCurY() + riseY,
++ builder->addChar(state, state->_POPPLER_GET_CUR_TEXT_X() + riseX, state->_POPPLER_GET_CUR_TEXT_Y() + riseY,
+ dx, dy, ax, ay, tOriginX, tOriginY, code, n, u, uLen);
+
+ // Move onto next unicode character.
+- state->shift(tdx, tdy);
++ state->_POPPLER_TEXT_SHIFT_WITH_USER_COORDS(tdx, tdy);
+ p += n;
+ len -= n;
+ }
+diff --git a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
+index bd1d4e49367..cfc6961f629 100644
+--- a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
++++ b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
+@@ -316,7 +316,11 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
+ #endif
+ char **enc;
+ const char *name;
++#if POPPLER_CHECK_VERSION(25, 7, 0)
++ std::unique_ptr<FoFiType1C> ff1c;
++#else
+ FoFiType1C *ff1c;
++#endif
+ std::optional<FreeTypeFontFace> font_face;
+ std::vector<int> codeToGID;
+ bool substitute = false;
+@@ -427,7 +431,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
+ FoFiTrueType *ff;
+ #endif
+ if (!font_data.empty()) {
+- ff = FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), 0);
++ ff = _POPPLER_FOFI_TRUETYPE_MAKE(font_data, 0);
+ } else {
+ ff = FoFiTrueType::load(fileName.c_str(), 0);
+ }
+@@ -457,7 +461,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
+ FoFiTrueType *ff;
+ #endif
+ if (!font_data.empty()) {
+- ff = FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), 0);
++ ff = _POPPLER_FOFI_TRUETYPE_MAKE(font_data, 0);
+ } else {
+ ff = FoFiTrueType::load(fileName.c_str(), 0);
+ }
+@@ -491,7 +495,7 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
+ case fontCIDType0C:
+ if (!useCIDs) {
+ if (!font_data.empty()) {
+- ff1c = FoFiType1C::make((fontchar)font_data.data(), font_data.size());
++ ff1c = _POPPLER_FOFI_TYPE1C_MAKE(font_data);
+ } else {
+ ff1c = FoFiType1C::load(fileName.c_str());
+ }
+@@ -504,7 +508,9 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
+ codeToGID.insert(codeToGID.begin(), src, src + n);
+ gfree(src);
+ #endif
++#if !(POPPLER_CHECK_VERSION(25, 7, 0))
+ delete ff1c;
++#endif
+ }
+ }
+
+@@ -540,13 +546,13 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
+ FoFiTrueType *ff;
+ #endif
+ if (!font_data.empty()) {
+- ff = FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), 0);
++ ff = _POPPLER_FOFI_TRUETYPE_MAKE(font_data, 0);
+ } else {
+ ff = FoFiTrueType::load(fileName.c_str(), 0);
+ }
+ if (ff) {
+ if (ff->isOpenTypeCFF()) {
+- auto src = ff1c->_POPPLER_GET_CID_TO_GID_MAP(&n);
++ auto src = ff->_POPPLER_GET_CID_TO_GID_MAP(&n);
+ #if POPPLER_CHECK_VERSION(25,2,0)
+ codeToGID = std::move(src);
+ #else
+diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h b/src/extension/internal/pdfinput/poppler-transition-api.h
+index d04412757bc..866b630bb67 100644
+--- a/src/extension/internal/pdfinput/poppler-transition-api.h
++++ b/src/extension/internal/pdfinput/poppler-transition-api.h
+@@ -15,6 +15,20 @@
+ #include <glib/poppler-features.h>
+ #include <poppler/UTF.h>
+
++#if POPPLER_CHECK_VERSION(25, 7, 0)
++#define _POPPLER_TEXT_SHIFT_WITH_USER_COORDS(dx, dy) textShiftWithUserCoords(dx, dy)
++#define _POPPLER_FOFI_TRUETYPE_MAKE(font_data, faceIndex) FoFiTrueType::make(std::span(font_data), faceIndex)
++#define _POPPLER_FOFI_TYPE1C_MAKE(font_data) FoFiType1C::make(std::span(font_data))
++#define _POPPLER_GET_CUR_TEXT_X() getCurTextX()
++#define _POPPLER_GET_CUR_TEXT_Y() getCurTextY()
++#else
++#define _POPPLER_TEXT_SHIFT_WITH_USER_COORDS(dx, dy) shift(dx, dy)
++#define _POPPLER_FOFI_TRUETYPE_MAKE(font_data, faceIndex) FoFiTrueType::make((fontchar)font_data.data(), font_data.size(), faceIndex)
++#define _POPPLER_FOFI_TYPE1C_MAKE(font_data) FoFiType1C::make((fontchar)font_data.data(), font_data.size())
++#define _POPPLER_GET_CUR_TEXT_X() getCurX()
++#define _POPPLER_GET_CUR_TEXT_Y() getCurY()
++#endif
++
+ #if POPPLER_CHECK_VERSION(25, 6, 0)
+ #define _POPPLER_DECLARE_TRANSFER_FUNCTION_VECTOR(name) std::vector<std::unique_ptr<Function>> name(4)
+ #define _POPPLER_DELETE_TRANSFER_FUNCTION(name) name.reset()
+--
+GitLab
+
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/inkscape.git/commitdiff/dfd3d2c91365ff3783f65eba56c40706c0371d82
More information about the pld-cvs-commit
mailing list