sm-commit AT lists.ibiblio.org
Subject: Source Mage code commit list
List archive
[[SM-Commit] ] GIT changes to master grimoire by Ismael Luceno (2baf9cd03bd2c3104d65e65c96916a13fffb5e9b)
- From: Ismael Luceno <scm AT sourcemage.org>
- To: sm-commit AT lists.ibiblio.org, sm-commit AT lists.sourcemage.org
- Subject: [[SM-Commit] ] GIT changes to master grimoire by Ismael Luceno (2baf9cd03bd2c3104d65e65c96916a13fffb5e9b)
- Date: Wed, 15 Jan 2025 10:08:07 +0000
GIT changes to master grimoire by Ismael Luceno <ismael AT sourcemage.org>:
graphics/inkscape/DETAILS
| 1
graphics/inkscape/HISTORY
| 8
graphics/inkscape/patches/0001-Future-proof-against-poppler-24.10-changes.patch
| 430 ++++++++++
graphics/inkscape/patches/0002-Fix-building-with-Poppler-24.11.patch
| 59 +
graphics/inkscape/patches/0003-Fix-Poppler-private-includes.patch
| 39
graphics/inkscape/patches/0004-Fix-building-with-poppler-24.12.0.patch
| 53 +
libs/libiconv/DEPENDS
| 1
libs/libiconv/DETAILS
| 4
libs/libiconv/HISTORY
| 8
libs/libiconv/PRE_BUILD
| 4
libs/libiconv/patches/0001-Don-t-build-bin-iconv-in-the-install-stage.patch
| 46 +
11 files changed, 651 insertions(+), 2 deletions(-)
New commits:
commit 2baf9cd03bd2c3104d65e65c96916a13fffb5e9b
Author: Ismael Luceno <ismael AT sourcemage.org>
Commit: Ismael Luceno <ismael AT sourcemage.org>
inkscape: Fix build against poppler 24.10+
commit 7ef6fbfadca6fb9c4a83a38c0ad063351835d080
Author: Ismael Luceno <ismael AT sourcemage.org>
Commit: Ismael Luceno <ismael AT sourcemage.org>
libiconv 1.18
- Patch to avoid building src/iconv during install; this also fixes
building with slibtool
- Build libiconv.a, needed for static bash
- Patch LIBTOOL overriding in libcharset/configure
- Build with slibtool
diff --git a/graphics/inkscape/DETAILS b/graphics/inkscape/DETAILS
index c797f35..1dd08c0 100755
--- a/graphics/inkscape/DETAILS
+++ b/graphics/inkscape/DETAILS
@@ -2,6 +2,7 @@
. "$GRIMOIRE"/CMAKE_FUNCTIONS
SPELL=inkscape
VERSION=1.4
+ PATCHLEVEL=1
XVERSION=2024-10-09_e7c3feb100
ITEM=53679
SOURCE=$SPELL-$VERSION.tar.xz
diff --git a/graphics/inkscape/HISTORY b/graphics/inkscape/HISTORY
index 9beb33d..d83f0a6 100644
--- a/graphics/inkscape/HISTORY
+++ b/graphics/inkscape/HISTORY
@@ -1,3 +1,11 @@
+2025-01-15 Ismael Luceno <ismael AT sourcemage.org>
+ * DETAILS: PATCHLEVEL++
+ * patches/0001-Future-proof-against-poppler-24.10-changes.patch,
+ patches/0002-Fix-building-with-Poppler-24.11.patch,
+ patches/0003-Fix-Poppler-private-includes.patch,
+ patches/0004-Fix-building-with-poppler-24.12.0.patch:
+ fixed build against poppler 24.10+
+
2024-12-20 Ismael Luceno <ismael AT sourcemage.org>
* DETAILS: updated spell to 1.4
* DEPENDS: removed deprecated dbus support option
diff --git
a/graphics/inkscape/patches/0001-Future-proof-against-poppler-24.10-changes.patch
b/graphics/inkscape/patches/0001-Future-proof-against-poppler-24.10-changes.patch
new file mode 100644
index 0000000..a6db7dc
--- /dev/null
+++
b/graphics/inkscape/patches/0001-Future-proof-against-poppler-24.10-changes.patch
@@ -0,0 +1,430 @@
+From 22304ae8034d067670a9f95022083a75fac92b4c Mon Sep 17 00:00:00 2001
+From: PBS <pbs3141 AT gmail.com>
+Date: Tue, 22 Oct 2024 14:48:31 +0100
+Subject: [PATCH 1/4] Future-proof against poppler 24.10 changes
+
+---
+ .../internal/pdfinput/pdf-parser.cpp | 120 ++++++++----------
+ src/extension/internal/pdfinput/pdf-parser.h | 4 +-
+ .../pdfinput/poppler-transition-api.h | 6 +
+ 3 files changed, 61 insertions(+), 69 deletions(-)
+
+diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp
b/src/extension/internal/pdfinput/pdf-parser.cpp
+index 97b2909218a..28000a87b0c 100644
+--- a/src/extension/internal/pdfinput/pdf-parser.cpp
++++ b/src/extension/internal/pdfinput/pdf-parser.cpp
+@@ -817,11 +817,11 @@ void PdfParser::opSetExtGState(Object args[], int
/*numArgs*/)
+ _POPPLER_FREE(obj3);
+ if (_POPPLER_CALL_ARGS_DEREF(obj3, obj2.dictLookup,
"G").isStream()) {
+ if (_POPPLER_CALL_ARGS_DEREF(obj4,
obj3.streamGetDict()->lookup, "Group").isDict()) {
+- GfxColorSpace *blendingColorSpace = nullptr;
++ std::unique_ptr<GfxColorSpace> blendingColorSpace;
+ GBool isolated = gFalse;
+ GBool knockout = gFalse;
+ if (!_POPPLER_CALL_ARGS_DEREF(obj5, obj4.dictLookup,
"CS").isNull()) {
+- blendingColorSpace = GfxColorSpace::parse(nullptr,
&obj5, nullptr, state);
++ blendingColorSpace =
std::unique_ptr<GfxColorSpace>(GfxColorSpace::parse(nullptr, &obj5, nullptr,
state));
+ }
+ _POPPLER_FREE(obj5);
+ if (_POPPLER_CALL_ARGS_DEREF(obj5, obj4.dictLookup,
"I").isBool()) {
+@@ -842,7 +842,7 @@ void PdfParser::opSetExtGState(Object args[], int
/*numArgs*/)
+ }
+ }
+ }
+- doSoftMask(&obj3, alpha, blendingColorSpace, isolated,
knockout, funcs[0], &backdropColor);
++ doSoftMask(&obj3, alpha, blendingColorSpace.get(),
isolated, knockout, funcs[0], &backdropColor);
+ if (funcs[0]) {
+ delete funcs[0];
+ }
+@@ -927,9 +927,6 @@ void PdfParser::doSoftMask(Object *str, GBool alpha,
+ alpha, transferFunc, backdropColor);
+ --formDepth;
+
+- if (blendingColorSpace) {
+- delete blendingColorSpace;
+- }
+ _POPPLER_FREE(obj1);
+ }
+
+@@ -946,42 +943,43 @@ void PdfParser::opSetRenderingIntent(Object
/*args*/[], int /*numArgs*/)
+ *
+ * Maintains a cache for named color spaces to avoid expensive re-parsing.
+ */
+-GfxColorSpace *PdfParser::lookupColorSpaceCopy(Object &arg)
++std::unique_ptr<GfxColorSpace> PdfParser::lookupColorSpaceCopy(Object &arg)
+ {
+ assert(!arg.isNull());
+- GfxColorSpace *colorSpace = nullptr;
+
+ if (char const *name = arg.isName() ? arg.getName() : nullptr) {
+ auto const cache_name = std::to_string(formDepth) + "-" + name;
+- if ((colorSpace = colorSpacesCache[cache_name].get())) {
+- return colorSpace->copy();
++ if (auto cached = colorSpacesCache[cache_name].get()) {
++ return std::unique_ptr<GfxColorSpace>(cached->copy());
+ }
+
+- Object obj = res->lookupColorSpace(name);
+- if (obj.isNull()) {
+- colorSpace = GfxColorSpace::parse(res, &arg, nullptr, state);
++ std::unique_ptr<GfxColorSpace> colorSpace;
++ if (auto obj = res->lookupColorSpace(name); !obj.isNull()) {
++ colorSpace =
std::unique_ptr<GfxColorSpace>(GfxColorSpace::parse(res, &obj, nullptr,
state));
+ } else {
+- colorSpace = GfxColorSpace::parse(res, &obj, nullptr, state);
++ colorSpace =
std::unique_ptr<GfxColorSpace>(GfxColorSpace::parse(res, &arg, nullptr,
state));
+ }
+
+ if (colorSpace && colorSpace->getMode() != csPattern) {
+- colorSpacesCache[cache_name].reset(colorSpace->copy());
++ colorSpacesCache[cache_name] =
std::unique_ptr<GfxColorSpace>(colorSpace->copy());
+ }
++
++ return colorSpace;
+ } else {
+ // We were passed in an object directly.
+- colorSpace = GfxColorSpace::parse(res, &arg, nullptr, state);
++ return std::unique_ptr<GfxColorSpace>(GfxColorSpace::parse(res,
&arg, nullptr, state));
+ }
+- return colorSpace;
+ }
+
+ /**
+ * Look up pattern/gradients from the GfxResource dictionary
+ */
+-GfxPattern *PdfParser::lookupPattern(Object *obj, GfxState *state)
++std::unique_ptr<GfxPattern> PdfParser::lookupPattern(Object *obj, GfxState
*state)
+ {
+- if (!obj->isName())
+- return nullptr;
+- return res->lookupPattern(obj->getName(), nullptr, state);
++ if (!obj->isName()) {
++ return {};
++ }
++ return std::unique_ptr<GfxPattern>(res->lookupPattern(obj->getName(),
nullptr, state));
+ }
+
+ // TODO not good that numArgs is ignored but args[] is used:
+@@ -990,7 +988,7 @@ void PdfParser::opSetFillGray(Object args[], int
/*numArgs*/)
+ GfxColor color;
+ builder->beforeStateChange(state);
+ state->setFillPattern(nullptr);
+- state->setFillColorSpace(new GfxDeviceGrayColorSpace());
++
state->setFillColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceGrayColorSpace>()));
+ color.c[0] = dblToCol(args[0].getNum());
+ state->setFillColor(&color);
+ builder->updateStyle(state);
+@@ -1002,7 +1000,7 @@ void PdfParser::opSetStrokeGray(Object args[], int
/*numArgs*/)
+ GfxColor color;
+ builder->beforeStateChange(state);
+ state->setStrokePattern(nullptr);
+- state->setStrokeColorSpace(new GfxDeviceGrayColorSpace());
++
state->setStrokeColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceGrayColorSpace>()));
+ color.c[0] = dblToCol(args[0].getNum());
+ state->setStrokeColor(&color);
+ builder->updateStyle(state);
+@@ -1015,7 +1013,7 @@ void PdfParser::opSetFillCMYKColor(Object args[], int
/*numArgs*/)
+ int i;
+ builder->beforeStateChange(state);
+ state->setFillPattern(nullptr);
+- state->setFillColorSpace(new GfxDeviceCMYKColorSpace());
++
state->setFillColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceCMYKColorSpace>()));
+ for (i = 0; i < 4; ++i) {
+ color.c[i] = dblToCol(args[i].getNum());
+ }
+@@ -1029,7 +1027,7 @@ void PdfParser::opSetStrokeCMYKColor(Object args[],
int /*numArgs*/)
+ GfxColor color;
+ builder->beforeStateChange(state);
+ state->setStrokePattern(nullptr);
+- state->setStrokeColorSpace(new GfxDeviceCMYKColorSpace());
++
state->setStrokeColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceCMYKColorSpace>()));
+ for (int i = 0; i < 4; ++i) {
+ color.c[i] = dblToCol(args[i].getNum());
+ }
+@@ -1043,7 +1041,7 @@ void PdfParser::opSetFillRGBColor(Object args[], int
/*numArgs*/)
+ GfxColor color;
+ builder->beforeStateChange(state);
+ state->setFillPattern(nullptr);
+- state->setFillColorSpace(new GfxDeviceRGBColorSpace());
++
state->setFillColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceRGBColorSpace>()));
+ for (int i = 0; i < 3; ++i) {
+ color.c[i] = dblToCol(args[i].getNum());
+ }
+@@ -1056,7 +1054,7 @@ void PdfParser::opSetStrokeRGBColor(Object args[], int
/*numArgs*/) {
+ GfxColor color;
+ builder->beforeStateChange(state);
+ state->setStrokePattern(nullptr);
+- state->setStrokeColorSpace(new GfxDeviceRGBColorSpace());
++
state->setStrokeColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceRGBColorSpace>()));
+ for (int i = 0; i < 3; ++i) {
+ color.c[i] = dblToCol(args[i].getNum());
+ }
+@@ -1068,14 +1066,14 @@ void PdfParser::opSetStrokeRGBColor(Object args[],
int /*numArgs*/) {
+ void PdfParser::opSetFillColorSpace(Object args[], int numArgs)
+ {
+ assert(numArgs >= 1);
+- GfxColorSpace *colorSpace = lookupColorSpaceCopy(args[0]);
++ auto colorSpace = lookupColorSpaceCopy(args[0]);
+ builder->beforeStateChange(state);
+ state->setFillPattern(nullptr);
+
+ if (colorSpace) {
+ GfxColor color;
+- state->setFillColorSpace(colorSpace);
+ colorSpace->getDefaultColor(&color);
++ state->setFillColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(colorSpace));
+ state->setFillColor(&color);
+ builder->updateStyle(state);
+ } else {
+@@ -1089,14 +1087,14 @@ void PdfParser::opSetStrokeColorSpace(Object args[],
int numArgs)
+ assert(numArgs >= 1);
+ builder->beforeStateChange(state);
+
+- GfxColorSpace *colorSpace = lookupColorSpaceCopy(args[0]);
++ auto colorSpace = lookupColorSpaceCopy(args[0]);
+
+ state->setStrokePattern(nullptr);
+
+ if (colorSpace) {
+ GfxColor color;
+- state->setStrokeColorSpace(colorSpace);
+ colorSpace->getDefaultColor(&color);
++ state->setStrokeColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(colorSpace));
+ state->setStrokeColor(&color);
+ builder->updateStyle(state);
+ } else {
+@@ -1159,7 +1157,7 @@ void PdfParser::opSetFillColorN(Object args[], int
numArgs) {
+ builder->updateStyle(state);
+ }
+ if (auto pattern = lookupPattern(&(args[numArgs - 1]), state)) {
+- state->setFillPattern(pattern);
++ state->setFillPattern(_POPPLER_CONSUME_UNIQPTR_ARG(pattern));
+ builder->updateStyle(state);
+ }
+
+@@ -1202,7 +1200,7 @@ void PdfParser::opSetStrokeColorN(Object args[], int
numArgs) {
+ builder->updateStyle(state);
+ }
+ if (auto pattern = lookupPattern(&(args[numArgs - 1]), state)) {
+- state->setStrokePattern(pattern);
++ state->setStrokePattern(_POPPLER_CONSUME_UNIQPTR_ARG(pattern));
+ builder->updateStyle(state);
+ }
+
+@@ -1579,11 +1577,11 @@ void
PdfParser::doShadingPatternFillFallback(GfxShadingPattern *sPat,
+ // TODO not good that numArgs is ignored but args[] is used:
+ void PdfParser::opShFill(Object args[], int /*numArgs*/)
+ {
+- GfxShading *shading = nullptr;
+ GfxPath *savedPath = nullptr;
+ bool savedState = false;
+
+- if (!(shading = res->lookupShading(args[0].getName(), nullptr, state))) {
++ auto shading =
std::unique_ptr<GfxShading>(res->lookupShading(args[0].getName(), nullptr,
state));
++ if (!shading) {
+ return;
+ }
+
+@@ -1615,19 +1613,19 @@ void PdfParser::opShFill(Object args[], int
/*numArgs*/)
+ // do shading type-specific operations
+ switch (shading->getType()) {
+ case 1: // Function-based shading
+- doFunctionShFill(static_cast<GfxFunctionShading *>(shading));
++ doFunctionShFill(static_cast<GfxFunctionShading *>(shading.get()));
+ break;
+ case 2: // Axial shading
+ case 3: // Radial shading
+- builder->addClippedFill(shading, stateToAffine(state));
++ builder->addClippedFill(shading.get(), stateToAffine(state));
+ break;
+ case 4: // Free-form Gouraud-shaded triangle mesh
+ case 5: // Lattice-form Gouraud-shaded triangle mesh
+- doGouraudTriangleShFill(static_cast<GfxGouraudTriangleShading
*>(shading));
++ doGouraudTriangleShFill(static_cast<GfxGouraudTriangleShading
*>(shading.get()));
+ break;
+ case 6: // Coons patch mesh
+ case 7: // Tensor-product patch mesh
+- doPatchMeshShFill(static_cast<GfxPatchMeshShading *>(shading));
++ doPatchMeshShFill(static_cast<GfxPatchMeshShading *>(shading.get()));
+ break;
+ }
+
+@@ -1636,8 +1634,6 @@ void PdfParser::opShFill(Object args[], int
/*numArgs*/)
+ restoreState();
+ state->setPath(savedPath);
+ }
+-
+- delete shading;
+ }
+
+ void PdfParser::doFunctionShFill(GfxFunctionShading *shading) {
+@@ -2528,7 +2524,7 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str,
GBool inlineImg)
+
+ } else {
+ // get color space and color map
+- GfxColorSpace *colorSpace;
++ std::unique_ptr<GfxColorSpace> colorSpace;
+ _POPPLER_CALL_ARGS(obj1, dict->lookup, "ColorSpace");
+ if (obj1.isNull()) {
+ _POPPLER_FREE(obj1);
+@@ -2537,13 +2533,11 @@ void PdfParser::doImage(Object * /*ref*/, Stream
*str, GBool inlineImg)
+ if (!obj1.isNull()) {
+ colorSpace = lookupColorSpaceCopy(obj1);
+ } else if (csMode == streamCSDeviceGray) {
+- colorSpace = new GfxDeviceGrayColorSpace();
++ colorSpace = std::make_unique<GfxDeviceGrayColorSpace>();
+ } else if (csMode == streamCSDeviceRGB) {
+- colorSpace = new GfxDeviceRGBColorSpace();
++ colorSpace = std::make_unique<GfxDeviceRGBColorSpace>();
+ } else if (csMode == streamCSDeviceCMYK) {
+- colorSpace = new GfxDeviceCMYKColorSpace();
+- } else {
+- colorSpace = nullptr;
++ colorSpace = std::make_unique<GfxDeviceCMYKColorSpace>();
+ }
+ _POPPLER_FREE(obj1);
+ if (!colorSpace) {
+@@ -2554,10 +2548,9 @@ void PdfParser::doImage(Object * /*ref*/, Stream
*str, GBool inlineImg)
+ _POPPLER_FREE(obj1);
+ _POPPLER_CALL_ARGS(obj1, dict->lookup, "D");
+ }
+- GfxImageColorMap *colorMap = new GfxImageColorMap(bits, &obj1,
colorSpace);
++ auto colorMap = std::make_unique<GfxImageColorMap>(bits, &obj1,
_POPPLER_CONSUME_UNIQPTR_ARG(colorSpace));
+ _POPPLER_FREE(obj1);
+ if (!colorMap->isOk()) {
+- delete colorMap;
+ goto err1;
+ }
+
+@@ -2568,7 +2561,7 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str,
GBool inlineImg)
+ int maskWidth = 0;
+ int maskHeight = 0;
+ maskInvert = gFalse;
+- GfxImageColorMap *maskColorMap = nullptr;
++ std::unique_ptr<GfxImageColorMap> maskColorMap;
+ _POPPLER_CALL_ARGS(maskObj, dict->lookup, "Mask");
+ _POPPLER_CALL_ARGS(smaskObj, dict->lookup, "SMask");
+ Dict* maskDict;
+@@ -2624,7 +2617,7 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str,
GBool inlineImg)
+ _POPPLER_FREE(obj1);
+ _POPPLER_CALL_ARGS(obj1, maskDict->lookup, "CS");
+ }
+- GfxColorSpace *maskColorSpace = lookupColorSpaceCopy(obj1);
++ auto maskColorSpace = lookupColorSpaceCopy(obj1);
+ _POPPLER_FREE(obj1);
+ if (!maskColorSpace || maskColorSpace->getMode() !=
csDeviceGray) {
+ goto err1;
+@@ -2634,10 +2627,9 @@ void PdfParser::doImage(Object * /*ref*/, Stream
*str, GBool inlineImg)
+ _POPPLER_FREE(obj1);
+ _POPPLER_CALL_ARGS(obj1, maskDict->lookup, "D");
+ }
+- maskColorMap = new GfxImageColorMap(maskBits, &obj1,
maskColorSpace);
++ maskColorMap = std::make_unique<GfxImageColorMap>(maskBits,
&obj1, _POPPLER_CONSUME_UNIQPTR_ARG(maskColorSpace));
+ _POPPLER_FREE(obj1);
+ if (!maskColorMap->isOk()) {
+- delete maskColorMap;
+ goto err1;
+ }
+ //~ handle the Matte entry
+@@ -2718,17 +2710,15 @@ void PdfParser::doImage(Object * /*ref*/, Stream
*str, GBool inlineImg)
+
+ // draw it
+ if (haveSoftMask) {
+- builder->addSoftMaskedImage(state, str, width, height, colorMap,
interpolate,
+- maskStr, maskWidth, maskHeight, maskColorMap,
maskInterpolate);
+- delete maskColorMap;
++ builder->addSoftMaskedImage(state, str, width, height,
colorMap.get(), interpolate,
++ maskStr, maskWidth, maskHeight,
maskColorMap.get(), maskInterpolate);
+ } else if (haveExplicitMask) {
+- builder->addMaskedImage(state, str, width, height, colorMap,
interpolate,
++ builder->addMaskedImage(state, str, width, height,
colorMap.get(), interpolate,
+ maskStr, maskWidth, maskHeight, maskInvert,
maskInterpolate);
+ } else {
+- builder->addImage(state, str, width, height, colorMap,
interpolate,
+- haveColorKeyMask ? maskColors : static_cast<int
*>(nullptr));
++ builder->addImage(state, str, width, height, colorMap.get(),
interpolate,
++ haveColorKeyMask ? maskColors : nullptr);
+ }
+- delete colorMap;
+
+ _POPPLER_FREE(maskObj);
+ _POPPLER_FREE(smaskObj);
+@@ -2746,7 +2736,6 @@ void PdfParser::doForm(Object *str, double *offset)
+ {
+ Dict *dict;
+ GBool transpGroup, isolated, knockout;
+- GfxColorSpace *blendingColorSpace;
+ Object matrixObj, bboxObj;
+ double m[6], bbox[4];
+ Object resObj;
+@@ -2812,12 +2801,12 @@ void PdfParser::doForm(Object *str, double *offset)
+
+ // check for a transparency group
+ transpGroup = isolated = knockout = gFalse;
+- blendingColorSpace = nullptr;
++ std::unique_ptr<GfxColorSpace> blendingColorSpace;
+ if (_POPPLER_CALL_ARGS_DEREF(obj1, dict->lookup, "Group").isDict()) {
+ if (_POPPLER_CALL_ARGS_DEREF(obj2, obj1.dictLookup,
"S").isName("Transparency")) {
+ transpGroup = gTrue;
+ if (!_POPPLER_CALL_ARGS_DEREF(obj3, obj1.dictLookup,
"CS").isNull()) {
+- blendingColorSpace = GfxColorSpace::parse(nullptr, &obj3,
nullptr, state);
++ blendingColorSpace =
std::unique_ptr<GfxColorSpace>(GfxColorSpace::parse(nullptr, &obj3, nullptr,
state));
+ }
+ _POPPLER_FREE(obj3);
+ if (_POPPLER_CALL_ARGS_DEREF(obj3, obj1.dictLookup, "I").isBool()) {
+@@ -2835,12 +2824,9 @@ void PdfParser::doForm(Object *str, double *offset)
+
+ // draw it
+ ++formDepth;
+- doForm1(str, resDict, m, bbox, transpGroup, gFalse, blendingColorSpace,
isolated, knockout);
++ doForm1(str, resDict, m, bbox, transpGroup, gFalse,
blendingColorSpace.get(), isolated, knockout);
+ --formDepth;
+
+- if (blendingColorSpace) {
+- delete blendingColorSpace;
+- }
+ _POPPLER_FREE(resObj);
+ }
+
+diff --git a/src/extension/internal/pdfinput/pdf-parser.h
b/src/extension/internal/pdfinput/pdf-parser.h
+index c7c10caefed..8325ea24364 100644
+--- a/src/extension/internal/pdfinput/pdf-parser.h
++++ b/src/extension/internal/pdfinput/pdf-parser.h
+@@ -137,7 +137,7 @@ public:
+ void loadPatternColorProfiles(Dict *resources);
+ void loadColorProfile();
+ void loadColorSpaceProfile(GfxColorSpace *space, Object *obj);
+- GfxPattern *lookupPattern(Object *obj, GfxState *state);
++ std::unique_ptr<GfxPattern> lookupPattern(Object *obj, GfxState *state);
+
+ std::shared_ptr<CairoFontEngine> getFontEngine();
+
+@@ -176,7 +176,7 @@ private:
+ //! Caches color spaces by name
+ std::map<std::string, std::unique_ptr<GfxColorSpace>> colorSpacesCache;
+
+- GfxColorSpace *lookupColorSpaceCopy(Object &);
++ std::unique_ptr<GfxColorSpace> lookupColorSpaceCopy(Object &);
+
+ void setDefaultApproximationPrecision(); // init color deltas
+ void pushOperator(const char *name);
+diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h
b/src/extension/internal/pdfinput/poppler-transition-api.h
+index 481aefadf46..8f03aa17779 100644
+--- a/src/extension/internal/pdfinput/poppler-transition-api.h
++++ b/src/extension/internal/pdfinput/poppler-transition-api.h
+@@ -15,6 +15,12 @@
+ #include <glib/poppler-features.h>
+ #include <poppler/UTF.h>
+
++#if POPPLER_CHECK_VERSION(24, 10, 0)
++#define _POPPLER_CONSUME_UNIQPTR_ARG(value) std::move(value)
++#else
++#define _POPPLER_CONSUME_UNIQPTR_ARG(value) value.release()
++#endif
++
+ #if POPPLER_CHECK_VERSION(24, 5, 0)
+ #define _POPPLER_HAS_UNICODE_BOM(value)
(hasUnicodeByteOrderMark(value->toStr()))
+ #define _POPPLER_HAS_UNICODE_BOMLE(value)
(hasUnicodeByteOrderMarkLE(value->toStr()))
+--
+GitLab
+
diff --git
a/graphics/inkscape/patches/0002-Fix-building-with-Poppler-24.11.patch
b/graphics/inkscape/patches/0002-Fix-building-with-Poppler-24.11.patch
new file mode 100644
index 0000000..7f5be57
--- /dev/null
+++ b/graphics/inkscape/patches/0002-Fix-building-with-Poppler-24.11.patch
@@ -0,0 +1,59 @@
+From 0399372ec240d23e0e70548237a541f2b5bf0f34 Mon Sep 17 00:00:00 2001
+From: KrIr17 <elendil.krir17 AT gmail.com>
+Date: Tue, 5 Nov 2024 00:40:15 +0100
+Subject: [PATCH 2/4] Fix building with Poppler 24.11
+
+Poppler 24.11 no longer sets the default value for faceIndex to 0 in
+`FoFiTrueType::make()` and `FoFiTrueType::load()` [1], so we do it
+on our end instead.
+
+Fixes https://gitlab.com/inkscape/inkscape/-/issues/5370
+
+[1]
https://gitlab.freedesktop.org/poppler/poppler/-/commit/94467509a013dd5cf46c942baa598f2b296571f4
+---
+ .../internal/pdfinput/poppler-cairo-font-engine.cpp | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
+index 34a8eed682d..728b1d1aac4 100644
+--- a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
++++ b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
+@@ -419,9 +419,9 @@ 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());
++ ff = FoFiTrueType::make((fontchar)font_data.data(),
font_data.size(), 0);
+ } else {
+- ff = FoFiTrueType::load(fileName.c_str());
++ ff = FoFiTrueType::load(fileName.c_str(), 0);
+ }
+ if (!ff) {
+ goto err2;
+@@ -444,9 +444,9 @@ 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());
++ ff = FoFiTrueType::make((fontchar)font_data.data(),
font_data.size(), 0);
+ } else {
+- ff = FoFiTrueType::load(fileName.c_str());
++ ff = FoFiTrueType::load(fileName.c_str(), 0);
+ }
+ if (!ff) {
+ error(errSyntaxError, -1, "failed to load truetype font\n");
+@@ -512,9 +512,9 @@ 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());
++ ff = FoFiTrueType::make((fontchar)font_data.data(),
font_data.size(), 0);
+ } else {
+- ff = FoFiTrueType::load(fileName.c_str());
++ ff = FoFiTrueType::load(fileName.c_str(), 0);
+ }
+ if (ff) {
+ if (ff->isOpenTypeCFF()) {
+--
+GitLab
+
diff --git
a/graphics/inkscape/patches/0003-Fix-Poppler-private-includes.patch
b/graphics/inkscape/patches/0003-Fix-Poppler-private-includes.patch
new file mode 100644
index 0000000..985f968
--- /dev/null
+++ b/graphics/inkscape/patches/0003-Fix-Poppler-private-includes.patch
@@ -0,0 +1,39 @@
+From 874dcfbd303bc7a1bddb6f34aebbb4dba8eda771 Mon Sep 17 00:00:00 2001
+From: Rafael Siejakowski <rs AT rs-math.net>
+Date: Sun, 10 Nov 2024 13:20:48 +0100
+Subject: [PATCH 3/4] Fix Poppler private includes
+
+In the PDF parser, include the Poppler private headers using
+the angular brackets and the poppler/ directory prefix, as is
+done in other places in the code which need Poppler's private
+headers.
+
+This fixes build against Poppler installed at a custom path.
+---
+ src/extension/internal/pdfinput/pdf-parser.h | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/src/extension/internal/pdfinput/pdf-parser.h
b/src/extension/internal/pdfinput/pdf-parser.h
+index 8325ea24364..7d9189dfc0a 100644
+--- a/src/extension/internal/pdfinput/pdf-parser.h
++++ b/src/extension/internal/pdfinput/pdf-parser.h
+@@ -24,13 +24,12 @@
+ #pragma interface
+ #endif
+
+-#include "glib/poppler-features.h"
+-#include "Object.h"
+-
++#include <2geom/affine.h>
++#include <glib/poppler-features.h>
+ #include <map>
+ #include <memory>
++#include <poppler/Object.h>
+ #include <string>
+-#include <2geom/affine.h>
+
+ #define Operator Operator_Gfx
+ #include <poppler/Gfx.h>
+--
+GitLab
+
diff --git
a/graphics/inkscape/patches/0004-Fix-building-with-poppler-24.12.0.patch
b/graphics/inkscape/patches/0004-Fix-building-with-poppler-24.12.0.patch
new file mode 100644
index 0000000..c0e77d9
--- /dev/null
+++ b/graphics/inkscape/patches/0004-Fix-building-with-poppler-24.12.0.patch
@@ -0,0 +1,53 @@
+From c9046810d899a408bfbd489aad91872b1203ee6d Mon Sep 17 00:00:00 2001
+From: KrIr17 <elendil.krir17 AT gmail.com>
+Date: Thu, 5 Dec 2024 15:03:47 +0100
+Subject: [PATCH 4/4] Fix building with poppler 24.12.0
+
+Fixes https://gitlab.com/inkscape/inkscape/-/issues/5415
+---
+ src/extension/internal/pdfinput/pdf-parser.cpp | 4 +++-
+ src/extension/internal/pdfinput/poppler-transition-api.h | 6 ++++++
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp
b/src/extension/internal/pdfinput/pdf-parser.cpp
+index 28000a87b0c..9ea30b90a48 100644
+--- a/src/extension/internal/pdfinput/pdf-parser.cpp
++++ b/src/extension/internal/pdfinput/pdf-parser.cpp
+@@ -2403,6 +2403,7 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str,
GBool inlineImg)
+ int bits;
+ GBool interpolate;
+ StreamColorSpaceMode csMode;
++ GBool hasAlpha;
+ GBool mask;
+ GBool invert;
+ Object maskObj, smaskObj;
+@@ -2414,7 +2415,8 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str,
GBool inlineImg)
+ // get info from the stream
+ bits = 0;
+ csMode = streamCSNone;
+- str->getImageParams(&bits, &csMode);
++ hasAlpha = false;
++ str->_POPPLER_GET_IMAGE_PARAMS(&bits, &csMode, &hasAlpha);
+
+ // get stream dict
+ dict = str->getDict();
+diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h
b/src/extension/internal/pdfinput/poppler-transition-api.h
+index 8f03aa17779..b7a54828e74 100644
+--- a/src/extension/internal/pdfinput/poppler-transition-api.h
++++ b/src/extension/internal/pdfinput/poppler-transition-api.h
+@@ -39,6 +39,12 @@
+ #define _POPPLER_FUNCTION_TYPE_STITCHING 3
+ #endif
+
++#if POPPLER_CHECK_VERSION(24,12,0)
++#define _POPPLER_GET_IMAGE_PARAMS(bits, csMode, hasAlpha)
getImageParams(bits, csMode, hasAlpha)
++#else
++#define _POPPLER_GET_IMAGE_PARAMS(bits, csMode, hasAlpha)
getImageParams(bits, csMode)
++#endif
++
+ #if POPPLER_CHECK_VERSION(22, 4, 0)
+ #define _POPPLER_FONTPTR_TO_GFX8(font_ptr) ((Gfx8BitFont *)font_ptr.get())
+ #else
+--
+GitLab
+
diff --git a/libs/libiconv/DEPENDS b/libs/libiconv/DEPENDS
new file mode 100755
index 0000000..5f3a8b2
--- /dev/null
+++ b/libs/libiconv/DEPENDS
@@ -0,0 +1 @@
+depends slibtool LIBTOOL=slibtool
diff --git a/libs/libiconv/DETAILS b/libs/libiconv/DETAILS
index 90a4f31..849cf2a 100755
--- a/libs/libiconv/DETAILS
+++ b/libs/libiconv/DETAILS
@@ -1,9 +1,9 @@
SPELL=libiconv
- VERSION=1.17
+ VERSION=1.18
SOURCE="$SPELL-$VERSION.tar.gz"
# Watch: https://ftp.gnu.org/gnu/libiconv
SOURCE_URL[0]=https://ftp.gnu.org/gnu/$SPELL/$SOURCE
-
SOURCE_HASH=sha512:18a09de2d026da4f2d8b858517b0f26d853b21179cf4fa9a41070b2d140030ad9525637dc4f34fc7f27abca8acdc84c6751dfb1d426e78bf92af4040603ced86
+
SOURCE_HASH=sha512:a55eb3b7b785a78ab8918db8af541c9e11deb5ff4f89d54483287711ed797d87848ce0eafffa7ce26d9a7adb4b5a9891cb484f94bd4f51d3ce97a6a47b4c719a
SOURCE_DIRECTORY="$BUILD_DIRECTORY/$SPELL-$VERSION"
WEB_SITE="https://www.gnu.org/software/libiconv/"
LICENSE[0]="LGPLv3"
diff --git a/libs/libiconv/HISTORY b/libs/libiconv/HISTORY
index 03cfed4..ac39194 100644
--- a/libs/libiconv/HISTORY
+++ b/libs/libiconv/HISTORY
@@ -1,3 +1,11 @@
+2025-01-15 Ismael Luceno <ismael AT sourcemage.org>
+ * DETAILS: updated spell to 1.18
+ * DEPENDS: added slibtool; build libiconv.a too (for bash.static)
+ * PRE_BUILD: patched libcharset/configure and applied patch files
+ * patches/Don-t-build-bin-iconv-in-the-install-stage.patch:
+ added to avoid building src/iconv during install; this also fixes
+ building with slibtool
+
2023-02-12 Ismael Luceno <ismael AT sourcemage.org>
* DETAILS: updated spell to 1.17
diff --git a/libs/libiconv/PRE_BUILD b/libs/libiconv/PRE_BUILD
new file mode 100755
index 0000000..a838159
--- /dev/null
+++ b/libs/libiconv/PRE_BUILD
@@ -0,0 +1,4 @@
+default_pre_build &&
+cd "$SOURCE_DIRECTORY" &&
+patch_configure_libtool_override libcharset/configure &&
+apply_patch_dir patches
diff --git
a/libs/libiconv/patches/0001-Don-t-build-bin-iconv-in-the-install-stage.patch
b/libs/libiconv/patches/0001-Don-t-build-bin-iconv-in-the-install-stage.patch
new file mode 100644
index 0000000..3266668
--- /dev/null
+++
b/libs/libiconv/patches/0001-Don-t-build-bin-iconv-in-the-install-stage.patch
@@ -0,0 +1,46 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Ismael Luceno <ismael AT sourcemage.org>
+Date: Wed, 15 Jan 2025 08:49:11 +0100
+Subject: [PATCH] Don't build bin/iconv in the install stage
+
+Also make it more standard so it succeeds building with slibtool.
+
+Upstream-Status: Pending
+Origin: Source Mage
+Signed-off-by: Ismael Luceno <ismael AT sourcemage.org>
+---
+ src/Makefile.in | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/src/Makefile.in b/src/Makefile.in
+index e8fff47483eb..50c57b65f82e 100644
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -70,9 +70,12 @@ OBJECTS_RES_no =
+ # i.e. during "make install". The intermediate 'iconv' executable is built
+ # without internationalization and not linked with libintl.
+
+-all : iconv_no_i18n$(EXEEXT) iconv.@OBJEXT@ $(OBJECTS_RES_@WOE32@)
++all : iconv_no_i18n$(EXEEXT) iconv$(EXEEXT) $(OBJECTS_RES_@WOE32@)
+ test `ls -ld . | sed -e 's/^d\(.........\).*/\1/'` = rwxrwxrwx ||
chmod 777 .
+
++iconv$(EXEEXT) : iconv.@OBJEXT@ ../lib/libiconv.la $(OBJECTS_RES_@WOE32@)
++ $(LIBTOOL_LINK) $(CC) $(LDFLAGS) $(CFLAGS) $(iconv_LDFLAGS)
iconv.@OBJEXT@ ../srclib/libicrt.a @LTLIBINTL@ ../lib/libiconv.la
$(OBJECTS_RES_@WOE32@) -o $@
++
+ # This is the temporary iconv executable, without internationalization.
+ iconv_no_i18n$(EXEEXT) : iconv_no_i18n.@OBJEXT@ ../lib/libiconv.la
$(OBJECTS_RES_@WOE32@)
+ $(LIBTOOL_LINK) $(CC) $(LDFLAGS) $(CFLAGS) iconv_no_i18n.@OBJEXT@
../srclib/libicrt.a ../lib/libiconv.la $(OBJECTS_RES_@WOE32@) -o $@
+@@ -111,10 +114,6 @@ iconv_LDFLAGS = `if test -n '$(RELOCATABLE_LDFLAGS)';
then $(RELOCATABLE_LDFLAGS
+ # ../lib/libiconv.la entirely.
+ install : all force
+ if [ ! -d $(DESTDIR)$(bindir) ] ; then $(mkinstalldirs)
$(DESTDIR)$(bindir) ; fi
+- case "@host_os@" in \
+- hpux*) $(CC) $(LDFLAGS) $(CFLAGS) $(iconv_LDFLAGS) iconv.@OBJEXT@
../srclib/libicrt.a -L$(DESTDIR)$(libdir) -liconv @LIBINTL@
$(OBJECTS_RES_@WOE32@) `if test -n '$(DESTDIR)'; then echo " -Wl,+b
-Wl,$(libdir)"; fi` -o iconv$(EXEEXT);; \
+- *) $(LIBTOOL_LINK) $(CC) $(LDFLAGS) $(CFLAGS) $(iconv_LDFLAGS)
iconv.@OBJEXT@ ../srclib/libicrt.a @LTLIBINTL@
$(DESTDIR)$(libdir)/libiconv.la $(OBJECTS_RES_@WOE32@) -o iconv$(EXEEXT);; \
+- esac
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL_INSTALL) $(INSTALL_PROGRAM)
iconv$(EXEEXT) $(DESTDIR)$(bindir)/iconv$(EXEEXT)
+
+ install-strip : force
+--
+Fixed up by sm-checkpatch 0.1
+
- [[SM-Commit] ] GIT changes to master grimoire by Ismael Luceno (2baf9cd03bd2c3104d65e65c96916a13fffb5e9b), Ismael Luceno, 01/15/2025
Archive powered by MHonArc 2.6.24.