diff options
| author | Crucible <crucible@localhost> | 2026-09-22 18:47:35 -0500 |
|---|---|---|
| committer | Crucible <crucible@localhost> | 2026-09-22 18:47:35 -0500 |
| commit | cde96c5ea0c81397fd3214d455a374f76179a7aa (patch) | |
| tree | 12c86d59eb88887c244b1145411db084ae5a6c1f /media-gfx | |
| parent | 47516b9667518dacb1efd6d257f7b3e6a481ec93 (diff) | |
| download | baldeagleos-repo-cde96c5ea0c81397fd3214d455a374f76179a7aa.tar.gz baldeagleos-repo-cde96c5ea0c81397fd3214d455a374f76179a7aa.tar.xz baldeagleos-repo-cde96c5ea0c81397fd3214d455a374f76179a7aa.zip | |
Publish baldeagleos-repo candidate 0000000325-20260922-184323
Diffstat (limited to 'media-gfx')
30 files changed, 1972 insertions, 213 deletions
diff --git a/media-gfx/exiv2/Manifest b/media-gfx/exiv2/Manifest index 5cf789c7c974..186811dda78c 100644 --- a/media-gfx/exiv2/Manifest +++ b/media-gfx/exiv2/Manifest @@ -1,2 +1 @@ -DIST exiv2-0.28.8.tar.gz 46670323 BLAKE2B c0248826eda08e7be4ecb597a5d4db37cd06abb03baa7bfc1fa32ff3b51b5900946dd24f7c9dd9423b5a56d40c8dbe8b792d46e697a08bad7feeaa3009c64a10 SHA512 e322438b565fe373e65baceeb4fd5173f538063b12b3d5a93d6e707da5020c818b1b9cc116f7bf0709635aa72b941dacb7a2bcfe6d946e2eaf7d9e55736dec5b DIST exiv2-0.28.9.tar.gz 47189810 BLAKE2B 59e84f43e73b10f0201ab833065fe924d4a083a4b1f1663bb9e2023856993fd8f7180a42b5cca2259df6ee59dc24e3479ca8fd36cad81c8928da8c03156889bf SHA512 a7fa8fb19e54cdf0b9aac917087c86d45ea1b4a991a85ea8c5dd96af0289df63823901e44604d4c8df55883dcd19aee2efc48d7b5fde313dc0787b842a223a4a diff --git a/media-gfx/exiv2/exiv2-0.28.8.ebuild b/media-gfx/exiv2/exiv2-0.28.8.ebuild deleted file mode 100644 index dbf51c31bb96..000000000000 --- a/media-gfx/exiv2/exiv2-0.28.8.ebuild +++ /dev/null @@ -1,128 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -PYTHON_COMPAT=( python3_{13..14} ) -inherit cmake-multilib python-any-r1 - -DESCRIPTION="EXIF, IPTC and XMP metadata C++ library and command line utility" -HOMEPAGE="https://exiv2.org/" - -if [[ ${PV} == *9999* ]]; then - EGIT_REPO_URI="https://github.com/Exiv2/exiv2.git" - inherit git-r3 -else - SRC_URI="https://github.com/Exiv2/exiv2/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-solaris" -fi - -LICENSE="GPL-2" -# Upstream hope to have stable ABI in 1.0. Until then, go off ${PV}. -# We may be able to change it to $(ver_cut 1-2) once e.g. -# https://github.com/Exiv2/exiv2/pull/917 is merged. -SLOT="0/$(ver_cut 1-2)" -IUSE="+bmff doc examples jpegxl nls +png test webready +xmp" -RESTRICT="!test? ( test )" - -RDEPEND=" - dev-libs/inih[${MULTILIB_USEDEP}] - >=virtual/libiconv-0-r1[${MULTILIB_USEDEP}] - jpegxl? ( app-arch/brotli:=[${MULTILIB_USEDEP}] ) - nls? ( >=virtual/libintl-0-r1[${MULTILIB_USEDEP}] ) - png? ( virtual/zlib:=[${MULTILIB_USEDEP}] ) - webready? ( net-misc/curl[${MULTILIB_USEDEP}] ) - xmp? ( dev-libs/expat[${MULTILIB_USEDEP}] ) -" -DEPEND="${RDEPEND} - test? ( dev-cpp/gtest ) -" -BDEPEND=" - doc? ( - ${PYTHON_DEPS} - app-text/doxygen - dev-libs/libxslt - media-gfx/graphviz - virtual/pkgconfig - ) - test? ( ${PYTHON_DEPS} ) - nls? ( sys-devel/gettext ) -" - -DOCS=( README.md doc/ChangeLog doc/cmd.txt ) - -pkg_setup() { - if use doc || use test ; then - python-any-r1_pkg_setup - fi -} - -src_prepare() { - # FIXME @upstream: - einfo "Converting doc/cmd.txt to UTF-8" - iconv -f LATIN1 -t UTF-8 doc/cmd.txt > doc/cmd.txt.tmp || die - mv -f doc/cmd.txt.tmp doc/cmd.txt || die - - cmake_src_prepare - - sed -e "/^include.*compilerFlags/s/^/#DONT /" -i CMakeLists.txt || die -} - -multilib_src_configure() { - local mycmakeargs=( - -DEXIV2_BUILD_SAMPLES=NO - -DEXIV2_ENABLE_BROTLI=$(usex jpegxl) - -DEXIV2_ENABLE_NLS=$(usex nls) - -DEXIV2_ENABLE_PNG=$(usex png) - -DEXIV2_ENABLE_CURL=$(usex webready) - -DEXIV2_ENABLE_INIH=ON # must be enabled (bug #921937) - -DEXIV2_ENABLE_WEBREADY=$(usex webready) - -DEXIV2_ENABLE_XMP=$(usex xmp) - -DEXIV2_ENABLE_BMFF=$(usex bmff) - - # We let users control this. - -DBUILD_WITH_CCACHE=OFF - # Our toolchain sets this by default. - -DBUILD_WITH_STACK_PROTECTOR=OFF - - $(multilib_is_native_abi || echo -DEXIV2_BUILD_EXIV2_COMMAND=NO) - $(multilib_is_native_abi && echo -DEXIV2_BUILD_DOC=$(usex doc)) - $(multilib_is_native_abi && echo -DEXIV2_BUILD_UNIT_TESTS=$(usex test)) - -DCMAKE_INSTALL_DOCDIR="${EPREFIX}"/usr/share/doc/${PF}/html - ) - - if use doc || use test ; then - mycmakeargs+=( - -DPython3_EXECUTABLE="${PYTHON}" - ) - fi - - cmake_src_configure -} - -multilib_src_compile() { - cmake_src_compile - - if multilib_is_native_abi; then - use doc && eninja doc - fi -} - -multilib_src_test() { - if multilib_is_native_abi; then - cd "${BUILD_DIR}"/bin || die - ./unit_tests || die "Failed to run tests" - fi -} - -multilib_src_install_all() { - use xmp && DOCS+=( doc/{COPYING-XMPSDK,README-XMP,cmdxmp.txt} ) - - einstalldocs - find "${D}" -name '*.la' -delete || die - - if use examples; then - docinto examples - dodoc samples/*.cpp - fi -} diff --git a/media-gfx/exiv2/exiv2-0.28.9.ebuild b/media-gfx/exiv2/exiv2-0.28.9.ebuild index 5dd6e84012b6..09891d8abde8 100644 --- a/media-gfx/exiv2/exiv2-0.28.9.ebuild +++ b/media-gfx/exiv2/exiv2-0.28.9.ebuild @@ -14,7 +14,7 @@ if [[ ${PV} == *9999* ]]; then inherit git-r3 else SRC_URI="https://github.com/Exiv2/exiv2/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" - KEYWORDS="~alpha ~amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-solaris" + KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-solaris" fi LICENSE="GPL-2+" diff --git a/media-gfx/feh/Manifest b/media-gfx/feh/Manifest index 3c4e3b9fb2e9..a62cc3b6307b 100644 --- a/media-gfx/feh/Manifest +++ b/media-gfx/feh/Manifest @@ -1,4 +1,3 @@ -DIST feh-3.11.3.tar.bz2 2109841 BLAKE2B eba549f799f1f7d0822c513fb80be495d54976ef2511a8830242acb2564c2a9f170f8f04699c14cb838c43721ff33b9d286c2fdf811e60ce49a6029fb62b9c1e SHA512 b5b009c9a1b1416ba6aec150c96309106b03a17a0be636c1d008a5817e3895306e7c02167c11a97c04c2ef46efe848648c2163977733efebc45caa4a9a3befb5 DIST feh-3.12.2.tar.bz2 2111186 BLAKE2B 5ffb5bd57340523ec12f4f900f92704fc67570438638b48ce15b034bc36ce9b02fbccad600da785a5d4e3660dd7f46e0e48d09dfbaec0d347439fc041949ca10 SHA512 a060043d9d59bb5f4e0a0525c97ce8637f4bb9efbd27a46a2275da6c646f0d1de7fba80172f16a8d3f2dcb54f2bbeca13c073d033cfc08b62f78ac9a6d740ca2 -DIST feh-3.12.3.tar.bz2 2111581 BLAKE2B 63216d97092b3d56d7c73b3f405d66e2c6306ad9ddea3dcaeec87660284d415427d900ab7a03441f04b119176bedf71547a0db9ad9b596415da41259bf18d82f SHA512 3548e75aa3c72be528669b1d63a1e2bb44467ec0111abe7e7a5edc92601b164e66304db653778f9ee46883c57526b46d764659a380be0012360679a654de8f3d DIST feh-3.12.4.tar.bz2 2111928 BLAKE2B 2a609a6536bfc6639c950a6bc5f7cd2a7a5dbfce8c5ddf04704b981578820f3cafabc280b52e3777926c78240d0930be8bf53802ae7ef5b2e5d124c80eaa7d03 SHA512 84a16fcdb953a16c851c219f21c2b8f70371452886d3ef778acc4d3d41e054243effa2b101bc76727769d5fa3d1582581e082f1f01a4bb0ad196ca011ce24621 +DIST feh-3.13.tar.bz2 2430219 BLAKE2B bbbcddc5a7d9d162866765a2a2ba5a8d8d57017fb2bbab5b88b47428fc15790326abb229cf62e831b9d2c1b9bbda11a52cde4e2612ad13b5e2dd0204138f8f1a SHA512 35c7af2901c0356cd76f109a9c5ce694d9a77cc37ff783195f7a6d23377ea7412bc87a26501cfceb340f36fb1d31c91df23719dc882292cbf060a9057587207b diff --git a/media-gfx/feh/feh-3.11.3.ebuild b/media-gfx/feh/feh-3.11.3.ebuild deleted file mode 100644 index 6bad3a9f2b9e..000000000000 --- a/media-gfx/feh/feh-3.11.3.ebuild +++ /dev/null @@ -1,73 +0,0 @@ -# Copyright 1999-2026 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 -inherit toolchain-funcs xdg-utils - -DESCRIPTION="A fast, lightweight imageviewer using imlib2" -HOMEPAGE="https://feh.finalrewind.org/" -SRC_URI="https://feh.finalrewind.org/${P}.tar.bz2" - -LICENSE="feh" -SLOT="0" -KEYWORDS="amd64 ~arm arm64 ~mips ppc ppc64 ~riscv x86" -IUSE="debug curl exif magic test xinerama inotify" -RESTRICT="test" # Tests are broken. - -COMMON_DEPEND=" - media-libs/imlib2[X,text(+)] - >=media-libs/libpng-1.2:0= - x11-libs/libX11 - curl? ( net-misc/curl ) - exif? ( media-libs/libexif ) - magic? ( sys-apps/file ) - xinerama? ( x11-libs/libXinerama )" -RDEPEND="${COMMON_DEPEND} - media-libs/libjpeg-turbo:0" -DEPEND="${COMMON_DEPEND} - x11-base/xorg-proto - x11-libs/libXt - test? ( - >=dev-lang/perl-5.10 - dev-perl/Test-Command - media-libs/imlib2[gif,jpeg,png] - )" - -PATCHES=( "${FILESDIR}"/${PN}-3.2-debug-cflags.patch ) - -pkg_setup() { - use_feh() { usex $1 1 0; } - - fehopts=( - PREFIX="${EPREFIX}"/usr - doc_dir='${main_dir}'/share/doc/${PF} - example_dir='${main_dir}'/share/doc/${PF}/examples - curl=$(use_feh curl) - debug=$(use_feh debug) - xinerama=$(use_feh xinerama) - exif=$(use_feh exif) - inotify=$(use_feh inotify) - magic=$(use_feh magic) - ) -} - -src_compile() { - tc-export CC - emake "${fehopts[@]}" -} - -src_install() { - emake "${fehopts[@]}" DESTDIR="${D}" install -} - -pkg_postinst() { - xdg_icon_cache_update - xdg_mimeinfo_database_update - xdg_desktop_database_update -} - -pkg_postrm() { - xdg_icon_cache_update - xdg_mimeinfo_database_update - xdg_desktop_database_update -} diff --git a/media-gfx/feh/feh-3.12.3.ebuild b/media-gfx/feh/feh-3.13.ebuild index ed2fb4314b2e..ed2fb4314b2e 100644 --- a/media-gfx/feh/feh-3.12.3.ebuild +++ b/media-gfx/feh/feh-3.13.ebuild diff --git a/media-gfx/inkscape/files/inkscape-1.4.4-poppler-26.06.patch b/media-gfx/inkscape/files/inkscape-1.4.4-poppler-26.06.patch new file mode 100644 index 000000000000..01c7138e4002 --- /dev/null +++ b/media-gfx/inkscape/files/inkscape-1.4.4-poppler-26.06.patch @@ -0,0 +1,516 @@ +Source: +https://build.opensuse.org/projects/graphics/packages/inkscape/files/fix_build_with_poppler_26.06.patch + +From b95f70db09072bb60600d2f6de103608750ef247 Mon Sep 17 00:00:00 2001 +From: KrIr17 <elendil.krir17@gmail.com> +Date: Mon, 8 Jun 2026 20:16:32 +0200 +Subject: [PATCH] Fix Building with Poppler 26.06.0 + +- pdfparser: Some `const PDFRectangle *` to `const PDFRectangle &` [1] +- pdfparser: Some `const GfxColor *` to `const GfxColor &` [2] +- pdf-utils: Add a `getRect(const PDFRectangle &)` alongside `getRect(const + PDFRectangle *)` +- poppler-cairo-font-engine: `getKey()` now returns std::string and not + char[], so change `strcmp` to `std::string(...).compare(...)` [3] +- poppler-utils: `obj->dictGetKey()` etc. were removed; use + `obj->dict()->getKey()` instead (these have also existed in poppler + since the beginning, so shouldn't break any old poppler) [4,5] +- svg-builder: `convertGfxColor` now takes `const GfxColor &` as input. + A convenience function taking `const GfxColor *` (for older poppler) + now calls the new one after confirming `color` is a valid pointer +- svg-builder: `_addStopToGradient` now takes `const GfxColor &` as + input. This was used only in `convertGfxColor` and therefore doesn't + need a helper function for compatibility +- testfiles pdf-utils-test: `<poppler/*.h>` to `<*.h>` (see e3eb1210) +- testfiles pdf-utils-test: Some `const PDFRectangle *` + to `const PDFRectangle &` [1] + +Fixes https://gitlab.com/inkscape/inkscape/-/work_items/6210 + +Upstream Commits: + +[1] https://gitlab.freedesktop.org/poppler/poppler/-/commit/d50a4510 +[2] https://gitlab.freedesktop.org/poppler/poppler/-/commit/0f94f530 +[3] https://gitlab.freedesktop.org/poppler/poppler/-/commit/a3de7f8a +[4] https://gitlab.freedesktop.org/poppler/poppler/-/commit/bb13b0f5 +[5] https://gitlab.freedesktop.org/poppler/poppler/-/commit/8ae0f8e7 +--- + src/extension/internal/pdfinput/pdf-input.cpp | 14 +++++- + .../internal/pdfinput/pdf-parser.cpp | 43 ++++++++++--------- + src/extension/internal/pdfinput/pdf-parser.h | 4 +- + src/extension/internal/pdfinput/pdf-utils.cpp | 5 +++ + src/extension/internal/pdfinput/pdf-utils.h | 3 ++ + .../pdfinput/poppler-cairo-font-engine.cpp | 2 +- + .../pdfinput/poppler-transition-api.h | 16 +++++++ + .../internal/pdfinput/poppler-utils.cpp | 20 +++++---- + .../internal/pdfinput/svg-builder.cpp | 29 ++++++++----- + src/extension/internal/pdfinput/svg-builder.h | 3 +- + 10 files changed, 94 insertions(+), 45 deletions(-) + +diff --git a/src/extension/internal/pdfinput/pdf-input.cpp b/src/extension/internal/pdfinput/pdf-input.cpp +index 45df931f00..441871bb10 100644 +--- a/src/extension/internal/pdfinput/pdf-input.cpp ++++ b/src/extension/internal/pdfinput/pdf-input.cpp +@@ -808,7 +808,11 @@ PdfInput::add_builder_page(std::shared_ptr<PDFDoc>pdf_doc, SvgBuilder *builder, + } + + // Apply crop settings ++#if POPPLER_CHECK_VERSION(26, 6, 0) ++ std::optional<PDFRectangle> clipToBox; ++#else + _POPPLER_CONST PDFRectangle *clipToBox = nullptr; ++#endif + + if (crop_to == "media-box") { + clipToBox = page->getMediaBox(); +@@ -822,8 +826,16 @@ PdfInput::add_builder_page(std::shared_ptr<PDFDoc>pdf_doc, SvgBuilder *builder, + clipToBox = page->getArtBox(); + } + ++ std::optional<PDFRectangle> cropBox; ++#if POPPLER_CHECK_VERSION(26, 6, 0) ++ cropBox = clipToBox; ++#else ++ if (clipToBox) { ++ cropBox = *clipToBox; ++ } ++#endif + // Create parser (extension/internal/pdfinput/pdf-parser.h) +- auto pdf_parser = PdfParser(pdf_doc, builder, page, clipToBox); ++ auto pdf_parser = PdfParser(pdf_doc, builder, page, cropBox); + + // Set up approximation precision for parser. Used for converting Mesh Gradients into tiles. + if ( color_delta <= 0.0 ) { +diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp +index d24dc05dab..e32fa24b32 100644 +--- a/src/extension/internal/pdfinput/pdf-parser.cpp ++++ b/src/extension/internal/pdfinput/pdf-parser.cpp +@@ -43,6 +43,7 @@ + #include <poppler/GlobalParams.h> + #include <poppler/Lexer.h> + #include <poppler/Object.h> ++#include <poppler/OptionalContent.h> + #include <poppler/OutputDev.h> + #include <poppler/PDFDoc.h> + #include <poppler/Page.h> +@@ -266,7 +267,7 @@ GfxPatch blankPatch() + //------------------------------------------------------------------------ + + PdfParser::PdfParser(std::shared_ptr<PDFDoc> pdf_doc, Inkscape::Extension::Internal::SvgBuilder *builderA, Page *page, +- _POPPLER_CONST PDFRectangle *cropBox) ++ const std::optional<PDFRectangle> &cropBox) + : _pdf_doc(pdf_doc) + , xref(pdf_doc->getXRef()) + , builder(builderA) +@@ -307,8 +308,8 @@ PdfParser::PdfParser(std::shared_ptr<PDFDoc> pdf_doc, Inkscape::Extension::Inter + builder->setMargins(getRect(page->getTrimBox()) * scale, + getRect(page->getArtBox()) * scale, + getRect(page->getBleedBox()) * scale); +- if (cropBox && getRect(cropBox) != page_box) { +- builder->cropPage(getRect(cropBox) * scale); ++ if (cropBox && getRect(*cropBox) != page_box) { ++ builder->cropPage(getRect(*cropBox) * scale); + } + + saveState(); +@@ -325,7 +326,7 @@ PdfParser::PdfParser(XRef *xrefA, Inkscape::Extension::Internal::SvgBuilder *bui + , printCommands(false) + , res(new GfxResources(xref, resDict, nullptr)) + , // start the resource stack +- state(new GfxState(72, 72, box, 0, false)) ++ state(new _POPPLER_GFX_STATE(72, 72, *box, 0, false)) + , fontChanged(gFalse) + , clip(clipNone) + , ignoreUndef(0) +@@ -992,7 +993,7 @@ void PdfParser::opSetFillGray(Object args[], int /*numArgs*/) + state->setFillPattern(nullptr); + state->setFillColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceGrayColorSpace>())); + color.c[0] = dblToCol(args[0].getNum()); +- state->setFillColor(&color); ++ state->_POPPLER_SET_FILL_COLOR(color); + builder->updateStyle(state); + } + +@@ -1004,7 +1005,7 @@ void PdfParser::opSetStrokeGray(Object args[], int /*numArgs*/) + state->setStrokePattern(nullptr); + state->setStrokeColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceGrayColorSpace>())); + color.c[0] = dblToCol(args[0].getNum()); +- state->setStrokeColor(&color); ++ state->_POPPLER_SET_STROKE_COLOR(color); + builder->updateStyle(state); + } + +@@ -1019,7 +1020,7 @@ void PdfParser::opSetFillCMYKColor(Object args[], int /*numArgs*/) + for (i = 0; i < 4; ++i) { + color.c[i] = dblToCol(args[i].getNum()); + } +- state->setFillColor(&color); ++ state->_POPPLER_SET_FILL_COLOR(color); + builder->updateStyle(state); + } + +@@ -1033,7 +1034,7 @@ void PdfParser::opSetStrokeCMYKColor(Object args[], int /*numArgs*/) + for (int i = 0; i < 4; ++i) { + color.c[i] = dblToCol(args[i].getNum()); + } +- state->setStrokeColor(&color); ++ state->_POPPLER_SET_STROKE_COLOR(color); + builder->updateStyle(state); + } + +@@ -1047,7 +1048,7 @@ void PdfParser::opSetFillRGBColor(Object args[], int /*numArgs*/) + for (int i = 0; i < 3; ++i) { + color.c[i] = dblToCol(args[i].getNum()); + } +- state->setFillColor(&color); ++ state->_POPPLER_SET_FILL_COLOR(color); + builder->updateStyle(state); + } + +@@ -1060,7 +1061,7 @@ void PdfParser::opSetStrokeRGBColor(Object args[], int /*numArgs*/) { + for (int i = 0; i < 3; ++i) { + color.c[i] = dblToCol(args[i].getNum()); + } +- state->setStrokeColor(&color); ++ state->_POPPLER_SET_STROKE_COLOR(color); + builder->updateStyle(state); + } + +@@ -1076,7 +1077,7 @@ void PdfParser::opSetFillColorSpace(Object args[], int numArgs) + GfxColor color; + colorSpace->getDefaultColor(&color); + state->setFillColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(colorSpace)); +- state->setFillColor(&color); ++ state->_POPPLER_SET_FILL_COLOR(color); + builder->updateStyle(state); + } else { + error(errSyntaxError, getPos(), "Bad color space (fill)"); +@@ -1097,7 +1098,7 @@ void PdfParser::opSetStrokeColorSpace(Object args[], int numArgs) + GfxColor color; + colorSpace->getDefaultColor(&color); + state->setStrokeColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(colorSpace)); +- state->setStrokeColor(&color); ++ state->_POPPLER_SET_STROKE_COLOR(color); + builder->updateStyle(state); + } else { + error(errSyntaxError, getPos(), "Bad color space (stroke)"); +@@ -1117,7 +1118,7 @@ void PdfParser::opSetFillColor(Object args[], int numArgs) { + for (i = 0; i < numArgs; ++i) { + color.c[i] = dblToCol(args[i].getNum()); + } +- state->setFillColor(&color); ++ state->_POPPLER_SET_FILL_COLOR(color); + builder->updateStyle(state); + } + +@@ -1134,7 +1135,7 @@ void PdfParser::opSetStrokeColor(Object args[], int numArgs) { + for (i = 0; i < numArgs; ++i) { + color.c[i] = dblToCol(args[i].getNum()); + } +- state->setStrokeColor(&color); ++ state->_POPPLER_SET_STROKE_COLOR(color); + builder->updateStyle(state); + } + +@@ -1155,7 +1156,7 @@ void PdfParser::opSetFillColorN(Object args[], int numArgs) { + color.c[i] = dblToCol(args[i].getNum()); + } + } +- state->setFillColor(&color); ++ state->_POPPLER_SET_FILL_COLOR(color); + builder->updateStyle(state); + } + if (auto pattern = lookupPattern(&(args[numArgs - 1]), state)) { +@@ -1174,7 +1175,7 @@ void PdfParser::opSetFillColorN(Object args[], int numArgs) { + color.c[i] = dblToCol(args[i].getNum()); + } + } +- state->setFillColor(&color); ++ state->_POPPLER_SET_FILL_COLOR(color); + builder->updateStyle(state); + } + } +@@ -1198,7 +1199,7 @@ void PdfParser::opSetStrokeColorN(Object args[], int numArgs) { + color.c[i] = dblToCol(args[i].getNum()); + } + } +- state->setStrokeColor(&color); ++ state->_POPPLER_SET_STROKE_COLOR(color); + builder->updateStyle(state); + } + if (auto pattern = lookupPattern(&(args[numArgs - 1]), state)) { +@@ -1217,7 +1218,7 @@ void PdfParser::opSetStrokeColorN(Object args[], int numArgs) { + color.c[i] = dblToCol(args[i].getNum()); + } + } +- state->setStrokeColor(&color); ++ state->_POPPLER_SET_STROKE_COLOR(color); + builder->updateStyle(state); + } + } +@@ -1700,7 +1701,7 @@ void PdfParser::doFunctionShFill1(GfxFunctionShading *shading, + + // use the center color + shading->getColor(xM, yM, &fillColor); +- state->setFillColor(&fillColor); ++ state->_POPPLER_SET_FILL_COLOR(fillColor); + + // fill the rectangle + state->moveTo(x0 * matrix[0] + y0 * matrix[2] + matrix[4], +@@ -1799,7 +1800,7 @@ void PdfParser::gouraudFillTriangle(double x0, double y0, GfxColor *color0, + } + } + if (i == nComps || depth == maxDepths[pdfGouraudTriangleShading-1]) { +- state->setFillColor(color0); ++ state->_POPPLER_SET_FILL_COLOR(*color0); + state->moveTo(x0, y0); + state->lineTo(x1, y1); + state->lineTo(x2, y2); +@@ -1877,7 +1878,7 @@ void PdfParser::fillPatch(_POPPLER_CONST GfxPatch *patch, int nComps, int depth) + color.c[i] = GfxColorComp(patch->color[0][0].c[i]); + } + if (i == nComps || depth == maxDepths[pdfPatchMeshShading-1]) { +- state->setFillColor(&color); ++ state->_POPPLER_SET_FILL_COLOR(color); + state->moveTo(patch->x[0][0], patch->y[0][0]); + state->curveTo(patch->x[0][1], patch->y[0][1], + patch->x[0][2], patch->y[0][2], +diff --git a/src/extension/internal/pdfinput/pdf-parser.h b/src/extension/internal/pdfinput/pdf-parser.h +index c136ebf1ef..58044fb518 100644 +--- a/src/extension/internal/pdfinput/pdf-parser.h ++++ b/src/extension/internal/pdfinput/pdf-parser.h +@@ -112,8 +112,8 @@ struct OpHistoryEntry { + class PdfParser { + public: + +- // Constructor for regular output. +- PdfParser(std::shared_ptr<PDFDoc> pdf_doc, SvgBuilder *builderA, Page *page, _POPPLER_CONST PDFRectangle *cropBox); ++ // Constructor for regular output. ++ PdfParser(std::shared_ptr<PDFDoc> pdf_doc, SvgBuilder *builderA, Page *page, const std::optional<PDFRectangle> &cropBox); + // Constructor for a sub-page object. + PdfParser(XRef *xrefA, SvgBuilder *builderA, Dict *resDict, _POPPLER_CONST PDFRectangle *box); + +diff --git a/src/extension/internal/pdfinput/pdf-utils.cpp b/src/extension/internal/pdfinput/pdf-utils.cpp +index d126426b62..28c1678f2d 100644 +--- a/src/extension/internal/pdfinput/pdf-utils.cpp ++++ b/src/extension/internal/pdfinput/pdf-utils.cpp +@@ -133,6 +133,11 @@ Geom::Rect getRect(_POPPLER_CONST PDFRectangle *box) + return Geom::Rect(box->x1, box->y1, box->x2, box->y2); + } + ++Geom::Rect getRect(const PDFRectangle &box) ++{ ++ return Geom::Rect(box.x1, box.y1, box.x2, box.y2); ++} ++ + Geom::PathVector getPathV(GfxPath *path) + { + if (!path) { +diff --git a/src/extension/internal/pdfinput/pdf-utils.h b/src/extension/internal/pdfinput/pdf-utils.h +index 59efdeae27..d5b3020d61 100644 +--- a/src/extension/internal/pdfinput/pdf-utils.h ++++ b/src/extension/internal/pdfinput/pdf-utils.h +@@ -59,6 +59,9 @@ private: + }; + + Geom::Rect getRect(_POPPLER_CONST PDFRectangle *box); ++Geom::Rect getRect(_POPPLER_CONST PDFRectangle &box); + Geom::PathVector getPathV(GfxPath *gPath); ++Geom::PathVector maybeIntersect(Geom::PathVector const &v1, Geom::PathVector const &v2, ++ FillRule fill1 = FillRule::fill_nonZero, FillRule fill2 = FillRule::fill_nonZero); + + #endif /* PDF_UTILS_H */ +diff --git a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp +index 9d908a33e3..af132ad735 100644 +--- a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp ++++ b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp +@@ -712,7 +712,7 @@ CairoType3Font *CairoType3Font::create(GfxFont *gfxFont, PDFDoc *doc, CairoFontE + codeToGID[i] = 0; + if (charProcs && (name = enc[i])) { + for (int j = 0; j < charProcs->getLength(); j++) { +- if (strcmp(name, charProcs->getKey(j)) == 0) { ++ if (std::string(charProcs->getKey(j)).compare(name) == 0) { + codeToGID[i] = j; + } + } +diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h b/src/extension/internal/pdfinput/poppler-transition-api.h +index 7f299bd05a..bf42f54142 100644 +--- a/src/extension/internal/pdfinput/poppler-transition-api.h ++++ b/src/extension/internal/pdfinput/poppler-transition-api.h +@@ -15,6 +15,22 @@ + #include <glib/poppler-features.h> + #include <poppler/UTF.h> + ++#if POPPLER_CHECK_VERSION(26, 6, 0) ++#define _POPPLER_GET_GRAY(color, gray) getGray(color, gray) ++#define _POPPLER_GET_RGB(color, rgb) getRGB(color, rgb) ++#define _POPPLER_GET_CMYK(color, cmyk) getCMYK(color, cmyk) ++#define _POPPLER_SET_FILL_COLOR(color) setFillColor(color) ++#define _POPPLER_SET_STROKE_COLOR(color) setStrokeColor(color) ++#define _POPPLER_GFX_STATE(h, v, Rect, rotateA, upsideDown) GfxState(h, v, Rect, rotateA, upsideDown) ++#else ++#define _POPPLER_GET_GRAY(color, gray) getGray(&color, gray) ++#define _POPPLER_GET_RGB(color, rgb) getRGB(&color, rgb) ++#define _POPPLER_GET_CMYK(color, cmyk) getCMYK(&color, cmyk) ++#define _POPPLER_SET_FILL_COLOR(color) setFillColor(&color) ++#define _POPPLER_SET_STROKE_COLOR(color) setStrokeColor(&color) ++#define _POPPLER_GFX_STATE(h, v, Rect, rotateA, upsideDown) GfxState(h, v, &Rect, rotateA, upsideDown) ++#endif ++ + #if POPPLER_CHECK_VERSION(26, 2, 0) + #define _POPPLER_WMODE GfxFont::WritingMode + #define _POPPLER_WMODE_HORIZONTAL GfxFont::WritingMode::Horizontal +diff --git a/src/extension/internal/pdfinput/poppler-utils.cpp b/src/extension/internal/pdfinput/poppler-utils.cpp +index a65a5780ee..902736281a 100644 +--- a/src/extension/internal/pdfinput/poppler-utils.cpp ++++ b/src/extension/internal/pdfinput/poppler-utils.cpp +@@ -195,15 +195,17 @@ void InkFontDict::hashFontObject1(const Object *obj, FNVHash *h) + hashFontObject1(&obj2, h); + } + break; +- case objDict: +- h->hash('d'); +- n = obj->dictGetLength(); +- h->hash((char *)&n, sizeof(int)); +- for (i = 0; i < n; ++i) { +- p = obj->dictGetKey(i); +- h->hash(p, (int)strlen(p)); +- const Object &obj2 = obj->dictGetValNF(i); +- hashFontObject1(&obj2, h); ++ case objDict: { ++ h->hash('d'); ++ auto objdict = obj->getDict(); ++ n = objdict->getLength(); ++ h->hash((char *)&n, sizeof(int)); ++ for (i = 0; i < n; ++i) { ++ auto p = std::string(objdict->getKey(i)); ++ h->hash(p.c_str(), p.length()); ++ const Object &obj2 = objdict->getValNF(i); ++ hashFontObject1(&obj2, h); ++ } + } + break; + case objStream: +diff --git a/src/extension/internal/pdfinput/svg-builder.cpp b/src/extension/internal/pdfinput/svg-builder.cpp +index d854ed8a2e..c308561319 100644 +--- a/src/extension/internal/pdfinput/svg-builder.cpp ++++ b/src/extension/internal/pdfinput/svg-builder.cpp +@@ -384,6 +384,7 @@ static gchar *svgConvertRGBToText(double r, double g, double b) { + return (gchar *)&tmp; + } + ++// for poppler < 26.06.0 + static std::string svgConvertGfxRGB(GfxRGB *color) + { + double r = (double)color->r / 65535.0; +@@ -393,6 +394,14 @@ static std::string svgConvertGfxRGB(GfxRGB *color) + } + + std::string SvgBuilder::convertGfxColor(const GfxColor *color, GfxColorSpace *space) ++{ ++ if (!color) { ++ return ""; ++ } ++ return convertGfxColor(*color, space); ++} ++ ++std::string SvgBuilder::convertGfxColor(const GfxColor &color, GfxColorSpace *space) + { + std::string icc = ""; + switch (space->getMode()) { +@@ -412,14 +421,14 @@ std::string SvgBuilder::convertGfxColor(const GfxColor *color, GfxColorSpace *sp + } + + GfxRGB rgb; +- space->getRGB(color, &rgb); ++ space->_POPPLER_GET_RGB(color, &rgb); + auto rgb_color = svgConvertGfxRGB(&rgb); + + if (!icc.empty()) { + Inkscape::CSSOStringStream icc_color; + icc_color << rgb_color << " icc-color(" << icc; + for (int i = 0; i < space->getNComps(); ++i) { +- icc_color << ", " << colToDbl((*color).c[i]); ++ icc_color << ", " << colToDbl((color).c[i]); + } + icc_color << ");"; + return icc_color.str(); +@@ -1204,7 +1213,7 @@ gchar *SvgBuilder::_createGradient(GfxShading *shading, const Geom::Affine pat_m + /** + * \brief Adds a stop with the given properties to the gradient's representation + */ +-void SvgBuilder::_addStopToGradient(Inkscape::XML::Node *gradient, double offset, GfxColor *color, GfxColorSpace *space, ++void SvgBuilder::_addStopToGradient(Inkscape::XML::Node *gradient, double offset, GfxColor &color, GfxColorSpace *space, + double opacity) + { + Inkscape::XML::Node *stop = _xml_doc->createElement("svg:stop"); +@@ -1214,7 +1223,7 @@ void SvgBuilder::_addStopToGradient(Inkscape::XML::Node *gradient, double offset + if (space->getMode() == csDeviceGray) { + // This is a transparency mask. + GfxRGB rgb; +- space->getRGB(color, &rgb); ++ space->_POPPLER_GET_RGB(color, &rgb); + double gray = (double)rgb.r / 65535.0; + gray = CLAMP(gray, 0.0, 1.0); + os_opacity << gray; +@@ -1255,8 +1264,8 @@ bool SvgBuilder::_addGradientStops(Inkscape::XML::Node *gradient, GfxShading *sh + if (!svgGetShadingColor(shading, 0.0, &stop1) || !svgGetShadingColor(shading, 1.0, &stop2)) { + return false; + } else { +- _addStopToGradient(gradient, 0.0, &stop1, space, 1.0); +- _addStopToGradient(gradient, 1.0, &stop2, space, 1.0); ++ _addStopToGradient(gradient, 0.0, stop1, space, 1.0); ++ _addStopToGradient(gradient, 1.0, stop2, space, 1.0); + } + } else if (type == _POPPLER_FUNCTION_TYPE_STITCHING) { + auto stitchingFunc = static_cast<_POPPLER_CONST StitchingFunction*>(func); +@@ -1269,7 +1278,7 @@ bool SvgBuilder::_addGradientStops(Inkscape::XML::Node *gradient, GfxShading *sh + // Add stops from all the stitched functions + GfxColor prev_color, color; + svgGetShadingColor(shading, bounds[0], &prev_color); +- _addStopToGradient(gradient, bounds[0], &prev_color, space, 1.0); ++ _addStopToGradient(gradient, bounds[0], prev_color, space, 1.0); + for ( int i = 0 ; i < num_funcs ; i++ ) { + svgGetShadingColor(shading, bounds[i + 1], &color); + // Add stops +@@ -1279,14 +1288,14 @@ bool SvgBuilder::_addGradientStops(Inkscape::XML::Node *gradient, GfxShading *sh + expE = (bounds[i + 1] - bounds[i])/expE; // approximate exponential as a single straight line at x=1 + if (encode[2*i] == 0) { // normal sequence + auto offset = (bounds[i + 1] - expE) / max_bound; +- _addStopToGradient(gradient, offset, &prev_color, space, 1.0); ++ _addStopToGradient(gradient, offset, prev_color, space, 1.0); + } else { // reflected sequence + auto offset = (bounds[i] + expE) / max_bound; +- _addStopToGradient(gradient, offset, &color, space, 1.0); ++ _addStopToGradient(gradient, offset, color, space, 1.0); + } + } + } +- _addStopToGradient(gradient, bounds[i + 1] / max_bound, &color, space, 1.0); ++ _addStopToGradient(gradient, bounds[i + 1] / max_bound, color, space, 1.0); + prev_color = color; + } + } else { // Unsupported function type +diff --git a/src/extension/internal/pdfinput/svg-builder.h b/src/extension/internal/pdfinput/svg-builder.h +index b814a67807..4041c95a9f 100644 +--- a/src/extension/internal/pdfinput/svg-builder.h ++++ b/src/extension/internal/pdfinput/svg-builder.h +@@ -186,7 +186,7 @@ private: + // Pattern creation + gchar *_createPattern(GfxPattern *pattern, GfxState *state, bool is_stroke=false); + gchar *_createGradient(GfxShading *shading, const Geom::Affine pat_matrix, bool for_shading = false); +- void _addStopToGradient(Inkscape::XML::Node *gradient, double offset, GfxColor *color, GfxColorSpace *space, ++ void _addStopToGradient(Inkscape::XML::Node *gradient, double offset, GfxColor &color, GfxColorSpace *space, + double opacity); + bool _addGradientStops(Inkscape::XML::Node *gradient, GfxShading *shading, + _POPPLER_CONST Function *func); +@@ -239,6 +239,7 @@ private: + static bool _attrEqual(Inkscape::XML::Node *a, Inkscape::XML::Node *b, char const *attr); + + // Colors ++ std::string convertGfxColor(const GfxColor &color, GfxColorSpace *space); + std::string convertGfxColor(const GfxColor *color, GfxColorSpace *space); + std::string _getColorProfile(cmsHPROFILE hp); + +-- +2.54.0 diff --git a/media-gfx/inkscape/files/inkscape-1.4.4-poppler-26.07.patch b/media-gfx/inkscape/files/inkscape-1.4.4-poppler-26.07.patch new file mode 100644 index 000000000000..b5b600e637d2 --- /dev/null +++ b/media-gfx/inkscape/files/inkscape-1.4.4-poppler-26.07.patch @@ -0,0 +1,335 @@ +Source: +https://build.opensuse.org/projects/graphics/packages/inkscape/files/fix_build_with_poppler_26.07.patch + +From eebf0342cbfcd23c6cba6053dd6ab7306d0de065 Mon Sep 17 00:00:00 2001 +From: KrIr17 <elendil.krir17@gmail.com> +Date: Sat, 4 Jul 2026 14:07:44 +0200 +Subject: [PATCH] Fix building with Poppler 26.07.0 + +1. `arrayGetfoo()` to `getArray()->getFoo()` [1] +2. `streamGetFoo()` to `getStream()->getFoo()` [2] +3. indextolabel now requires an `std::string *` and not `GooString *` + introduced _POPPLER_STRING_26_7 that changes accordingly. + +Relevant poppler commits: + +[1] [Remove Object::arrayGetNF](https://gitlab.freedesktop.org/poppler/poppler/-/commit/d9ffc4c29d1975a5c81d6bac9d8a1b6dc5aa1f50): Technically only arrayGetNF was removed, but perusing the commit shows that all `arrayGetFoo` are being changed. I assume they are slated for removal in future releases. + +[2] [Remove Object::streamGetDict](gitlab.freedesktop.org/poppler/poppler/-/commit/87edb5a5c40e67e782e54a14a2251547b4acdfb5) + +[3] [Use std::string instead of GooString for label](https://gitlab.freedesktop.org/poppler/poppler/-/commit/9e34004aae04064f1b798b5e711e13d0dddacf9e) + +(cherry picked from commit 9262f83aff7d8a6cadcb42446f9b943a561910cf) +--- + src/extension/internal/pdfinput/pdf-input.cpp | 5 +- + .../internal/pdfinput/pdf-parser.cpp | 50 +++++++++---------- + .../pdfinput/poppler-transition-api.h | 6 +++ + .../internal/pdfinput/poppler-utils.cpp | 29 ++++++----- + .../internal/pdfinput/poppler-utils.h | 1 + + 5 files changed, 52 insertions(+), 39 deletions(-) + +diff --git a/src/extension/internal/pdfinput/pdf-input.cpp b/src/extension/internal/pdfinput/pdf-input.cpp +index 441871bb10..3507ce4173 100644 +--- a/src/extension/internal/pdfinput/pdf-input.cpp ++++ b/src/extension/internal/pdfinput/pdf-input.cpp +@@ -855,9 +855,10 @@ PdfInput::add_builder_page(std::shared_ptr<PDFDoc>pdf_doc, SvgBuilder *builder, + + // Parse the annotations + if (auto annots = page->getAnnotsObject(); annots.isArray()) { +- auto const size = annots.arrayGetLength(); ++ auto* annotsArray = annots.getArray(); ++ auto const size = annotsArray->getLength(); + for (int i = 0; i < size; i++) { +- pdf_parser.build_annots(annots.arrayGet(i), page_num); ++ pdf_parser.build_annots(annotsArray->get(i), page_num); + } + } + } +diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp +index e32fa24b32..bf8daaac1b 100644 +--- a/src/extension/internal/pdfinput/pdf-parser.cpp ++++ b/src/extension/internal/pdfinput/pdf-parser.cpp +@@ -293,8 +293,8 @@ PdfParser::PdfParser(std::shared_ptr<PDFDoc> pdf_doc, Inkscape::Extension::Inter + if (page) { + // Increment the page building here and set page label + Catalog *catalog = pdf_doc->getCatalog(); +- GooString *label = new GooString(""); +- catalog->indexToLabel(page->getNum() - 1, label); ++ _POPPLER_STRING_26_7 label; ++ catalog->indexToLabel(page->getNum() - 1, &label); + builder->pushPage(getString(label), state); + } + +@@ -370,8 +370,8 @@ void PdfParser::parse(Object *obj, GBool topLevel) { + Object obj2; + + if (obj->isArray()) { +- for (int i = 0; i < obj->arrayGetLength(); ++i) { +- _POPPLER_CALL_ARGS(obj2, obj->arrayGet, i); ++ for (int i = 0; i < obj->getArray()->getLength(); ++i) { ++ _POPPLER_CALL_ARGS(obj2, obj->getArray()->get, i); + if (!obj2.isStream()) { + error(errInternal, -1, "Weird page contents"); + _POPPLER_FREE(obj2); +@@ -808,8 +808,8 @@ void PdfParser::opSetExtGState(Object args[], int /*numArgs*/) + for (int &i : backdropColor.c) { + i = 0; + } +- for (int i = 0; i < obj3.arrayGetLength() && i < gfxColorMaxComps; ++i) { +- _POPPLER_CALL_ARGS(obj4, obj3.arrayGet, i); ++ for (int i = 0; i < obj3.getArray()->getLength() && i < gfxColorMaxComps; ++i) { ++ _POPPLER_CALL_ARGS(obj4, obj3.getArray()->get, i); + if (obj4.isNum()) { + backdropColor.c[i] = dblToCol(obj4.getNum()); + } +@@ -818,7 +818,7 @@ 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()) { ++ if (_POPPLER_CALL_ARGS_DEREF(obj4, obj3.getStream()->getDict()->lookup, "Group").isDict()) { + std::unique_ptr<GfxColorSpace> blendingColorSpace; + GBool isolated = gFalse; + GBool knockout = gFalse; +@@ -881,7 +881,7 @@ void PdfParser::doSoftMask(Object *str, GBool alpha, + } + + // get stream dict +- dict = str->streamGetDict(); ++ dict = str->getStream()->getDict(); + + // check form type + _POPPLER_CALL_ARGS(obj1, dict->lookup, "FormType"); +@@ -898,7 +898,7 @@ void PdfParser::doSoftMask(Object *str, GBool alpha, + return; + } + for (i = 0; i < 4; ++i) { +- _POPPLER_CALL_ARGS(obj2, obj1.arrayGet, i); ++ _POPPLER_CALL_ARGS(obj2, obj1.getArray()->get, i); + bbox[i] = obj2.getNum(); + _POPPLER_FREE(obj2); + } +@@ -908,7 +908,7 @@ void PdfParser::doSoftMask(Object *str, GBool alpha, + _POPPLER_CALL_ARGS(obj1, dict->lookup, "Matrix"); + if (obj1.isArray()) { + for (i = 0; i < 6; ++i) { +- _POPPLER_CALL_ARGS(obj2, obj1.arrayGet, i); ++ _POPPLER_CALL_ARGS(obj2, obj1.getArray()->get, i); + m[i] = obj2.getNum(); + _POPPLER_FREE(obj2); + } +@@ -2378,7 +2378,7 @@ void PdfParser::opXObject(Object args[], int /*numArgs*/) + } + + //add layer at root if xObject has type OCG +- _POPPLER_CALL_ARGS(obj2, obj1.streamGetDict()->lookup, "OC"); ++ _POPPLER_CALL_ARGS(obj2, obj1.getStream()->getDict()->lookup, "OC"); + if(obj2.isDict()){ + auto type_dict = obj2.getDict(); + if (type_dict->lookup("Type").isName("OCG")) { +@@ -2396,7 +2396,7 @@ void PdfParser::opXObject(Object args[], int /*numArgs*/) + } + } + +- _POPPLER_CALL_ARGS(obj2, obj1.streamGetDict()->lookup, "Subtype"); ++ _POPPLER_CALL_ARGS(obj2, obj1.getStream()->getDict()->lookup, "Subtype"); + if (obj2.isName(const_cast<char*>("Image"))) { + _POPPLER_CALL_ARGS(refObj, res->lookupXObjectNF, name); + doImage(&refObj, obj1.getStream(), gFalse); +@@ -2404,7 +2404,7 @@ void PdfParser::opXObject(Object args[], int /*numArgs*/) + } else if (obj2.isName(const_cast<char*>("Form"))) { + doForm(&obj1); + } else if (obj2.isName(const_cast<char*>("PS"))) { +- _POPPLER_CALL_ARGS(obj3, obj1.streamGetDict()->lookup, "Level1"); ++ _POPPLER_CALL_ARGS(obj3, obj1.getStream()->getDict()->lookup, "Level1"); + } else if (obj2.isName()) { + error(errSyntaxError, getPos(), "Unknown XObject subtype '{0:s}'", obj2.getName()); + } else { +@@ -2535,7 +2535,7 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) + _POPPLER_CALL_ARGS(obj1, dict->lookup, "D"); + } + if (obj1.isArray()) { +- _POPPLER_CALL_ARGS(obj2, obj1.arrayGet, 0); ++ _POPPLER_CALL_ARGS(obj2, obj1.getArray()->get, 0); + if (obj2.isInt() && obj2.getInt() == 1) { + invert = gTrue; + } +@@ -2597,7 +2597,7 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) + goto err1; + } + maskStr = smaskObj.getStream(); +- maskDict = smaskObj.streamGetDict(); ++ maskDict = smaskObj.getStream()->getDict(); + _POPPLER_CALL_ARGS(obj1, maskDict->lookup, "Width"); + if (obj1.isNull()) { + _POPPLER_FREE(obj1); +@@ -2663,8 +2663,8 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) + } else if (maskObj.isArray()) { + // color key mask + int i; +- for (i = 0; i < maskObj.arrayGetLength() && i < 2*gfxColorMaxComps; ++i) { +- _POPPLER_CALL_ARGS(obj1, maskObj.arrayGet, i); ++ for (i = 0; i < maskObj.getArray()->getLength() && i < 2*gfxColorMaxComps; ++i) { ++ _POPPLER_CALL_ARGS(obj1, maskObj.getArray()->get, i); + maskColors[i] = obj1.getInt(); + _POPPLER_FREE(obj1); + } +@@ -2675,7 +2675,7 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) + goto err1; + } + maskStr = maskObj.getStream(); +- maskDict = maskObj.streamGetDict(); ++ maskDict = maskObj.getStream()->getDict(); + _POPPLER_CALL_ARGS(obj1, maskDict->lookup, "Width"); + if (obj1.isNull()) { + _POPPLER_FREE(obj1); +@@ -2722,7 +2722,7 @@ void PdfParser::doImage(Object * /*ref*/, Stream *str, GBool inlineImg) + _POPPLER_CALL_ARGS(obj1, maskDict->lookup, "D"); + } + if (obj1.isArray()) { +- _POPPLER_CALL_ARGS(obj2, obj1.arrayGet, 0); ++ _POPPLER_CALL_ARGS(obj2, obj1.getArray()->get, 0); + if (obj2.isInt() && obj2.getInt() == 1) { + maskInvert = gTrue; + } +@@ -2775,7 +2775,7 @@ void PdfParser::doForm(Object *str, double *offset) + } + + // get stream dict +- dict = str->streamGetDict(); ++ dict = str->getStream()->getDict(); + + // check form type + _POPPLER_CALL_ARGS(obj1, dict->lookup, "FormType"); +@@ -2792,7 +2792,7 @@ void PdfParser::doForm(Object *str, double *offset) + return; + } + for (i = 0; i < 4; ++i) { +- _POPPLER_CALL_ARGS(obj1, bboxObj.arrayGet, i); ++ _POPPLER_CALL_ARGS(obj1, bboxObj.getArray()->get, i); + bbox[i] = obj1.getNum(); + _POPPLER_FREE(obj1); + } +@@ -2802,7 +2802,7 @@ void PdfParser::doForm(Object *str, double *offset) + _POPPLER_CALL_ARGS(matrixObj, dict->lookup, "Matrix"); + if (matrixObj.isArray()) { + for (i = 0; i < 6; ++i) { +- _POPPLER_CALL_ARGS(obj1, matrixObj.arrayGet, i); ++ _POPPLER_CALL_ARGS(obj1, matrixObj.getArray()->get, i); + m[i] = obj1.getNum(); + _POPPLER_FREE(obj1); + } +@@ -3194,10 +3194,10 @@ void PdfParser::loadColorProfile() + return; + + Object outputIntents = catDict.dictLookup("OutputIntents"); +- if (!outputIntents.isArray() || outputIntents.arrayGetLength() != 1) ++ if (!outputIntents.isArray() || outputIntents.getArray()->getLength() != 1) + return; + +- Object firstElement = outputIntents.arrayGet(0); ++ Object firstElement = outputIntents.getArray()->get(0); + if (!firstElement.isDict()) + return; + +@@ -3245,7 +3245,7 @@ void PdfParser::build_annots(const Object &annot, int page_num) + _POPPLER_CALL_ARGS(Rect_obj, annot_dict->lookup, "Rect"); + if (Rect_obj.isArray()) { + for (int i = 0; i < 2; i++) { +- _POPPLER_CALL_ARGS(xy_obj, Rect_obj.arrayGet, i); ++ _POPPLER_CALL_ARGS(xy_obj, Rect_obj.getArray()->get, i); + offset[i] = xy_obj.getNum(); + } + doForm(&first_state_obj, offset); +diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h b/src/extension/internal/pdfinput/poppler-transition-api.h +index bf42f54142..058c91f379 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(26, 7, 0) ++#define _POPPLER_STRING_26_7 std::string ++#else ++#define _POPPLER_STRING_26_7 GooString ++#endif ++ + #if POPPLER_CHECK_VERSION(26, 6, 0) + #define _POPPLER_GET_GRAY(color, gray) getGray(color, gray) + #define _POPPLER_GET_RGB(color, rgb) getRGB(color, rgb) +diff --git a/src/extension/internal/pdfinput/poppler-utils.cpp b/src/extension/internal/pdfinput/poppler-utils.cpp +index 902736281a..d084d9218a 100644 +--- a/src/extension/internal/pdfinput/poppler-utils.cpp ++++ b/src/extension/internal/pdfinput/poppler-utils.cpp +@@ -186,15 +186,16 @@ void InkFontDict::hashFontObject1(const Object *obj, FNVHash *h) + case objNull: + h->hash('z'); + break; +- case objArray: +- h->hash('a'); +- n = obj->arrayGetLength(); +- h->hash((char *)&n, sizeof(int)); +- for (i = 0; i < n; ++i) { +- const Object &obj2 = obj->arrayGetNF(i); +- hashFontObject1(&obj2, h); +- } +- break; ++ case objArray: { ++ h->hash('a'); ++ Array * objArray = obj->getArray(); ++ n = objArray->getLength(); ++ h->hash((char *)&n, sizeof(int)); ++ for (i = 0; i < n; ++i) { ++ const Object &obj2 = objArray->getNF(i); ++ hashFontObject1(&obj2, h); ++ } ++ } break; + case objDict: { + h->hash('d'); + auto objdict = obj->getDict(); +@@ -206,8 +207,7 @@ void InkFontDict::hashFontObject1(const Object *obj, FNVHash *h) + const Object &obj2 = objdict->getValNF(i); + hashFontObject1(&obj2, h); + } +- } +- break; ++ } break; + case objStream: + // this should never happen - streams must be indirect refs + break; +@@ -545,7 +545,7 @@ void _getFontsRecursive(std::shared_ptr<PDFDoc> pdf_doc, Dict *resources, const + continue; + + Ref resourcesRef; +- const Object resObj = obj2.streamGetDict()->lookup("Resources", &resourcesRef); ++ const Object resObj = obj2.getStream()->getDict()->lookup("Resources", &resourcesRef); + if (resourcesRef != Ref::INVALID() && !visitedObjects.insert(resourcesRef.num).second) + continue; + +@@ -610,6 +610,11 @@ std::string getString(const GooString *value) + return ""; + } + ++std::string getString(const GooString &value) ++{ ++ return getString(value.toStr()); ++} ++ + /** + * Convert PDF strings, which can be formatted as UTF8, UTF16BE or UTF16LE into + * a predictable UTF8 string consistant with svg requirements. +diff --git a/src/extension/internal/pdfinput/poppler-utils.h b/src/extension/internal/pdfinput/poppler-utils.h +index 13123d79a9..2b1978bf0f 100644 +--- a/src/extension/internal/pdfinput/poppler-utils.h ++++ b/src/extension/internal/pdfinput/poppler-utils.h +@@ -86,6 +86,7 @@ std::string getDictString(Dict *dict, const char *key); + std::string getString(const std::string &value); + std::string getString(const std::unique_ptr<GooString> &value); + std::string getString(const GooString *value); ++std::string getString(const GooString &value); + std::string validateString(std::string const &in); + + // Replacate poppler FontDict +-- +2.54.0 diff --git a/media-gfx/inkscape/files/inkscape-1.4.4-poppler-26.08.patch b/media-gfx/inkscape/files/inkscape-1.4.4-poppler-26.08.patch new file mode 100644 index 000000000000..2d5d4f0743f5 --- /dev/null +++ b/media-gfx/inkscape/files/inkscape-1.4.4-poppler-26.08.patch @@ -0,0 +1,51 @@ +From 6018a00d7d885e98d66a6cfa264cacacac966507 Mon Sep 17 00:00:00 2001 +From: brandon wright <33914549+bwrightkc@users.noreply.github.com> +Date: Sun, 30 Aug 2026 08:16:45 -0500 +Subject: [PATCH] Fix building with Poppler 26.08.0, which now returns + std::optional<std::string> from getDocInfoStringEntry, by adding a matching + getString() overload. + +--- + src/extension/internal/pdfinput/poppler-utils.cpp | 5 +++++ + src/extension/internal/pdfinput/poppler-utils.h | 2 ++ + 2 files changed, 7 insertions(+) + +diff --git a/src/extension/internal/pdfinput/poppler-utils.cpp b/src/extension/internal/pdfinput/poppler-utils.cpp +index 0a82574209..80b25af86f 100644 +--- a/src/extension/internal/pdfinput/poppler-utils.cpp ++++ b/src/extension/internal/pdfinput/poppler-utils.cpp +@@ -648,6 +648,11 @@ std::string getDictString(Dict *dict, const char *key) + return getString(obj.getString()); + } + ++std::string getString(const std::optional<std::string> &value) ++{ ++ return value ? getString(*value) : ""; ++} ++ + std::string getString(const std::unique_ptr<GooString> &value) + { + return getString(value.get()); +diff --git a/src/extension/internal/pdfinput/poppler-utils.h b/src/extension/internal/pdfinput/poppler-utils.h +index 27675b758e..be1103da26 100644 +--- a/src/extension/internal/pdfinput/poppler-utils.h ++++ b/src/extension/internal/pdfinput/poppler-utils.h +@@ -16,6 +16,7 @@ + #include <array> + #include <map> + #include <memory> ++#include <optional> + #include <string> + #include <unordered_set> + #include <vector> +@@ -84,6 +85,7 @@ FontList getPdfFonts(std::shared_ptr<PDFDoc> pdf_doc); + std::string getNameWithoutSubsetTag(std::string name); + std::string getDictString(Dict *dict, const char *key); + std::string getString(const std::string &value); ++std::string getString(const std::optional<std::string> &value); + std::string getString(const std::unique_ptr<GooString> &value); + std::string getString(const GooString *value); + std::string getString(const GooString &value); +-- +GitLab + diff --git a/media-gfx/inkscape/inkscape-1.4.4-r1.ebuild b/media-gfx/inkscape/inkscape-1.4.4-r1.ebuild new file mode 100644 index 000000000000..f801799b7dbf --- /dev/null +++ b/media-gfx/inkscape/inkscape-1.4.4-r1.ebuild @@ -0,0 +1,217 @@ +# Copyright 1999-2026 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_{13..14} ) +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 wayland 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,lcms] + >=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?,wayland?] + 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}"/${PN}-1.4.3-libcroco-cmake-minreqver-3.12.patch # bug 965915 + "${FILESDIR}"/${PN}-1.4.4-respect-EPYTHON.patch # bug 924747 + "${FILESDIR}"/${PN}-1.4.4-poppler-26.05.patch # bug 974462 + "${FILESDIR}"/${PN}-1.4.4-poppler-26.0{6,7}.patch # thx openSUSE + "${FILESDIR}"/${PN}-1.4.4-poppler-26.08.patch # in inkscape git master +) + +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() { + rm -vr src/3rdparty/2geom/tests/dependent-project || die # unused, causing bug #964016 + cmake_src_prepare + # bug #924747 + sed -i -e "s:@GENTOO_PYTHON_INTERP@:${EPYTHON}:" src/extension/implementation/script.cpp || die + 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 + + use wayland || append-flags -DGENTOO_GTK_HIDE_WAYLAND + + 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 +} diff --git a/media-gfx/jp2a/jp2a-1.3.2.ebuild b/media-gfx/jp2a/jp2a-1.3.2.ebuild index c65f61e28671..3d4e919144ab 100644 --- a/media-gfx/jp2a/jp2a-1.3.2.ebuild +++ b/media-gfx/jp2a/jp2a-1.3.2.ebuild @@ -11,7 +11,7 @@ SRC_URI="https://github.com/Talinx/jp2a/releases/download/v${PV}/${P}.tar.bz2" LICENSE="GPL-2" SLOT="0" -KEYWORDS="~amd64 ~ppc ppc64 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris" +KEYWORDS="amd64 ppc ppc64 ~sparc x86 ~arm64-macos ~x64-macos ~x64-solaris" IUSE="curl" RDEPEND="media-libs/libexif diff --git a/media-gfx/metapixel/metapixel-1.0.2-r3.ebuild b/media-gfx/metapixel/metapixel-1.0.2-r3.ebuild index 34eb664d8696..136b7667913e 100644 --- a/media-gfx/metapixel/metapixel-1.0.2-r3.ebuild +++ b/media-gfx/metapixel/metapixel-1.0.2-r3.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2025 Gentoo Authors +# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -10,7 +10,7 @@ SRC_URI="https://www.complang.tuwien.ac.at/schani/${PN}/files/${P}.tar.gz" LICENSE="GPL-2" SLOT="0" -KEYWORDS="~amd64 ~x86" +KEYWORDS="amd64 x86" RDEPEND=" dev-lang/perl diff --git a/media-gfx/nomacs/nomacs-3.22.0.ebuild b/media-gfx/nomacs/nomacs-3.22.0.ebuild index 9e0b9bbd2a70..afce662ea319 100644 --- a/media-gfx/nomacs/nomacs-3.22.0.ebuild +++ b/media-gfx/nomacs/nomacs-3.22.0.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2025 Gentoo Authors +# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -16,7 +16,7 @@ LICENSE="GPL-3+" SLOT="0" if [[ ${PV} != *_rc* ]] ; then - KEYWORDS="~amd64 ~arm64 ~riscv ~x86" + KEYWORDS="amd64 ~arm64 ~riscv x86" fi IUSE="+opencv plugins raw +tiff test zip" diff --git a/media-gfx/orcaslicer-bin/orcaslicer-bin-2.4.2.ebuild b/media-gfx/orcaslicer-bin/orcaslicer-bin-2.4.2-r1.ebuild index 7ee9f55ce7ab..13b24d92543e 100644 --- a/media-gfx/orcaslicer-bin/orcaslicer-bin-2.4.2.ebuild +++ b/media-gfx/orcaslicer-bin/orcaslicer-bin-2.4.2-r1.ebuild @@ -88,6 +88,7 @@ src_install() { # Make binaries executable fperms +x /opt/${PN}/AppRun fperms +x /opt/${PN}/bin/orca-slicer + fperms +x /opt/${PN}/libexec/orca-slicer-env # Find and make all .so files executable find "${ED}/opt/${PN}" -name "*.so*" -exec chmod +x {} \; diff --git a/media-gfx/pngcheck/pngcheck-4.0.1.ebuild b/media-gfx/pngcheck/pngcheck-4.0.1.ebuild index 56ae05737ba7..a2a2f63648ab 100644 --- a/media-gfx/pngcheck/pngcheck-4.0.1.ebuild +++ b/media-gfx/pngcheck/pngcheck-4.0.1.ebuild @@ -11,7 +11,7 @@ SRC_URI="https://github.com/pnggroup/pngcheck/archive/v${PV}.tar.gz -> ${P}.tar. LICENSE="HPND GPL-2+" SLOT="0" -KEYWORDS="~amd64 x86" +KEYWORDS="amd64 x86" RDEPEND="virtual/zlib:=" DEPEND="${RDEPEND}" diff --git a/media-gfx/slic3r/Manifest b/media-gfx/slic3r/Manifest new file mode 100644 index 000000000000..1a6d2e82c5bf --- /dev/null +++ b/media-gfx/slic3r/Manifest @@ -0,0 +1 @@ +DIST slic3r-1.3.0.tar.gz 2104094 BLAKE2B 74c58690cf196f89ecff5eec853215c87c648df5a504725fea9f14b0343bca105190de1d63e2e8e76d47fcaf8dbe7b6d26f61b304ce7336412effa1c9a3fba41 SHA512 ff0f7747e166826ff1c53220974ee9d3a217d0e19964dbe4a5fa3e81f262a6810a47632686b7f1b3128384ae05c6f98d8aab980524079bdf9811445fe23a0f0d diff --git a/media-gfx/slic3r/files/admesh-vulnerability.patch b/media-gfx/slic3r/files/admesh-vulnerability.patch new file mode 100644 index 000000000000..1bd6efb63678 --- /dev/null +++ b/media-gfx/slic3r/files/admesh-vulnerability.patch @@ -0,0 +1,21 @@ +From 18d95adb01337e18d49e7c40355dd64df556b67d Mon Sep 17 00:00:00 2001 +From: pr-hung <bkedx0000@gmail.com> +Date: Wed, 11 Mar 2026 23:29:37 +0800 +Subject: [PATCH] Fix potential vulnerability in cloned code + (xs/src/admesh/normals.c) + +--- + +--- a/src/admesh/normals.c ++++ b/src/admesh/normals.c +@@ -142,7 +142,8 @@ stl_fix_normal_directions(stl_file *stl) { + } + } + /* If this edge of the facet is connected: */ +- if(stl->neighbors_start[facet_num].neighbor[j] != -1) { ++ if(stl->neighbors_start[facet_num].neighbor[j] != -1 && ++ stl->neighbors_start[facet_num].neighbor[j] < stl->stats.number_of_facets*sizeof(char)) { + /* If we haven't fixed this facet yet, add it to the list: */ + if(norm_sw[stl->neighbors_start[facet_num].neighbor[j]] != 1) { + /* Add node to beginning of list. */ + diff --git a/media-gfx/slic3r/files/boost-header.patch b/media-gfx/slic3r/files/boost-header.patch new file mode 100644 index 000000000000..85fee321e71d --- /dev/null +++ b/media-gfx/slic3r/files/boost-header.patch @@ -0,0 +1,42 @@ +From ce966c2450183dfc1c6415161463ea8d59dcccd5 Mon Sep 17 00:00:00 2001 +From: zdroyer <ec2-user@ip-172-31-13-62.us-east-2.compute.internal> +Date: Fri, 12 Apr 2019 12:47:34 +0000 +Subject: [PATCH] Removed unused header wchich generated tons of warnings with + boost 1.69 +--- + +--- a/src/admesh/stl.h ++++ b/src/admesh/stl.h +@@ -26,7 +26,6 @@ + #include <stdio.h> + #include <stdint.h> + #include <stddef.h> +-#include <boost/detail/endian.hpp> + + #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) + #include "windows.h" + +From a0f0616b43f50124164ed274c687cf98f532b3ce Mon Sep 17 00:00:00 2001 +From: Chow Loong Jin <hyperair@debian.org> +Date: Tue, 6 Nov 2018 01:10:33 +0800 +Subject: [PATCH] Drop #error "admesh works correctly on little endian machines + only" + +admesh works fine on little-endian machines as of b9592961. It just doesn't +compile because of this pesky #error. +--- + +--- a/src/admesh/stl.h ++++ b/src/admesh/stl.h +@@ -28,10 +28,6 @@ + #include <stddef.h> + #include <boost/detail/endian.hpp> + +-#ifndef BOOST_LITTLE_ENDIAN +-#error "admesh works correctly on little endian machines only!" +-#endif +- + #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) + #include "windows.h" + #define ADMESH_CHAR wchar_t + diff --git a/media-gfx/slic3r/files/boost-io-context-1.3.0.patch b/media-gfx/slic3r/files/boost-io-context-1.3.0.patch new file mode 100644 index 000000000000..7f27aba377d8 --- /dev/null +++ b/media-gfx/slic3r/files/boost-io-context-1.3.0.patch @@ -0,0 +1,83 @@ +From eff78b92512cfe89675f2efd768ddacb2e93ec62 Mon Sep 17 00:00:00 2001 +From: bakedsnake <bakedsnake@vagrantz.xyz> +Date: Mon, 24 Aug 2026 15:59:05 +0200 +Subject: [PATCH] Updates deprecated `asio::io_service` with `asio::io_context` + +Thought I would leave this here for documentation +purposes at least. This makes the latest version +able to build. ( latest commit ). +--- + +--- a/src/libslic3r/GCodeSender.cpp ++++ b/src/libslic3r/GCodeSender.cpp +@@ -35,7 +35,9 @@ struct termios2 { + speed_t c_ispeed; + speed_t c_ospeed; + }; ++#ifndef BOTHER + #define BOTHER CBAUDEX ++#endif + + #endif + +@@ -97,12 +99,12 @@ GCodeSender::connect(std::string devname, unsigned int baud_rate) + fs.open("serial.txt", std::fstream::out | std::fstream::trunc); + #endif + +- // this gives some work to the io_service before it is started ++ // this gives some work to the io_context before it is started + // (post() runs the supplied function in its thread) +- this->io.post(boost::bind(&GCodeSender::do_read, this)); ++ boost::asio::post(this->io, boost::bind(&GCodeSender::do_read, this)); + + // start reading in the background thread +- boost::thread t(boost::bind(&asio::io_service::run, &this->io)); ++ boost::thread t(boost::bind(&asio::io_context::run, &this->io)); + this->background_thread.swap(t); + + // always send a M105 to check for connection because firmware might be silent on connect +@@ -159,9 +161,8 @@ GCodeSender::disconnect() + if (!this->open) return; + this->open = false; + this->connected = false; +- this->io.post(boost::bind(&GCodeSender::do_close, this)); ++ boost::asio::post(this->io, boost::bind(&GCodeSender::do_close, this)); + this->background_thread.join(); +- this->io.reset(); + /* + if (this->error_status()) { + throw(boost::system::system_error(boost::system::error_code(), +@@ -444,7 +445,7 @@ GCodeSender::send(const std::string &line, bool priority) + void + GCodeSender::send() + { +- this->io.post(boost::bind(&GCodeSender::do_send, this)); ++ boost::asio::post(this->io, boost::bind(&GCodeSender::do_send, this)); + } + + void +--- a/src/libslic3r/GCodeSender.hpp ++++ b/src/libslic3r/GCodeSender.hpp +@@ -47,7 +47,7 @@ class GCodeSender : private boost::noncopyable { + void reset(); + + private: +- asio::io_service io; ++ asio::io_context io; + asio::serial_port serial; + boost::thread background_thread; + boost::asio::streambuf read_buffer, write_buffer; + +From: bakedsnake <bakedsnake@vagrantz.xyz> +Date: Mon, 24 Aug 2026 15:59:05 +0200 +Subject: [PATCH] add missing boost noncopyable +--- a/src/libslic3r/GCodeSender.hpp ++++ b/src/libslic3r/GCodeSender.hpp +@@ -8,6 +8,7 @@ + #include <vector> + #include <boost/asio.hpp> + #include <boost/bind.hpp> ++#include <boost/core/noncopyable.hpp> + #include <boost/thread.hpp> + + namespace Slic3r { diff --git a/media-gfx/slic3r/files/boost-io-context-9999.patch b/media-gfx/slic3r/files/boost-io-context-9999.patch new file mode 100644 index 000000000000..fcf8f760f59b --- /dev/null +++ b/media-gfx/slic3r/files/boost-io-context-9999.patch @@ -0,0 +1,70 @@ +From eff78b92512cfe89675f2efd768ddacb2e93ec62 Mon Sep 17 00:00:00 2001 +From: bakedsnake <bakedsnake@vagrantz.xyz> +Date: Mon, 24 Aug 2026 15:59:05 +0200 +Subject: [PATCH] Updates deprecated `asio::io_service` with `asio::io_context` + +Thought I would leave this here for documentation +purposes at least. This makes the latest version +able to build. ( latest commit ). +--- + +--- a/src/libslic3r/GCodeSender.cpp ++++ b/src/libslic3r/GCodeSender.cpp +@@ -35,7 +35,9 @@ struct termios2 { + speed_t c_ispeed; + speed_t c_ospeed; + }; ++#ifndef BOTHER + #define BOTHER CBAUDEX ++#endif + + #endif + +@@ -97,12 +99,12 @@ GCodeSender::connect(std::string devname, unsigned int baud_rate) + fs.open("serial.txt", std::fstream::out | std::fstream::trunc); + #endif + +- // this gives some work to the io_service before it is started ++ // this gives some work to the io_context before it is started + // (post() runs the supplied function in its thread) +- this->io.post(boost::bind(&GCodeSender::do_read, this)); ++ boost::asio::post(this->io, boost::bind(&GCodeSender::do_read, this)); + + // start reading in the background thread +- boost::thread t(boost::bind(&asio::io_service::run, &this->io)); ++ boost::thread t(boost::bind(&asio::io_context::run, &this->io)); + this->background_thread.swap(t); + + // always send a M105 to check for connection because firmware might be silent on connect +@@ -159,9 +161,8 @@ GCodeSender::disconnect() + if (!this->open) return; + this->open = false; + this->connected = false; +- this->io.post(boost::bind(&GCodeSender::do_close, this)); ++ boost::asio::post(this->io, boost::bind(&GCodeSender::do_close, this)); + this->background_thread.join(); +- this->io.reset(); + /* + if (this->error_status()) { + throw(boost::system::system_error(boost::system::error_code(), +@@ -444,7 +445,7 @@ GCodeSender::send(const std::string &line, bool priority) + void + GCodeSender::send() + { +- this->io.post(boost::bind(&GCodeSender::do_send, this)); ++ boost::asio::post(this->io, boost::bind(&GCodeSender::do_send, this)); + } + + void +--- a/src/libslic3r/GCodeSender.hpp ++++ b/src/libslic3r/GCodeSender.hpp +@@ -47,7 +47,7 @@ class GCodeSender : private boost::noncopyable { + void reset(); + + private: +- asio::io_service io; ++ asio::io_context io; + asio::serial_port serial; + boost::thread background_thread; + boost::asio::streambuf read_buffer, write_buffer; + diff --git a/media-gfx/slic3r/files/boost-placeholders.patch b/media-gfx/slic3r/files/boost-placeholders.patch new file mode 100644 index 000000000000..3ec2c8974f81 --- /dev/null +++ b/media-gfx/slic3r/files/boost-placeholders.patch @@ -0,0 +1,70 @@ +From d5084db14e7b4e75bf588fe063a5b9941c1cac31 Mon Sep 17 00:00:00 2001 +From: Jonathan Wakely <jwakely@redhat.com> +Date: Wed, 3 Jun 2020 01:05:39 +0200 +Subject: [PATCH 01/15] Make boost::Placeholders::_1 visible + +Fixes https://github.com/slic3r/Slic3r/issues/4967 +--- + +--- a/src/libslic3r/GCodeTimeEstimator.cpp ++++ b/src/libslic3r/GCodeTimeEstimator.cpp +@@ -1,9 +1,12 @@ + #include "GCodeTimeEstimator.hpp" +-#include <boost/bind.hpp> ++#include <boost/bind/bind.hpp> + #include <cmath> + + namespace Slic3r { + ++using boost::placeholders::_1; ++using boost::placeholders::_2; ++ + void + GCodeTimeEstimator::parse(const std::string &gcode) + { + +--- a/src/libslic3r/SLAPrint.cpp ++++ b/src/libslic3r/SLAPrint.cpp +@@ -7,9 +7,12 @@ + #include <iostream> + #include <complex> + #include <cstdio> ++#include <boost/bind/bind.hpp> + + namespace Slic3r { + ++using boost::placeholders::_1; ++ + void + SLAPrint::slice() + { +--- a/src/libslic3r/TriangleMesh.cpp ++++ b/src/libslic3r/TriangleMesh.cpp +@@ -15,6 +15,7 @@ + #include <stdexcept> + #include <boost/config.hpp> + #include <boost/nowide/convert.hpp> ++#include <boost/bind/bind.hpp> + + #ifdef SLIC3R_DEBUG + #include "SVG.hpp" +@@ -22,6 +23,8 @@ + + namespace Slic3r { + ++using boost::placeholders::_1; ++ + TriangleMesh::TriangleMesh() + : repaired(false) + { +--- a/src/libslic3r/PrintObject.cpp ++++ b/src/libslic3r/PrintObject.cpp +@@ -4,6 +4,9 @@ + #include "Geometry.hpp" + #include <algorithm> + #include <vector> ++#include <boost/bind/bind.hpp> ++ ++using boost::placeholders::_1; + + namespace Slic3r { diff --git a/media-gfx/slic3r/files/libexpat-cve-2024-45492.patch b/media-gfx/slic3r/files/libexpat-cve-2024-45492.patch new file mode 100644 index 000000000000..6002ff0a372b --- /dev/null +++ b/media-gfx/slic3r/files/libexpat-cve-2024-45492.patch @@ -0,0 +1,25 @@ +From d5d036e83c3893f38bf531f9340234a94bdd549d Mon Sep 17 00:00:00 2001 +From: KIMDONGYEON00 <dongyeonkim2000@gmail.com> +Date: Tue, 15 Jul 2025 01:48:01 +0900 +Subject: [PATCH] CVE-2024-45492 + +--- + +--- a/src/expat/xmlparse.c ++++ b/src/expat/xmlparse.c +@@ -6333,6 +6333,15 @@ nextScaffoldPart(XML_Parser parser) + int next; + + if (!dtd->scaffIndex) { ++ /* Detect and prevent integer overflow. ++ * The preprocessor guard addresses the "always false" warning ++ * from -Wtype-limits on platforms where ++ * sizeof(unsigned int) < sizeof(size_t), e.g. on x86_64. */ ++#if UINT_MAX >= SIZE_MAX ++ if (parser->m_groupSize > ((size_t)(-1) / sizeof(int))) { ++ return -1; ++ } ++#endif + dtd->scaffIndex = (int *)MALLOC(groupSize * sizeof(int)); + if (!dtd->scaffIndex) + return -1; diff --git a/media-gfx/slic3r/metadata.xml b/media-gfx/slic3r/metadata.xml new file mode 100644 index 000000000000..8fca00a8b6a7 --- /dev/null +++ b/media-gfx/slic3r/metadata.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>bakedsnake@vagrantz.xyz</email> + <name>bakedsnake</name> + </maintainer> + <use> + <flag name="gui">Build with GUI.</flag> + <flag name="xs">Build with XS only.</flag> + </use> + <origin>baldeagleos-repo</origin> +</pkgmetadata> diff --git a/media-gfx/slic3r/slic3r-1.3.0.ebuild b/media-gfx/slic3r/slic3r-1.3.0.ebuild new file mode 100644 index 000000000000..b22d714e5211 --- /dev/null +++ b/media-gfx/slic3r/slic3r-1.3.0.ebuild @@ -0,0 +1,125 @@ +# Copyright 2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit perl-module + +DESCRIPTION="Open Source toolpath generator for 3D printers" +HOMEPAGE="https://slic3r.org" +if [[ ${PV} == *9999* ]] ; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/slic3r/${PN}" + S="${WORKDIR}/slic3r-${PV}/xs" +else + SRC_URI="https://github.com/slic3r/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" + S="${WORKDIR}/Slic3r-${PV}/xs" +fi +LICENSE="AGPL-3" +SLOT="0" + +IUSE="gui xs test" + +RESTRICT="!test? ( test )" + +BDEPEND=" + dev-lang/perl:= + dev-perl/ExtUtils-CppGuess[${PERL_USEDEP}] + dev-perl/ExtUtils-Typemaps-Default[${PERL_USEDEP}] + dev-perl/ExtUtils-XSpp[${PERL_USEDEP}] + dev-perl/Module-Build[${PERL_USEDEP}] + dev-perl/Module-Build-WithXSpp[${PERL_USEDEP}] + dev-perl/Devel-CheckLib[${PERL_USEDEP}] + virtual/perl-ExtUtils-ParseXS +" + +RDEPEND=" + dev-cpp/tbb + dev-lang/perl:= + dev-libs/boost + dev-perl/Encode-Locale[${PERL_USEDEP}] + dev-perl/Moo[${PERL_USEDEP}] + gui-libs/gtk + media-libs/freeglut + net-misc/curl[openssl] + virtual/perl-Encode + virtual/perl-File-Spec + virtual/perl-Scalar-List-Utils + virtual/perl-Test-Simple + virtual/perl-threads + virtual/perl-Time-HiRes + virtual/perl-autodie + virtual/perl-parent + virtual/perl-IO-Compress + virtual/perl-Test-Harness + virtual/perl-Test-Simple + x11-libs/libXmu + x11-libs/wxGTK + gui? ( + >=dev-lang/perl-5.38.2-r3[perl_features_ithreads] + dev-perl/Alien-wxWidgets[${PERL_USEDEP}] + dev-perl/Class-Accessor[${PERL_USEDEP}] + dev-perl/Growl-GNTP[${PERL_USEDEP}] + dev-perl/libwww-perl[${PERL_USEDEP}] + dev-perl/Net-Bonjour[${PERL_USEDEP}] + dev-perl/OpenGL[${PERL_USEDEP}] + dev-perl/Wx[${PERL_USEDEP}] + dev-perl/Wx-GLCanvas[${PERL_USEDEP}] + virtual/perl-Socket + ) +" + +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}/admesh-vulnerability.patch" + "${FILESDIR}/boost-header.patch" + "${FILESDIR}/boost-io-context-${PV}.patch" + "${FILESDIR}/boost-placeholders.patch" + "${FILESDIR}/libexpat-cve-2024-45492.patch" +) + +src_prepare() { + default + # boost_system is now part of boost_thread + # since Boost 1.69 + sed -i 's/my @boost_libraries = qw(system thread filesystem);/my @boost_libraries = qw(thread filesystem);/' \ + Build.PL || die "Failed to remove `boost_system`" + + # No strict ansi + # See: https://github.com/slic3r/Slic3r/pull/4974 + sed -i "s/push @cflags, qw(-std=c++11);/push @cflags, qw(-std=gnu++11);/" \ + Build.PL || die "Failed to set gnu++11" +} + +src_compile() { + local myconf_str="" + if use gui; then + myconf_str+=" --gui" + fi + + if use xs; then + myconf_str+=" --xs" + fi + + local myconf="$myconf_str" + perl-module_src_compile +} + +src_install() { + perl-module_src_install + + cd .. || die + exeinto /usr/libexec/slic3r + doexe "slic3r.pl" || die + + insinto /usr/libexec/slic3r + doins -r "lib" "var" "share" || die + + exeinto /usr/bin + newexe - slic3r <<-EOF || die + #!/bin/sh + exec /usr/bin/perl -I/usr/libexec/slic3r/lib /usr/libexec/slic3r/slic3r.pl "\$@" + EOF +} diff --git a/media-gfx/slic3r/slic3r-9999.ebuild b/media-gfx/slic3r/slic3r-9999.ebuild new file mode 100644 index 000000000000..d30e199f92cb --- /dev/null +++ b/media-gfx/slic3r/slic3r-9999.ebuild @@ -0,0 +1,118 @@ +# Copyright 2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit perl-module + +DESCRIPTION="Open Source toolpath generator for 3D printers" +HOMEPAGE="https://slic3r.org" +if [[ ${PV} == *9999* ]] ; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/slic3r/${PN}" + S="${WORKDIR}/slic3r-${PV}/xs" +else + SRC_URI="https://github.com/slic3r/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" + S="${WORKDIR}/Slic3r-${PV}/xs" +fi +LICENSE="AGPL-3" +SLOT="0" + +IUSE="gui xs test" + +RESTRICT="!test? ( test )" + +BDEPEND=" + dev-lang/perl:= + dev-perl/ExtUtils-CppGuess[${PERL_USEDEP}] + dev-perl/ExtUtils-Typemaps-Default[${PERL_USEDEP}] + dev-perl/ExtUtils-XSpp[${PERL_USEDEP}] + dev-perl/Module-Build[${PERL_USEDEP}] + dev-perl/Module-Build-WithXSpp[${PERL_USEDEP}] + dev-perl/Devel-CheckLib[${PERL_USEDEP}] + virtual/perl-ExtUtils-ParseXS +" + +RDEPEND=" + dev-cpp/tbb + dev-lang/perl:= + dev-libs/boost + dev-perl/Encode-Locale[${PERL_USEDEP}] + dev-perl/Moo[${PERL_USEDEP}] + gui-libs/gtk + media-libs/freeglut + net-misc/curl[openssl] + virtual/perl-Encode + virtual/perl-File-Spec + virtual/perl-Scalar-List-Utils + virtual/perl-Test-Simple + virtual/perl-threads + virtual/perl-Time-HiRes + virtual/perl-autodie + virtual/perl-parent + virtual/perl-IO-Compress + virtual/perl-Test-Harness + virtual/perl-Test-Simple + x11-libs/libXmu + x11-libs/wxGTK + gui? ( + >=dev-lang/perl-5.38.2-r3[perl_features_ithreads] + dev-perl/Alien-wxWidgets[${PERL_USEDEP}] + dev-perl/Class-Accessor[${PERL_USEDEP}] + dev-perl/Growl-GNTP[${PERL_USEDEP}] + dev-perl/libwww-perl[${PERL_USEDEP}] + dev-perl/Net-Bonjour[${PERL_USEDEP}] + dev-perl/OpenGL[${PERL_USEDEP}] + dev-perl/Wx[${PERL_USEDEP}] + dev-perl/Wx-GLCanvas[${PERL_USEDEP}] + virtual/perl-Socket + ) +" + +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}/admesh-vulnerability.patch" + "${FILESDIR}/boost-io-context-${PV}.patch" + "${FILESDIR}/libexpat-cve-2024-45492.patch" +) + +src_prepare() { + default + # boost_system is now part of boost_thread + # since Boost 1.69 + sed -i 's/my @boost_libraries = qw(system thread filesystem);/my @boost_libraries = qw(thread filesystem);/' \ + Build.PL || die "Failed to remove `boost_system`" +} + +src_compile() { + local myconf_str="" + if use gui; then + myconf_str+=" --gui" + fi + + if use xs; then + myconf_str+=" --xs" + fi + + local myconf="$myconf_str" + perl-module_src_compile +} + +src_install() { + perl-module_src_install + + cd .. || die + exeinto /usr/libexec/slic3r + doexe "slic3r.pl" || die + + insinto /usr/libexec/slic3r + doins -r "lib" "var" "share" || die + + exeinto /usr/bin + newexe - slic3r <<-EOF || die + #!/bin/sh + exec /usr/bin/perl -I/usr/libexec/slic3r/lib /usr/libexec/slic3r/slic3r.pl "\$@" + EOF +} diff --git a/media-gfx/valentina/Manifest b/media-gfx/valentina/Manifest index b0b11fb4c464..318ea3af7a76 100644 --- a/media-gfx/valentina/Manifest +++ b/media-gfx/valentina/Manifest @@ -1,2 +1,4 @@ DIST valentina-v1.0.4.tar.bz2 64512148 BLAKE2B 09d22dab3a827b411e119e42609a4e0254ade6b8a91e09aebb0b905578e361b1322f5fab3831ca99494081533dc48cfb3105505f0b5a5ddc817283ecbecaaeb4 SHA512 8a0ab9aa77cea1d019673f42c979121bf20df68221d05f73043012f252e656e2edfd78b00de0d98f32fa232ab9f90ad34a097e522cb548bd46e54e35730a3cf9 +DIST valentina-v1.0.5.tar.bz2 51258167 BLAKE2B d678895d0ed252203f052d2c6a64bd541cc9e9bb25ee8ed7d6baa91cbfe355156fd1164f2be47230b243aff7ddf79d9cad83a943087fcb3931eb87249de8b277 SHA512 190785ed3b1598e2c881ece5c355b7afd61c398930fc1d1ac2af41f184904694b6dca79ba5ec4cfce85c68a337454a1a10de52f4887696e95135d98f575e7dff DIST valentina-v1.1.0.tar.bz2 65301814 BLAKE2B 3d9f42dd8674d6c9d98e968a0ba5ae275fb8e222c0dfacc169d4a6ea0e39c1a2538a2872c728df400aac25b1bb10f22fd7c771ca9a17215d8e94df18a1a8668c SHA512 af776d993690107545f9f57ea17a3e451f066e19ef01ff0cd6ad1d94b0370afb8f9a1911dc8540f6216e65fa7e93a8f05fff91c47d1343a9bdaf446f56506965 +DIST valentina-v1.1.1.tar.bz2 52050184 BLAKE2B 26112de2b741fcd8256579de92e765699828404313aa7eded9055de40f88db60c135b874a51566b4a9369fcfa82ad4c0d930b78c2ff48439764e24fe62099a46 SHA512 a07c7e0f148992db3d09da5a4e3df845fe695a31c41b31c0110ad257a86501004796152dbd823d8bb8657fe46c747d6f1037cbcfabef71f6b8de570edf167bc8 diff --git a/media-gfx/valentina/valentina-1.0.5.ebuild b/media-gfx/valentina/valentina-1.0.5.ebuild new file mode 100644 index 000000000000..700d873dfcea --- /dev/null +++ b/media-gfx/valentina/valentina-1.0.5.ebuild @@ -0,0 +1,134 @@ +# Copyright 2025-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit edo flag-o-matic multiprocessing optfeature qt-utils toolchain-funcs xdg + +DESCRIPTION="Cloth patternmaking software" +HOMEPAGE="https://smart-pattern.com.ua/" +SRC_URI="https://gitlab.com/smart-pattern/${PN}/-/archive/v${PV}/${PN}-v${PV}.tar.bz2" +S="${WORKDIR}/${PN}-v${PV}" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="test" +RESTRICT="!test? ( test )" + +DEPEND=" + dev-libs/xerces-c:= + dev-qt/qtbase:6[concurrent,gui,network,opengl,ssl,widgets,xml] + dev-qt/qtsvg:6 + !sci-biology/tree-puzzle +" +RDEPEND="${DEPEND}" +BDEPEND=" + dev-build/meson-format-array + dev-qt/qttools:6[linguist] + dev-util/qbs +" + +qbs_format_flags() { + meson-format-array "${@}" || die +} + +qbs_config() { + debug-print-function ${FUNCNAME} "${@}" + + (( $# == 2 )) || \ + die "${FUNCNAME} takes exactly two arguments" + + local key=${1} + local value=${2} + + edo qbs config "profiles.gentoo.${key}" "${value}" +} + +src_configure() { + # setup the toolchain in a profile 'mytoolchain' + edo qbs setup-toolchains "$(tc-getCC)" mytoolchain + + # create a profile 'gentoo' with 'mytoolchain' inherited + edo qbs setup-qt "$(qt_get_broot_binary 6 qmake)" gentoo + qbs_config baseProfile mytoolchain + + # define paths for toolchain + qbs_config archiverPath "$(tc-getAR)" + qbs_config assemblerPath "$(tc-getAS)" + qbs_config linkerPath "$(tc-getCC)" + qbs_config nmPath "$(tc-getNM)" + qbs_config objcopyPath "$(tc-getOBJCOPY)" + qbs_config stripPath "$(tc-getSTRIP)" + + # define global options + qbs_config qbs.installPrefix "${EPREFIX}/usr" + qbs_config qbs.sysroot "${ESYSROOT}" + + # define system flags + qbs_config cpp.cppFlags "$(qbs_format_flags ${CPPFLAGS})" + qbs_config cpp.cxxFlags "$(qbs_format_flags ${CXXFLAGS})" + qbs_config cpp.linkerFlags "$(qbs_format_flags $(raw-ldflags))" + qbs_config qbs.optimization "" + + # define package options + local my_opts=( + enableCcache:false + enablePCH:false + enableUnitTests:$(usex test true false) + enableRPath:false + installLibraryPath:"$(get_libdir)" + libDirName:"$(get_libdir)" + treatWarningsAsErrors:false + ) + + # used by all phases + qbsargs=( + --file ${PN}.qbs + config:release + profile:gentoo + ${my_opts[@]/#/modules.buildconfig.} + ) + + # export now for src_test + local -x LD_LIBRARY_PATH+=":${S}/release/install-root${EPREFIX}/usr/$(get_libdir)/" + local -x QT_QPA_PLATFORM=offscreen + + edo qbs resolve "${qbsargs[@]}" --force-probe-execution + + # verbose build/install phase + qbsargs+=( + --command-echo-mode command-line + ) +} + +src_compile() { + edo qbs build "${qbsargs[@]}" --jobs $(get_makeopts_jobs) --no-install +} + +src_test() { + edo qbs -p autotest-runner profile:gentoo config:release +} + +src_install() { + edo qbs install "${qbsargs[@]}" --no-build --install-root "${D}" + + if use test; then + rm "${ED}"/usr/bin/*Test.debug || die + fi + + insinto /usr/share/${PN} + doins -r "${S}"/src/app/share/{collection,tables} + + dodoc AUTHORS.txt ChangeLog.txt README.md + + doman dist/debian/${PN}.1 + doman dist/debian/puzzle.1 + doman dist/debian/tape.1 +} + +pkg_postinst() { + xdg_pkg_postinst + + optfeature "PDF to PS conversion" app-text/poppler[utils] +} diff --git a/media-gfx/valentina/valentina-1.1.1.ebuild b/media-gfx/valentina/valentina-1.1.1.ebuild new file mode 100644 index 000000000000..8326c8a411ba --- /dev/null +++ b/media-gfx/valentina/valentina-1.1.1.ebuild @@ -0,0 +1,138 @@ +# Copyright 2025-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit edo flag-o-matic multiprocessing optfeature qt-utils toolchain-funcs xdg + +DESCRIPTION="Cloth patternmaking software" +HOMEPAGE="https://smart-pattern.com.ua/" +SRC_URI="https://gitlab.com/smart-pattern/${PN}/-/archive/v${PV}/${PN}-v${PV}.tar.bz2" +S="${WORKDIR}/${PN}-v${PV}" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="test" +RESTRICT="!test? ( test )" + +CDEPEND=" + dev-libs/xerces-c:= + dev-qt/qtbase:6[concurrent,gui,network,opengl,ssl,widgets,xml] + dev-qt/qtsvg:6 + !sci-biology/tree-puzzle +" +DEPEND=" + ${CDEPEND} + dev-libs/immer +" +RDEPEND="${CDEPEND}" +BDEPEND=" + dev-build/meson-format-array + dev-qt/qttools:6[linguist] + dev-util/qbs +" + +qbs_format_flags() { + meson-format-array "${@}" || die +} + +qbs_config() { + debug-print-function ${FUNCNAME} "${@}" + + (( $# == 2 )) || \ + die "${FUNCNAME} takes exactly two arguments" + + local key=${1} + local value=${2} + + edo qbs config "profiles.gentoo.${key}" "${value}" +} + +src_configure() { + # setup the toolchain in a profile 'mytoolchain' + edo qbs setup-toolchains "$(tc-getCC)" mytoolchain + + # create a profile 'gentoo' with 'mytoolchain' inherited + edo qbs setup-qt "$(qt_get_broot_binary 6 qmake)" gentoo + qbs_config baseProfile mytoolchain + + # define paths for toolchain + qbs_config archiverPath "$(tc-getAR)" + qbs_config assemblerPath "$(tc-getAS)" + qbs_config linkerPath "$(tc-getCC)" + qbs_config nmPath "$(tc-getNM)" + qbs_config objcopyPath "$(tc-getOBJCOPY)" + qbs_config stripPath "$(tc-getSTRIP)" + + # define global options + qbs_config qbs.installPrefix "${EPREFIX}/usr" + qbs_config qbs.sysroot "${ESYSROOT}" + + # define system flags + qbs_config cpp.cppFlags "$(qbs_format_flags ${CPPFLAGS})" + qbs_config cpp.cxxFlags "$(qbs_format_flags ${CXXFLAGS})" + qbs_config cpp.linkerFlags "$(qbs_format_flags $(raw-ldflags))" + qbs_config qbs.optimization "" + + # define package options + local my_opts=( + enableCcache:false + enablePCH:false + enableUnitTests:$(usex test true false) + enableRPath:false + installLibraryPath:"$(get_libdir)" + libDirName:"$(get_libdir)" + treatWarningsAsErrors:false + ) + + # used by all phases + qbsargs=( + --file ${PN}.qbs + config:release + profile:gentoo + ${my_opts[@]/#/modules.buildconfig.} + ) + + # export now for src_test + local -x LD_LIBRARY_PATH+=":${S}/release/install-root${EPREFIX}/usr/$(get_libdir)/" + local -x QT_QPA_PLATFORM=offscreen + + edo qbs resolve "${qbsargs[@]}" --force-probe-execution + + # verbose build/install phase + qbsargs+=( + --command-echo-mode command-line + ) +} + +src_compile() { + edo qbs build "${qbsargs[@]}" --jobs $(get_makeopts_jobs) --no-install +} + +src_test() { + edo qbs -p autotest-runner profile:gentoo config:release +} + +src_install() { + edo qbs install "${qbsargs[@]}" --no-build --install-root "${D}" + + if use test; then + rm "${ED}"/usr/bin/*Test.debug || die + fi + + insinto /usr/share/${PN} + doins -r "${S}"/src/app/share/{collection,tables} + + dodoc AUTHORS.txt ChangeLog.txt README.md + + doman dist/debian/${PN}.1 + doman dist/debian/puzzle.1 + doman dist/debian/tape.1 +} + +pkg_postinst() { + xdg_pkg_postinst + + optfeature "PDF to PS conversion" app-text/poppler[utils] +} diff --git a/media-gfx/viewnior/viewnior-1.8_p20210825.ebuild b/media-gfx/viewnior/viewnior-1.8_p20210825.ebuild index a26070aba491..2641f3b7a112 100644 --- a/media-gfx/viewnior/viewnior-1.8_p20210825.ebuild +++ b/media-gfx/viewnior/viewnior-1.8_p20210825.ebuild @@ -13,7 +13,7 @@ S="${WORKDIR}/Viewnior-${COMMIT}" LICENSE="GPL-3" SLOT="0" -KEYWORDS="amd64 ~arm64 ~riscv ~x86" +KEYWORDS="amd64 ~arm64 ~riscv x86" RDEPEND=" dev-libs/glib:2 diff --git a/media-gfx/wings/wings-2.4.1.ebuild b/media-gfx/wings/wings-2.4.1.ebuild index 9a0bf662bf26..96fd376cee0b 100644 --- a/media-gfx/wings/wings-2.4.1.ebuild +++ b/media-gfx/wings/wings-2.4.1.ebuild @@ -10,7 +10,7 @@ SRC_URI="https://downloads.sourceforge.net/wings/${P}.tar.bz2" LICENSE="BSD" SLOT="0" -KEYWORDS="amd64 ~x86" +KEYWORDS="amd64 x86" # Run failed with dev-lang/erlang in the range [28, 28.3), see bug 964737 RDEPEND=" |
