commit: 923195dc3c5affe6eb051a78f981adfd7583d22b Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Tue Sep 30 23:24:54 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Tue Sep 30 23:26:50 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=923195dc
media-gfx/mypaint: fix compat w/ newer pygobject Noticed after Alpine pulled this in. Closes: https://bugs.gentoo.org/963605 Signed-off-by: Sam James <sam <AT> gentoo.org> .../files/mypaint-2.0.1-pygobject-3.52.patch | 54 ++++++++++++ media-gfx/mypaint/mypaint-2.0.1-r6.ebuild | 99 ++++++++++++++++++++++ 2 files changed, 153 insertions(+) diff --git a/media-gfx/mypaint/files/mypaint-2.0.1-pygobject-3.52.patch b/media-gfx/mypaint/files/mypaint-2.0.1-pygobject-3.52.patch new file mode 100644 index 000000000000..a40787b360e9 --- /dev/null +++ b/media-gfx/mypaint/files/mypaint-2.0.1-pygobject-3.52.patch @@ -0,0 +1,54 @@ +https://bugs.gentoo.org/963605 +https://gitlab.alpinelinux.org/alpine/aports/-/blob/da14a6d0ee52aeaa90485719bcbf33623465780a/community/mypaint/fix-pyobject-userdirectory.patch +Patch-Source: https://github.com/wobbol/mypaint/commit/3b682d5898f4a6b709a2cd1a4d2b1b9288277cd6 +--- +From 3b682d5898f4a6b709a2cd1a4d2b1b9288277cd6 Mon Sep 17 00:00:00 2001 +From: insane <[email protected]> +Date: Thu, 3 Apr 2025 03:14:39 -0500 +Subject: [PATCH] Fix pyobject enums in pygobject >= 3.51.0 + +Co-authored-by: N.F. <[email protected]> + +Fix AttributeError: 'UserDirectory' object has no attribute 'value_name' + +k.value_name was resulting in attribute error. +Changing it to k.name resolves it. + +Background information below. + +Unregistered pygobject enums in v3.51.0 released on 2025-02-01 are now +stdlib enums. + +From the NEWS file: +> Note: Only enumerations and flags that have a GType associated will +> have the GEnum extra properties, such as +> `value_nicks` and `value_names`. + +Further down: +> * Use standard `enum` module for enums and flags in +> PyGObject :mr:`394` + +Reference: +https://github.com/mypaint/mypaint/issues/1292 +https://gitlab.gnome.org/GNOME/pygobject/-/blob/1c675e47a160662e5247a387dcd35e0d36b3c4d2/NEWS#L32 +https://gitlab.gnome.org/GNOME/pygobject/-/merge_requests/394 + +Closes #1292 +--- + lib/glib.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/glib.py b/lib/glib.py +index 5d4eef16c..865ec86ae 100644 +--- a/lib/glib.py ++++ b/lib/glib.py +@@ -190,7 +190,7 @@ def init_user_dir_caches(): + k = GLib.UserDirectory(i) + logger.debug( + "Init g_get_user_special_dir(%s): %r", +- k.value_name, ++ k.name, + get_user_special_dir(k), + ) + + diff --git a/media-gfx/mypaint/mypaint-2.0.1-r6.ebuild b/media-gfx/mypaint/mypaint-2.0.1-r6.ebuild new file mode 100644 index 000000000000..2c51d109cce3 --- /dev/null +++ b/media-gfx/mypaint/mypaint-2.0.1-r6.ebuild @@ -0,0 +1,99 @@ +# 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 + "${FILESDIR}"/${PN}-2.0.1-pygobject-3.52.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 +}
