From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 605241581B9 for ; Fri, 19 Sep 2025 18:01:05 +0000 (UTC) Received: from lists.gentoo.org (bobolink.gentoo.org [140.211.166.189]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) (Authenticated sender: relay-lists.gentoo.org@gentoo.org) by smtp.gentoo.org (Postfix) with ESMTPSA id 394C93420EF for ; Fri, 19 Sep 2025 18:01:05 +0000 (UTC) Received: from bobolink.gentoo.org (localhost [127.0.0.1]) by bobolink.gentoo.org (Postfix) with ESMTP id 3032B110574; Fri, 19 Sep 2025 18:01:02 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) by bobolink.gentoo.org (Postfix) with ESMTPS id 23200110574 for ; Fri, 19 Sep 2025 18:01:02 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 9F7253420DB for ; Fri, 19 Sep 2025 18:01:01 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 0C2013935 for ; Fri, 19 Sep 2025 18:01:00 +0000 (UTC) From: "Andreas K. Hüttel" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Andreas K. Hüttel" Message-ID: <1758304845.f54f622af48f39b85a85f8128cfd0675cc408728.dilfridge@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: media-gfx/inkscape/files/, media-gfx/inkscape/ X-VCS-Repository: repo/gentoo X-VCS-Files: media-gfx/inkscape/Manifest media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.06.patch media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.07.patch media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.09.patch media-gfx/inkscape/inkscape-1.4.2.ebuild X-VCS-Directories: media-gfx/inkscape/files/ media-gfx/inkscape/ X-VCS-Committer: dilfridge X-VCS-Committer-Name: Andreas K. Hüttel X-VCS-Revision: f54f622af48f39b85a85f8128cfd0675cc408728 X-VCS-Branch: master Date: Fri, 19 Sep 2025 18:01:00 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: f5286053-0153-40ba-81f2-d09a6d4941ff X-Archives-Hash: b8466175debd0e2e3a70a858109208c0 commit: f54f622af48f39b85a85f8128cfd0675cc408728 Author: Andreas K. Hüttel gentoo org> AuthorDate: Fri Sep 19 18:00:12 2025 +0000 Commit: Andreas K. Hüttel gentoo org> CommitDate: Fri Sep 19 18:00:45 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f54f622a media-gfx/inkscape: add 1.4.2 Closes: https://bugs.gentoo.org/956727 Signed-off-by: Andreas K. Hüttel gentoo.org> media-gfx/inkscape/Manifest | 1 + .../files/inkscape-1.4.2-poppler-25.06.patch | 123 ++++++++++++ .../files/inkscape-1.4.2-poppler-25.07.patch | 135 +++++++++++++ .../files/inkscape-1.4.2-poppler-25.09.patch | 109 +++++++++++ media-gfx/inkscape/inkscape-1.4.2.ebuild | 208 +++++++++++++++++++++ 5 files changed, 576 insertions(+) diff --git a/media-gfx/inkscape/Manifest b/media-gfx/inkscape/Manifest index 451ba470c5b6..a4937dcc621c 100644 --- a/media-gfx/inkscape/Manifest +++ b/media-gfx/inkscape/Manifest @@ -1 +1,2 @@ +DIST inkscape-1.4.2.tar.xz 53278452 BLAKE2B f42d675c51af7d5c8e01851a5eeb74d03b5b75436eabf25237559839b092b7382d03e388594aae97c511b143680f822940890fa787eab9bf78f1a91838456a49 SHA512 e7d69f477d11aee296efe48d3a9dd24f76fd5e64e5f2a29574f387bc681ced3d806d30b0f98d842c485443624dbf31fd9dabdb92848ee852121bc9d9e90191a1 DIST inkscape-1.4.tar.xz 46321868 BLAKE2B 3f21402019995122f043f5ebd8f07e1c9548c507f27c494e4214e090c46acae016c21f950609c95cef2e1b0011693e6629326d733b257402391e2d919bcd0303 SHA512 3b81306b81416597073e7eda2a103112cee63493bcf96fa737bb1edfbd682ebb329e415bbbbfda877aef2a78dc376460040ebc5c0cc2c90c0fe60db5d7d12368 diff --git a/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.06.patch b/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.06.patch new file mode 100644 index 000000000000..14f15f04b151 --- /dev/null +++ b/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.06.patch @@ -0,0 +1,123 @@ +From 93ab3204674e548df3f7bac39a86420eab616ed3 Mon Sep 17 00:00:00 2001 +From: Rafael Siejakowski +Date: Sun, 8 Jun 2025 21:30:44 +0200 +Subject: [PATCH 1/3] 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. + +From https://gitlab.com/inkscape/inkscape/-/merge_requests/7264 + +Backported from MR 7261 +https://gitlab.com/inkscape/inkscape/-/merge_requests/7261 + +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 01d7bf6ef0..0d31eda16f 100644 +--- a/src/extension/internal/pdfinput/pdf-parser.cpp ++++ b/src/extension/internal/pdfinput/pdf-parser.cpp +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + #include // std::call_once() + #include + #include +@@ -686,7 +687,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; +@@ -744,13 +744,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("Default")) || obj2.isName(const_cast("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) { +@@ -763,12 +764,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"); +@@ -790,8 +793,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); +@@ -835,9 +837,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 a67132ba6b..d04412757b 100644 +--- a/src/extension/internal/pdfinput/poppler-transition-api.h ++++ b/src/extension/internal/pdfinput/poppler-transition-api.h +@@ -15,6 +15,18 @@ + #include + #include + ++#if POPPLER_CHECK_VERSION(25, 6, 0) ++#define _POPPLER_DECLARE_TRANSFER_FUNCTION_VECTOR(name) std::vector> 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() +-- +2.49.1 + diff --git a/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.07.patch b/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.07.patch new file mode 100644 index 000000000000..6c67ce1127a6 --- /dev/null +++ b/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.07.patch @@ -0,0 +1,135 @@ +From cf40b0201d18aeb8a0800524eccd93ececc79bda Mon Sep 17 00:00:00 2001 +From: KrIr17 +Date: Sun, 6 Jul 2025 15:42:13 +0200 +Subject: [PATCH 2/3] 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 + +https://gitlab.com/inkscape/inkscape/-/merge_requests/7321 +--- + 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 0d31eda16f..829c3096f4 100644 +--- a/src/extension/internal/pdfinput/pdf-parser.cpp ++++ b/src/extension/internal/pdfinput/pdf-parser.cpp +@@ -2315,11 +2315,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 5e1a642625..c2bf90732c 100644 +--- a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp ++++ b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp +@@ -318,7 +318,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 ff1c; ++#else + FoFiType1C *ff1c; ++#endif + std::optional font_face; + std::vector codeToGID; + bool substitute = false; +@@ -429,7 +433,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); + } +@@ -459,7 +463,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); + } +@@ -493,7 +497,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()); + } +@@ -506,7 +510,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 + } + } + +@@ -542,13 +548,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 d04412757b..866b630bb6 100644 +--- a/src/extension/internal/pdfinput/poppler-transition-api.h ++++ b/src/extension/internal/pdfinput/poppler-transition-api.h +@@ -15,6 +15,20 @@ + #include + #include + ++#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> name(4) + #define _POPPLER_DELETE_TRANSFER_FUNCTION(name) name.reset() +-- +2.49.1 + diff --git a/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.09.patch b/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.09.patch new file mode 100644 index 000000000000..1884afde609e --- /dev/null +++ b/media-gfx/inkscape/files/inkscape-1.4.2-poppler-25.09.patch @@ -0,0 +1,109 @@ +From acaa8d8d8fca9d7b3ed7f581067dc863012c3522 Mon Sep 17 00:00:00 2001 +From: mike kowalski +Date: Tue, 2 Sep 2025 07:17:25 -0700 +Subject: [PATCH 3/3] Fix build with poppler 25.09.0 + +API changes: double* -> std::array necessitates fixes in Inkscape. +The goal is to make it build with older poppler versions too. +--- + src/extension/internal/pdfinput/pdf-parser.cpp | 3 +-- + src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp | 2 +- + src/extension/internal/pdfinput/poppler-utils.cpp | 4 ++++ + src/extension/internal/pdfinput/poppler-utils.h | 4 ++++ + src/extension/internal/pdfinput/svg-builder.cpp | 4 ++-- + 5 files changed, 12 insertions(+), 5 deletions(-) + +diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp +index 829c3096f4..ed8e5c6ab5 100644 +--- a/src/extension/internal/pdfinput/pdf-parser.cpp ++++ b/src/extension/internal/pdfinput/pdf-parser.cpp +@@ -1652,12 +1652,11 @@ void PdfParser::doFunctionShFill1(GfxFunctionShading *shading, + GfxColor color0M, color1M, colorM0, colorM1, colorMM; + GfxColor colors2[4]; + double functionColorDelta = colorDeltas[pdfFunctionShading-1]; +- const double *matrix; + double xM, yM; + int nComps, i, j; + + nComps = shading->getColorSpace()->getNComps(); +- matrix = shading->getMatrix(); ++ const auto& matrix = shading->getMatrix(); + + // compare the four corner colors + for (i = 0; i < 4; ++i) { +diff --git a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp +index c2bf90732c..b53c3cd886 100644 +--- a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp ++++ b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp +@@ -635,7 +635,7 @@ static cairo_status_t _init_type3_glyph(cairo_scaled_font_t *scaled_font, cairo_ + + info = (type3_font_info_t *)cairo_font_face_get_user_data(cairo_scaled_font_get_font_face(scaled_font), + &type3_font_key); +- const double *mat = info->font->getFontBBox(); ++ const auto& mat = info->font->getFontBBox(); + extents->ascent = mat[3]; /* y2 */ + extents->descent = -mat[3]; /* -y1 */ + extents->height = extents->ascent + extents->descent; +diff --git a/src/extension/internal/pdfinput/poppler-utils.cpp b/src/extension/internal/pdfinput/poppler-utils.cpp +index ad0dd236a2..5067a6c245 100644 +--- a/src/extension/internal/pdfinput/poppler-utils.cpp ++++ b/src/extension/internal/pdfinput/poppler-utils.cpp +@@ -38,6 +38,10 @@ Geom::Affine ctmToAffine(const double *ctm) + return Geom::Affine(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]); + } + ++Geom::Affine ctmToAffine(const std::array& ctm) { ++ return ctmToAffine(ctm.data()); ++} ++ + void ctmout(const char *label, const double *ctm) + { + std::cout << "C:" << label << ":" << ctm[0] << "," << ctm[1] << "," << ctm[2] << "," << ctm[3] << "," << ctm[4] +diff --git a/src/extension/internal/pdfinput/poppler-utils.h b/src/extension/internal/pdfinput/poppler-utils.h +index 2bcd307e17..e51d6a9da3 100644 +--- a/src/extension/internal/pdfinput/poppler-utils.h ++++ b/src/extension/internal/pdfinput/poppler-utils.h +@@ -13,6 +13,7 @@ + #ifndef POPPLER_UTILS_H + #define POPPLER_UTILS_H + ++#include + #include + #include + #include +@@ -36,7 +37,10 @@ class Ref; + class XRef; + + Geom::Affine stateToAffine(GfxState *state); ++// this function is for Poppler older than v25.09.0 + Geom::Affine ctmToAffine(const double *ctm); ++// this flavor is for Poppler v25.09.0 and above ++Geom::Affine ctmToAffine(const std::array& ctm); + + void ctmout(const char *label, const double *ctm); + void affout(const char *label, Geom::Affine affine); +diff --git a/src/extension/internal/pdfinput/svg-builder.cpp b/src/extension/internal/pdfinput/svg-builder.cpp +index a74147d074..167ad2d4de 100644 +--- a/src/extension/internal/pdfinput/svg-builder.cpp ++++ b/src/extension/internal/pdfinput/svg-builder.cpp +@@ -1025,7 +1025,7 @@ gchar *SvgBuilder::_createTilingPattern(GfxTilingPattern *tiling_pattern, + pattern_node->setAttribute("patternUnits", "userSpaceOnUse"); + // Set pattern tiling + // FIXME: don't ignore XStep and YStep +- const double *bbox = tiling_pattern->getBBox(); ++ const auto& bbox = tiling_pattern->getBBox(); + pattern_node->setAttributeSvgDouble("x", 0.0); + pattern_node->setAttributeSvgDouble("y", 0.0); + pattern_node->setAttributeSvgDouble("width", bbox[2] - bbox[0]); +@@ -1255,7 +1255,7 @@ void SvgBuilder::updateFont(GfxState *state, std::shared_ptr cairo_fo + + auto new_font_size = state->getFontSize(); + if (font->getType() == fontType3) { +- const double *font_matrix = font->getFontMatrix(); ++ const auto& font_matrix = font->getFontMatrix(); + if (font_matrix[0] != 0.0) { + new_font_size *= font_matrix[3] / font_matrix[0]; + } +-- +2.49.1 + diff --git a/media-gfx/inkscape/inkscape-1.4.2.ebuild b/media-gfx/inkscape/inkscape-1.4.2.ebuild new file mode 100644 index 000000000000..8de8532c0cca --- /dev/null +++ b/media-gfx/inkscape/inkscape-1.4.2.ebuild @@ -0,0 +1,208 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Remember to check the release notes for a 'Important Changes for Packagers' +# section, e.g. https://inkscape.org/doc/release_notes/1.4/Inkscape_1.4.html#Important_Changes_for_Packagers. + +PYTHON_COMPAT=( python3_{10..13} ) +PYTHON_REQ_USE="xml(+)" + +inherit cmake flag-o-matic xdg toolchain-funcs python-single-r1 + +MY_P="${P/_/}" +DESCRIPTION="SVG based generic vector-drawing program" +HOMEPAGE="https://inkscape.org/ https://gitlab.com/inkscape/inkscape/" + +if [[ ${PV} = 9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://gitlab.com/inkscape/inkscape.git" +else + SRC_URI="https://media.inkscape.org/dl/resources/file/${MY_P}.tar.xz" + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86" +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0" +IUSE="cdr dia exif graphicsmagick imagemagick inkjar jpeg openmp postscript readline sourceview spell svg2 test visio wpg X" +REQUIRED_USE="${PYTHON_REQUIRED_USE}" +# Lots of test failures which need investigating, bug #871621 +RESTRICT="!test? ( test ) test" + +BDEPEND=" + dev-util/glib-utils + >=sys-devel/gettext-0.17 + virtual/pkgconfig + test? ( virtual/imagemagick-tools ) +" +COMMON_DEPEND="${PYTHON_DEPS} + >=app-text/poppler-0.57.0:=[cairo] + >=dev-cpp/cairomm-1.12:0 + >=dev-cpp/glibmm-2.58:2 + dev-cpp/gtkmm:3.0 + >=dev-cpp/pangomm-2.40:1.4 + >=dev-libs/boehm-gc-7.1:= + dev-libs/boost:=[stacktrace(-)] + dev-libs/double-conversion:= + >=dev-libs/glib-2.41 + >=dev-libs/libsigc++-2.8:2 + >=dev-libs/libxml2-2.7.4:= + >=dev-libs/libxslt-1.1.25 + dev-libs/popt + media-gfx/potrace + media-libs/libepoxy + media-libs/fontconfig + media-libs/freetype:2 + media-libs/lcms:2 + media-libs/libpng:0= + sci-libs/gsl:= + >=x11-libs/pango-1.44 + x11-libs/gtk+:3[X?] + X? ( x11-libs/libX11 ) + $(python_gen_cond_dep ' + dev-python/appdirs[${PYTHON_USEDEP}] + dev-python/cachecontrol[${PYTHON_USEDEP}] + dev-python/cssselect[${PYTHON_USEDEP}] + dev-python/filelock[${PYTHON_USEDEP}] + dev-python/lockfile[${PYTHON_USEDEP}] + dev-python/lxml[${PYTHON_USEDEP}] + dev-python/pillow[jpeg?,tiff,webp,${PYTHON_USEDEP}] + dev-python/tinycss2[${PYTHON_USEDEP}] + media-gfx/scour[${PYTHON_USEDEP}] + ') + cdr? ( + app-text/libwpg:0.3 + dev-libs/librevenge + media-libs/libcdr + ) + exif? ( media-libs/libexif ) + imagemagick? ( + !graphicsmagick? ( media-gfx/imagemagick:=[cxx] ) + graphicsmagick? ( media-gfx/graphicsmagick:=[cxx] ) + ) + jpeg? ( media-libs/libjpeg-turbo:= ) + readline? ( sys-libs/readline:= ) + sourceview? ( x11-libs/gtksourceview:4 ) + spell? ( app-text/gspell:= ) + visio? ( + app-text/libwpg:0.3 + dev-libs/librevenge + media-libs/libvisio + ) + wpg? ( + app-text/libwpg:0.3 + dev-libs/librevenge + ) +" +# These only use executables provided by these packages +# See share/extensions for more details. inkscape can tell you to +# install these so we could of course just not depend on those and rely +# on that. +RDEPEND="${COMMON_DEPEND} + $(python_gen_cond_dep ' + dev-python/numpy[${PYTHON_USEDEP}] + ') + dia? ( app-office/dia ) + postscript? ( app-text/ghostscript-gpl ) +" +DEPEND="${COMMON_DEPEND} + test? ( dev-cpp/gtest ) +" + +PATCHES=( + "${FILESDIR}"/${P}-poppler-25.{06,07,09}.patch # bugs 949531, 957137, 962278 +) + +pkg_pretend() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp +} + +pkg_setup() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp + python-single-r1_pkg_setup +} + +src_unpack() { + if [[ ${PV} = 9999* ]]; then + git-r3_src_unpack + else + default + fi + [[ -d "${S}" ]] || mv -v "${WORKDIR}/${P/_/-}_202"?-??-* "${S}" || die +} + +src_prepare() { + cmake_src_prepare + sed -i "/install.*COPYING/d" CMakeScripts/ConfigCPack.cmake || die +} + +src_configure() { + # ODR violation (https://gitlab.com/inkscape/lib2geom/-/issues/71, bug #859628) + filter-lto + # Aliasing unsafe (bug #310393) + append-flags -fno-strict-aliasing + + local mycmakeargs=( + # -DWITH_LPETOOL # Compile with LPE Tool and experimental LPEs enabled + -DWITH_NLS=ON + -DENABLE_POPPLER=ON + -DENABLE_POPPLER_CAIRO=ON + -DWITH_PROFILING=OFF + -DWITH_INTERNAL_2GEOM=ON + -DBUILD_TESTING=$(usex test) + -DWITH_LIBCDR=$(usex cdr) + -DWITH_IMAGE_MAGICK=$(usex imagemagick $(usex !graphicsmagick)) # requires ImageMagick 6, only IM must be enabled + -DWITH_GRAPHICS_MAGICK=$(usex graphicsmagick $(usex imagemagick)) # both must be enabled to use GraphicsMagick + -DWITH_GNU_READLINE=$(usex readline) + -DWITH_GSPELL=$(usex spell) + -DWITH_JEMALLOC=OFF + -DENABLE_LCMS=ON + -DWITH_OPENMP=$(usex openmp) + -DBUILD_SHARED_LIBS=ON + -DWITH_GSOURCEVIEW=$(usex sourceview) + -DWITH_SVG2=$(usex svg2) + -DWITH_LIBVISIO=$(usex visio) + -DWITH_LIBWPG=$(usex wpg) + -DWITH_X11=$(usex X) + ) + + cmake_src_configure +} + +src_test() { + CMAKE_SKIP_TESTS=( + # render_text*: needs patched Cairo / maybe upstream changes + # not yet in a release. + # test_lpe/test_lpe64: precision differences b/c of new GCC? + # cli_export-png-color-mode-gray-8_png_check_output: ditto? + render_test-use + render_test-glyph-y-pos + render_text-glyphs-combining + render_text-glyphs-vertical + render_test-rtl-vertical + test_lpe + test_lpe64 + cli_export-png-color-mode-gray-8_png_check_output + ) + + # bug #871621 + cmake_src_compile tests + cmake_src_test -j1 +} + +src_install() { + cmake_src_install + + find "${ED}" -type f -name "*.la" -delete || die + find "${ED}"/usr/share/man -type f -maxdepth 3 -name '*.bz2' -exec bzip2 -d {} \; || die + find "${ED}"/usr/share/man -type f -maxdepth 3 -name '*.gz' -exec gzip -d {} \; || die + + local extdir="${ED}"/usr/share/${PN}/extensions + if [[ -e "${extdir}" ]] && [[ -n $(find "${extdir}" -mindepth 1) ]]; then + python_fix_shebang "${ED}"/usr/share/${PN}/extensions + python_optimize "${ED}"/usr/share/${PN}/extensions + fi +}