media-gfx/mypaint: fix runtime issues w/ >=numpy-2

Unfortunately, the testsuite is disabled still as it relies on `setup.py test`.

Upstream are slowly porting to Meson though.

Closes: https://bugs.gentoo.org/961072
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Sam James 2025-08-30 02:45:58 +01:00
parent 9073abde03
commit d818d4f552
No known key found for this signature in database
GPG Key ID: 738409F520DF9190
2 changed files with 181 additions and 0 deletions

View File

@ -0,0 +1,83 @@
https://bugs.gentoo.org/961072
Original commits:
* https://github.com/mypaint/mypaint/commit/2a92b6baf452aba2cff3cc0a7782b301da3933d7
* https://github.com/mypaint/mypaint/commit/ab017e073e83a4930a0fb09608682bf4b7ab1874
Use the backport variants from wip/2.x-backports:
* https://github.com/mypaint/mypaint/commit/1b5fa7ab6f13858d5747ca6eee6b4e8a6de265d1
* https://github.com/mypaint/mypaint/commit/cbc3a41c4d4333a3cd4930dc833385febc0ccfab
From 1b5fa7ab6f13858d5747ca6eee6b4e8a6de265d1 Mon Sep 17 00:00:00 2001
From: Jan Tojnar <jtojnar@gmail.com>
Date: Sun, 4 Aug 2024 05:41:28 +0200
Subject: [PATCH] strokemap: Replace deprecated tostring with tobytes
https: //numpy.org/devdocs/reference/generated/numpy.ndarray.tostring.html#numpy.ndarray.tostring
(cherry picked from commit 2a92b6baf452aba2cff3cc0a7782b301da3933d7)
---
lib/strokemap.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/strokemap.py b/lib/strokemap.py
index 204c1da72..fe3f85d72 100644
--- a/lib/strokemap.py
+++ b/lib/strokemap.py
@@ -411,7 +411,7 @@ class _Tile:
"""
- _ZDATA_ONES = zlib.compress(np.ones((N, N), 'uint8').tostring())
+ _ZDATA_ONES = zlib.compress(np.ones((N, N), 'uint8').tobytes())
def __init__(self):
"""Initialize, as a tile filled with all ones."""
@@ -451,7 +451,7 @@ def new_from_array(cls, array):
tile._zdata = None
else:
tile._all = False
- tile._zdata = zlib.compress(array.tostring())
+ tile._zdata = zlib.compress(array.tobytes())
return tile
@classmethod
From cbc3a41c4d4333a3cd4930dc833385febc0ccfab Mon Sep 17 00:00:00 2001
From: askmeaboutlo0m <askmeaboutlo0m@users.noreply.github.com>
Date: Mon, 23 Jun 2025 15:51:28 +0200
Subject: [PATCH] Replace tostring() with tobytes() in stroke.py (#1300)
Because numpy removed the former function (in a minor release) with
numpy/numpy#28254. The function was an alias, so there's no change in
behavior, i.e. it always returned bytes.
See also 2a92b6baf452aba2cff3cc0a7782b301da3933d7, where the same
function was already replaced in strokemap.py.
(cherry picked from commit ab017e073e83a4930a0fb09608682bf4b7ab1874)
---
lib/stroke.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/stroke.py b/lib/stroke.py
index 22991bc4a..7c41e8481 100644
--- a/lib/stroke.py
+++ b/lib/stroke.py
@@ -43,7 +43,7 @@ def start_recording(self, brush):
states = brush.get_states_as_array()
assert states.dtype == 'float32'
- self.brush_state = states.tostring()
+ self.brush_state = states.tobytes()
self.brush = brush
self.brush.new_stroke() # resets the stroke_* members of the brush
@@ -63,7 +63,7 @@ def stop_recording(self):
# - for space: just gzip? use integer datatypes?
# - for time: maybe already use array storage while recording?
data = np.array(self.tmp_event_list, dtype='float64')
- data = data.tostring()
+ data = data.tobytes()
version = b'2'
self.stroke_data = version + data

View File

@ -0,0 +1,98 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{11..13} )
inherit desktop edo python-single-r1 toolchain-funcs xdg
DESCRIPTION="Fast and easy graphics application for digital painters"
HOMEPAGE="https://www.mypaint.app/en/"
SRC_URI="https://github.com/mypaint/${PN}/releases/download/v${PV}/${P}.tar.xz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~arm64 ~x86"
IUSE="openmp"
LANGS="cs de en_CA en_GB es fr hu id it ja ko nb nn_NO pl pt_BR ro ru sl sv uk zh_CN zh_TW"
# Relies on setup.py test (long-removed) and nose (also long-removed)
# See bug #927525 and https://github.com/mypaint/mypaint/issues/1191
RESTRICT="test"
REQUIRED_USE="${PYTHON_REQUIRED_USE}"
RDEPEND="
${PYTHON_DEPS}
$(python_gen_cond_dep '
dev-python/pygobject:3[${PYTHON_USEDEP}]
dev-python/numpy[${PYTHON_USEDEP}]
>=dev-python/pycairo-1.4[${PYTHON_USEDEP}]
dev-python/protobuf[${PYTHON_USEDEP}]
')
>=dev-libs/json-c-0.11:=
gnome-base/librsvg
media-gfx/mypaint-brushes:2.0
media-libs/lcms:2
>=media-libs/libmypaint-1.5.0[openmp?]
media-libs/libpng:=
sys-devel/gettext
llvm-runtimes/openmp
x11-libs/gdk-pixbuf[jpeg]
x11-libs/gtk+:3
"
DEPEND="${RDEPEND}"
BDEPEND="
${PYTHON_DEPS}
$(python_gen_cond_dep '
dev-python/setuptools[${PYTHON_USEDEP}]
')
dev-lang/swig
sys-devel/gettext
virtual/pkgconfig
"
PATCHES=(
"${FILESDIR}"/${PN}-2.0.1-r1-build-system.patch
"${FILESDIR}"/${P}-GIL-hold.patch
"${FILESDIR}"/${P}-setuptools.patch
"${FILESDIR}"/${PN}-2.0.1-python3.11.patch
"${FILESDIR}"/${PN}-2.0.1-numpy-2.patch
)
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_compile() {
# --disable-openmp can't be passed to setup.py build,
# only setup.py build_ext.
# Trying to call build_ext then build and such fails.
#
# We just override the environment instead for simplicity.
local openmp=$(usex openmp '-fopenmp' '-fno-openmp')
local -x OPENMP_CFLAG="${openmp}" OPENMP_LDFLAG="${openmp}"
edo ${EPYTHON} setup.py build
}
src_install() {
edo ${EPYTHON} setup.py install --prefix="${EPREFIX}/usr" --root="${D}"
python_fix_shebang "${ED}"/usr/bin
python_optimize
python_optimize "${ED}/usr/lib/mypaint"
einstalldocs
newicon pixmaps/${PN}_logo.png ${PN}.png
local lang=
for lang in ${LANGS}; do
if ! has ${lang} ${LINGUAS}; then
rm -rf "${ED}"/usr/share/locale/${lang} || die
fi
done
}