Compare commits
9 Commits
| Author | SHA256 | Date | |
|---|---|---|---|
| 7cd3b815bb | |||
|
|
fd834eab47 | ||
| 3565d8ec7c | |||
|
|
ac63ff5557 | ||
|
|
766843a47e | ||
|
|
c2d6c0681b | ||
| 4452942176 | |||
|
|
e48efd355e | ||
|
|
5227a82aa8 |
@@ -1,144 +0,0 @@
|
||||
From 169339accb9e4e0e0e9921176c5cd60d340b7b04 Mon Sep 17 00:00:00 2001
|
||||
From: Halla Rempt <halla@valdyas.org>
|
||||
Date: Thu, 10 Jul 2025 10:08:24 +0200
|
||||
Subject: [PATCH] Fix build with libheif 1.20
|
||||
|
||||
https://github.com/strukturag/libheif/issues/1419 introduced a
|
||||
source incompatible api change, this patch by Brad Smith make
|
||||
Krita build with 1.20. I've also checked with 1.15.2, which we
|
||||
use and it still builds.
|
||||
|
||||
BUG:506778
|
||||
(cherry picked from commit 6ad4fa68a9e1ce06fc884e34f3cedcdd4b9a2076)
|
||||
---
|
||||
plugins/impex/heif/HeifExport.cpp | 24 +++++++++++++++---------
|
||||
plugins/impex/heif/HeifImport.cpp | 22 ++++++++++++++--------
|
||||
2 files changed, 29 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/plugins/impex/heif/HeifExport.cpp b/plugins/impex/heif/HeifExport.cpp
|
||||
index 3e70cf925e..ccbc8034b5 100644
|
||||
--- a/plugins/impex/heif/HeifExport.cpp
|
||||
+++ b/plugins/impex/heif/HeifExport.cpp
|
||||
@@ -137,6 +137,12 @@ KisImportExportErrorCode HeifExport::convert(KisDocument *document, QIODevice *i
|
||||
HeifLock lock;
|
||||
#endif
|
||||
|
||||
+#if LIBHEIF_HAVE_VERSION(1, 20, 0)
|
||||
+ using HeifStrideType = size_t;
|
||||
+#else
|
||||
+ using HeifStrideType = int;
|
||||
+#endif
|
||||
+
|
||||
KisImageSP image = document->savingImage();
|
||||
const KoColorSpace *cs = image->colorSpace();
|
||||
|
||||
@@ -250,10 +256,10 @@ KisImportExportErrorCode HeifExport::convert(KisDocument *document, QIODevice *i
|
||||
img.add_plane(heif_channel_G, width,height, 8);
|
||||
img.add_plane(heif_channel_B, width,height, 8);
|
||||
|
||||
- int strideR = 0;
|
||||
- int strideG = 0;
|
||||
- int strideB = 0;
|
||||
- int strideA = 0;
|
||||
+ HeifStrideType strideR = 0;
|
||||
+ HeifStrideType strideG = 0;
|
||||
+ HeifStrideType strideB = 0;
|
||||
+ HeifStrideType strideA = 0;
|
||||
|
||||
uint8_t *ptrR = img.get_plane(heif_channel_R, &strideR);
|
||||
uint8_t *ptrG = img.get_plane(heif_channel_G, &strideG);
|
||||
@@ -289,7 +295,7 @@ KisImportExportErrorCode HeifExport::convert(KisDocument *document, QIODevice *i
|
||||
img.create(width, height, heif_colorspace_RGB, chroma);
|
||||
img.add_plane(heif_channel_interleaved, width, height, 12);
|
||||
|
||||
- int stride = 0;
|
||||
+ HeifStrideType stride = 0;
|
||||
|
||||
uint8_t *ptr = img.get_plane(heif_channel_interleaved, &stride);
|
||||
|
||||
@@ -330,8 +336,8 @@ KisImportExportErrorCode HeifExport::convert(KisDocument *document, QIODevice *i
|
||||
|
||||
img.add_plane(heif_channel_Y, width, height, 8);
|
||||
|
||||
- int strideG = 0;
|
||||
- int strideA = 0;
|
||||
+ HeifStrideType strideG = 0;
|
||||
+ HeifStrideType strideA = 0;
|
||||
|
||||
uint8_t *ptrG = img.get_plane(heif_channel_Y, &strideG);
|
||||
uint8_t *ptrA = [&]() -> uint8_t * {
|
||||
@@ -363,8 +369,8 @@ KisImportExportErrorCode HeifExport::convert(KisDocument *document, QIODevice *i
|
||||
|
||||
img.add_plane(heif_channel_Y, width, height, 12);
|
||||
|
||||
- int strideG = 0;
|
||||
- int strideA = 0;
|
||||
+ HeifStrideType strideG = 0;
|
||||
+ HeifStrideType strideA = 0;
|
||||
|
||||
uint8_t *ptrG = img.get_plane(heif_channel_Y, &strideG);
|
||||
uint8_t *ptrA = [&]() -> uint8_t * {
|
||||
diff --git a/plugins/impex/heif/HeifImport.cpp b/plugins/impex/heif/HeifImport.cpp
|
||||
index 3c1a52cc28..6bceea85eb 100644
|
||||
--- a/plugins/impex/heif/HeifImport.cpp
|
||||
+++ b/plugins/impex/heif/HeifImport.cpp
|
||||
@@ -214,6 +214,12 @@ KisImportExportErrorCode HeifImport::convert(KisDocument *document, QIODevice *i
|
||||
HeifLock lock;
|
||||
#endif
|
||||
|
||||
+#if LIBHEIF_HAVE_VERSION(1, 20, 0)
|
||||
+ using HeifStrideType = size_t;
|
||||
+#else
|
||||
+ using HeifStrideType = int;
|
||||
+#endif
|
||||
+
|
||||
// Wrap input stream into heif Reader object
|
||||
Reader_QIODevice reader(io);
|
||||
|
||||
@@ -387,8 +393,8 @@ KisImportExportErrorCode HeifImport::convert(KisDocument *document, QIODevice *i
|
||||
|
||||
if (heifChroma == heif_chroma_monochrome) {
|
||||
dbgFile << "monochrome heif file, bits:" << luma;
|
||||
- int strideG = 0;
|
||||
- int strideA = 0;
|
||||
+ HeifStrideType strideG = 0;
|
||||
+ HeifStrideType strideA = 0;
|
||||
const uint8_t *imgG = heifimage.get_plane(heif_channel_Y, &strideG);
|
||||
const uint8_t *imgA =
|
||||
heifimage.get_plane(heif_channel_Alpha, &strideA);
|
||||
@@ -409,10 +415,10 @@ KisImportExportErrorCode HeifImport::convert(KisDocument *document, QIODevice *i
|
||||
} else if (heifChroma == heif_chroma_444) {
|
||||
dbgFile << "planar heif file, bits:" << luma;
|
||||
|
||||
- int strideR = 0;
|
||||
- int strideG = 0;
|
||||
- int strideB = 0;
|
||||
- int strideA = 0;
|
||||
+ HeifStrideType strideR = 0;
|
||||
+ HeifStrideType strideG = 0;
|
||||
+ HeifStrideType strideB = 0;
|
||||
+ HeifStrideType strideA = 0;
|
||||
const uint8_t* imgR = heifimage.get_plane(heif_channel_R, &strideR);
|
||||
const uint8_t* imgG = heifimage.get_plane(heif_channel_G, &strideG);
|
||||
const uint8_t* imgB = heifimage.get_plane(heif_channel_B, &strideB);
|
||||
@@ -439,7 +445,7 @@ KisImportExportErrorCode HeifImport::convert(KisDocument *document, QIODevice *i
|
||||
displayNits,
|
||||
colorSpace);
|
||||
} else if (heifChroma == heif_chroma_interleaved_RGB || heifChroma == heif_chroma_interleaved_RGBA) {
|
||||
- int stride = 0;
|
||||
+ HeifStrideType stride = 0;
|
||||
dbgFile << "interleaved SDR heif file, bits:" << luma;
|
||||
|
||||
const uint8_t *img = heifimage.get_plane(heif_channel_interleaved, &stride);
|
||||
@@ -461,7 +467,7 @@ KisImportExportErrorCode HeifImport::convert(KisDocument *document, QIODevice *i
|
||||
colorSpace);
|
||||
|
||||
} else if (heifChroma == heif_chroma_interleaved_RRGGBB_LE || heifChroma == heif_chroma_interleaved_RRGGBBAA_LE || heifChroma == heif_chroma_interleaved_RRGGBB_BE || heifChroma == heif_chroma_interleaved_RRGGBB_BE) {
|
||||
- int stride = 0;
|
||||
+ HeifStrideType stride = 0;
|
||||
dbgFile << "interleaved HDR heif file, bits:" << luma;
|
||||
|
||||
const uint8_t *img =
|
||||
--
|
||||
2.50.0
|
||||
|
||||
@@ -1,132 +0,0 @@
|
||||
From 5d44af277b005692241a09f30e11bb0d16166823 Mon Sep 17 00:00:00 2001
|
||||
From: Freya Lupen <penguinflyer2222@gmail.com>
|
||||
Date: Thu, 25 Jul 2024 08:37:45 -0500
|
||||
Subject: [PATCH] Fix Python invalid escape sequence warnings
|
||||
|
||||
If Python finds a string with an invalid backslash escape such as '\*',
|
||||
it will throw a Syntax or Deprecation warning. In the future this will
|
||||
become an error. The fix is to use a raw string r'\*' instead, which
|
||||
won't attempt to interpolate the escape sequences in the regexes.
|
||||
|
||||
BUG:489526
|
||||
---
|
||||
.../comics_project_management_tools/comics_exporter.py | 6 +++---
|
||||
.../exporters/CPMT_ACBF_XML_Exporter.py | 4 ++--
|
||||
.../exporters/CPMT_po_parser.py | 8 ++++----
|
||||
.../python/scripter/ui_scripter/editor/pythoneditor.py | 2 +-
|
||||
plugins/python/scripter/ui_scripter/syntax/syntax.py | 8 ++++----
|
||||
5 files changed, 14 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/plugins/python/comics_project_management_tools/comics_exporter.py b/plugins/python/comics_project_management_tools/comics_exporter.py
|
||||
index 73fe21bcbe3..6cb3f2a095f 100644
|
||||
--- a/plugins/python/comics_project_management_tools/comics_exporter.py
|
||||
+++ b/plugins/python/comics_project_management_tools/comics_exporter.py
|
||||
@@ -420,7 +420,7 @@ class comicsExporter():
|
||||
def handleShapeDescription(self, shape, list, textOnly=False):
|
||||
return
|
||||
# Turn off shape retrieval for now until the new text tool is finished.
|
||||
- """
|
||||
+ r"""
|
||||
if (shape.type() != "KoSvgTextShapeID" and textOnly is True):
|
||||
return
|
||||
shapeDesc = {}
|
||||
@@ -429,7 +429,7 @@ class comicsExporter():
|
||||
listOfPoints = [rect.topLeft(), rect.topRight(), rect.bottomRight(), rect.bottomLeft()]
|
||||
shapeDoc = minidom.parseString(shape.toSvg())
|
||||
docElem = shapeDoc.documentElement
|
||||
- svgRegExp = re.compile('[MLCSQHVATmlzcqshva]\d+\.?\d* \d+\.?\d*')
|
||||
+ svgRegExp = re.compile(r'[MLCSQHVATmlzcqshva]\d+\.?\d* \d+\.?\d*')
|
||||
transform = docElem.getAttribute("transform")
|
||||
coord = []
|
||||
adjust = QTransform()
|
||||
@@ -539,7 +539,7 @@ class comicsExporter():
|
||||
fontsize = int(size)
|
||||
font = QFont(family, fontsize)
|
||||
string = el.toxml()
|
||||
- string = re.sub("\<.*?\>", " ", string)
|
||||
+ string = re.sub(r"\<.*?\>", " ", string)
|
||||
string = string.replace(" ", " ")
|
||||
width = min(QFontMetrics(font).width(string.strip()), rect.width())
|
||||
height = QFontMetrics(font).height()
|
||||
diff --git a/plugins/python/comics_project_management_tools/exporters/CPMT_ACBF_XML_Exporter.py b/plugins/python/comics_project_management_tools/exporters/CPMT_ACBF_XML_Exporter.py
|
||||
index 985b83b6409..386f39bd384 100644
|
||||
--- a/plugins/python/comics_project_management_tools/exporters/CPMT_ACBF_XML_Exporter.py
|
||||
+++ b/plugins/python/comics_project_management_tools/exporters/CPMT_ACBF_XML_Exporter.py
|
||||
@@ -507,8 +507,8 @@ def write_xml(configDictionary = {}, pageData = [], pagesLocationList = [], loc
|
||||
figureOut = figure_out_type(svg.documentElement())
|
||||
type = figureOut[0]
|
||||
inverted = figureOut[1]
|
||||
- string = re.sub("\<\/*?text.*?\>",'', str(v["text"]))
|
||||
- string = re.sub("\s+?", " ", string)
|
||||
+ string = re.sub(r"\<\/*?text.*?\>",'', str(v["text"]))
|
||||
+ string = re.sub(r"\s+?", " ", string)
|
||||
translationEntry = poParser.get_entry_for_key(string, lang)
|
||||
string = translationEntry.get("trans", string)
|
||||
svg.setContent("<text>"+string+"</text>")
|
||||
diff --git a/plugins/python/comics_project_management_tools/exporters/CPMT_po_parser.py b/plugins/python/comics_project_management_tools/exporters/CPMT_po_parser.py
|
||||
index 3d35218d27e..73a1227443a 100644
|
||||
--- a/plugins/python/comics_project_management_tools/exporters/CPMT_po_parser.py
|
||||
+++ b/plugins/python/comics_project_management_tools/exporters/CPMT_po_parser.py
|
||||
@@ -46,8 +46,8 @@ class po_file_parser():
|
||||
key = ""
|
||||
if self.key_xml:
|
||||
text = entry.get("text", "")
|
||||
- text = re.sub("\<.*?\>", " ", text)
|
||||
- key += str(re.sub("\s+", " ", text)).strip()
|
||||
+ text = re.sub(r"\<.*?\>", " ", text)
|
||||
+ key += str(re.sub(r"\s+", " ", text)).strip()
|
||||
else:
|
||||
key += entry.get("text", None)
|
||||
if key is not None:
|
||||
@@ -111,8 +111,8 @@ class po_file_parser():
|
||||
entry = {}
|
||||
entry["trans"] = " "
|
||||
if self.key_xml:
|
||||
- key = re.sub("\<.*?\>", " ", key)
|
||||
- key = re.sub("\s+", " ", key)
|
||||
+ key = re.sub(r"\<.*?\>", " ", key)
|
||||
+ key = re.sub(r"\s+", " ", key)
|
||||
key = key.strip()
|
||||
if key in self.translationDict.keys():
|
||||
translations = {}
|
||||
diff --git a/plugins/python/scripter/ui_scripter/editor/pythoneditor.py b/plugins/python/scripter/ui_scripter/editor/pythoneditor.py
|
||||
index 76572ab1e3c..da3efbc89c1 100644
|
||||
--- a/plugins/python/scripter/ui_scripter/editor/pythoneditor.py
|
||||
+++ b/plugins/python/scripter/ui_scripter/editor/pythoneditor.py
|
||||
@@ -271,7 +271,7 @@ class CodeEditor(QPlainTextEdit):
|
||||
self.dedentBlock(blockNumber)
|
||||
|
||||
def autoindent(self):
|
||||
- """The return key has just been pressed (and processed by the editor)
|
||||
+ r"""The return key has just been pressed (and processed by the editor)
|
||||
now insert leading spaces to reflect an appropriate indent level
|
||||
against the previous line.
|
||||
This will depend on the end of the previous line. If it ends:
|
||||
diff --git a/plugins/python/scripter/ui_scripter/syntax/syntax.py b/plugins/python/scripter/ui_scripter/syntax/syntax.py
|
||||
index abc7903b3cb..b0d3088e038 100644
|
||||
--- a/plugins/python/scripter/ui_scripter/syntax/syntax.py
|
||||
+++ b/plugins/python/scripter/ui_scripter/syntax/syntax.py
|
||||
@@ -30,16 +30,16 @@ class PythonHighlighter (QSyntaxHighlighter):
|
||||
# Comparison
|
||||
'==', '!=', '<', '<=', '>', '>=',
|
||||
# Arithmetic
|
||||
- '\+', '-', '\*', '/', '//', '\%', '\*\*',
|
||||
+ r'\+', '-', r'\*', '/', '//', r'\%', r'\*\*',
|
||||
# In-place
|
||||
- '\+=', '-=', '\*=', '/=', '\%=',
|
||||
+ r'\+=', '-=', r'\*=', '/=', r'\%=',
|
||||
# Bitwise
|
||||
- '\^', '\|', '\&', '\~', '>>', '<<',
|
||||
+ r'\^', r'\|', r'\&', r'\~', '>>', '<<',
|
||||
]
|
||||
|
||||
# Python braces
|
||||
braces = [
|
||||
- '\{', '\}', '\(', '\)', '\[', '\]',
|
||||
+ r'\{', r'\}', r'\(', r'\)', r'\[', r'\]',
|
||||
]
|
||||
|
||||
def __init__(self, document, syntaxStyle):
|
||||
--
|
||||
GitLab
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:00db535f09a1f842af0f6dac6288fd01769b9f132faea33a08c10835739c5407
|
||||
size 190972756
|
||||
Binary file not shown.
3
krita-5.2.14.tar.xz
Normal file
3
krita-5.2.14.tar.xz
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:41770910517a8d4546f7028c4725b3bd44c69d10d328c978a2788dbcc707d3df
|
||||
size 192461664
|
||||
BIN
krita-5.2.14.tar.xz.sig
Normal file
BIN
krita-5.2.14.tar.xz.sig
Normal file
Binary file not shown.
@@ -1,3 +1,33 @@
|
||||
-------------------------------------------------------------------
|
||||
Sun Dec 14 04:00:17 UTC 2025 - Marcus Rueckert <mrueckert@suse.de>
|
||||
|
||||
- Update to 5.2.14
|
||||
https://krita.org/en/posts/2025/krita-5.2.14-released/
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Sep 25 06:56:31 UTC 2025 - Christophe Marin <christophe@krop.fr>
|
||||
|
||||
- Update to 5.2.13
|
||||
https://krita.org/en/posts/2025/krita-5.2.13-released/
|
||||
* Fixes CVE-2025-59820
|
||||
- Drop patches:
|
||||
* 5d44af277b005692241a09f30e11bb0d16166823.patch
|
||||
* 0001-Fix-build-with-libheif-1.20.patch
|
||||
* 0001-Fix-compilation-with-heif-1.20.2.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 20 07:35:32 UTC 2025 - Christophe Marin <christophe@krop.fr>
|
||||
|
||||
- Update to 5.2.11
|
||||
https://krita.org/en/posts/2025/krita-5.2.11-released/
|
||||
* Fix an issue updating the canvas when entering/exiting
|
||||
canvas-only mode
|
||||
* Fix an issue in the index colors filter when trying to apply
|
||||
the filter to a layer that has only one, non-transparent color
|
||||
* Fix Python invalid escape sequence warnings (kde#489526)
|
||||
- Add upstream change:
|
||||
* 0001-Fix-compilation-with-heif-1.20.2.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jul 10 13:23:40 UTC 2025 - Christophe Marin <christophe@krop.fr>
|
||||
|
||||
|
||||
17
krita.spec
17
krita.spec
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package krita
|
||||
#
|
||||
# Copyright (c) 2025 SUSE LLC
|
||||
# Copyright (c) 2025 SUSE LLC and contributors
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@@ -29,7 +29,7 @@
|
||||
%define pyver python311
|
||||
%endif
|
||||
Name: krita
|
||||
Version: 5.2.10
|
||||
Version: 5.2.14
|
||||
Release: 0
|
||||
Summary: Digital Painting Application
|
||||
License: BSD-2-Clause AND GPL-2.0-or-later AND LGPL-2.0-or-later AND LGPL-2.1-or-later AND GPL-3.0-or-later AND CC0-1.0 AND LGPL-2.0-only
|
||||
@@ -41,24 +41,15 @@ Source2: krita.keyring
|
||||
%endif
|
||||
# PATCH-FIX-UPSTREAM
|
||||
Patch0: 0004-Fix-build-with-sip6.8.patch
|
||||
# PATCH-FIX-UPSTREAM
|
||||
Patch1: 5d44af277b005692241a09f30e11bb0d16166823.patch
|
||||
# PATCH-FIX-UPSTREAM
|
||||
Patch2: 0001-Fix-build-with-libheif-1.20.patch
|
||||
BuildRequires: %{pyver}-devel
|
||||
BuildRequires: %{pyver}-qt5-devel
|
||||
BuildRequires: %{pyver}-sip-devel
|
||||
BuildRequires: OpenEXR-devel
|
||||
BuildRequires: boost-devel
|
||||
BuildRequires: extra-cmake-modules
|
||||
BuildRequires: fftw3-devel
|
||||
BuildRequires: giflib-devel
|
||||
BuildRequires: gsl-devel
|
||||
%if 0%{?suse_version} > 1500
|
||||
BuildRequires: libboost_system-devel
|
||||
%else
|
||||
BuildRequires: libboost_system1_75_0-devel
|
||||
#!BuildIgnore: libboost_headers1_66_0-devel
|
||||
%endif
|
||||
BuildRequires: libQt5Gui-private-headers-devel
|
||||
BuildRequires: libeigen3-devel
|
||||
BuildRequires: libexiv2-devel
|
||||
@@ -143,6 +134,8 @@ Development headers and libraries for Krita.
|
||||
%prep
|
||||
%autosetup -p1
|
||||
|
||||
sed -i 's#COMPONENTS system##' CMakeLists.txt
|
||||
|
||||
%build
|
||||
%cmake_kf5 -d build -- -DKRITA_ENABLE_PCH:BOOL=OFF
|
||||
|
||||
|
||||
Reference in New Issue
Block a user