commit: ddcb6ceca54163321fc50de50e2d333d628f3a27 Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org> AuthorDate: Tue Jan 17 01:06:30 2023 +0000 Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org> CommitDate: Tue Jan 17 05:54:32 2023 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ddcb6cec
dev-python/pygame: enable py3.11, cythonize, adjust deps For 3.11, meant to wait for next release that was supposed to happen "soon" and have 3.11 fixes but that was about 3 months ago and it's blocking adding 3.11 to other packages. Tests pass on amd64 and tried a few games, afaik only real issue was that it lacked cythonize which should be done regardless of a new release. wrt deps: * add missing [webp] to test deps (used for 1 test) * replace deprecated virtual/jpeg * drop unused smpeg2 (no reference to smpeg in the source I can see) * drop ancient version checks Revbump to ~arch as a precaution, albeit unlikely cythonize is going to cause any trouble. Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org> .../pygame/files/pygame-2.1.2-cython_only.patch | 36 ++++++++ dev-python/pygame/pygame-2.1.2-r2.ebuild | 95 ++++++++++++++++++++++ 2 files changed, 131 insertions(+) diff --git a/dev-python/pygame/files/pygame-2.1.2-cython_only.patch b/dev-python/pygame/files/pygame-2.1.2-cython_only.patch new file mode 100644 index 000000000000..4fb935dcf668 --- /dev/null +++ b/dev-python/pygame/files/pygame-2.1.2-cython_only.patch @@ -0,0 +1,36 @@ +Backport to ease running cythonize, DISTUTILS_ARGS=(cython) resulted in +reconfigure attempts that failed without PORTMIDI* being exported. + +https://github.com/pygame/pygame/commit/4eeffc049cf +From: Ankith <[email protected]> +Date: Fri, 3 Jun 2022 21:27:57 +0530 +Subject: [PATCH] Add cython_only option to setup.py +--- a/setup.py ++++ b/setup.py +@@ -209,7 +209,16 @@ def consume_arg(name): + cflags += '-mfpu=neon' + os.environ['CFLAGS'] = cflags + ++compile_cython = False ++cython_only = False + if consume_arg('cython'): ++ compile_cython = True ++ ++if consume_arg('cython_only'): ++ compile_cython = True ++ cython_only = True ++ ++if compile_cython: + # compile .pyx files + # So you can `setup.py cython` or `setup.py cython install` + try: +@@ -280,6 +289,9 @@ def consume_arg(name): + for i, kwargs in enumerate(queue): + kwargs['progress'] = f'[{i + 1}/{count}] ' + cythonize_one(**kwargs) ++ ++ if cython_only: ++ sys.exit(0) + + no_compilation = any(x in ['lint', 'format', 'docs'] for x in sys.argv) + AUTO_CONFIG = not os.path.isfile('Setup') and not no_compilation diff --git a/dev-python/pygame/pygame-2.1.2-r2.ebuild b/dev-python/pygame/pygame-2.1.2-r2.ebuild new file mode 100644 index 000000000000..c6f10a469b75 --- /dev/null +++ b/dev-python/pygame/pygame-2.1.2-r2.ebuild @@ -0,0 +1,95 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{9..11} ) + +inherit distutils-r1 + +DESCRIPTION="Python bindings for SDL multimedia library" +HOMEPAGE="https://www.pygame.org/" +SRC_URI=" + https://github.com/pygame/pygame/archive/${PV}.tar.gz -> ${P}.gh.tar.gz" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~sparc ~x86" +IUSE="examples midi opengl test X" +RESTRICT="!test? ( test )" + +RDEPEND=" + dev-python/numpy[${PYTHON_USEDEP}] + media-libs/freetype + media-libs/libjpeg-turbo:= + media-libs/libpng:= + media-libs/sdl2-image + media-libs/sdl2-mixer + media-libs/sdl2-ttf + midi? ( media-libs/portmidi ) + X? ( media-libs/libsdl2[opengl?,threads,video,X] ) + !X? ( media-libs/libsdl2[threads] )" +DEPEND=" + ${RDEPEND} + test? ( + media-libs/sdl2-image[gif,jpeg,png,tiff,webp] + media-libs/sdl2-mixer[mp3,vorbis,wav] + )" +# fontconfig used for fc-list +RDEPEND+=" + media-libs/fontconfig" +# util-linux provides script +BDEPEND=" + dev-python/cython[${PYTHON_USEDEP}] + test? ( + media-libs/fontconfig + sys-apps/util-linux + )" + +PATCHES=( + "${FILESDIR}"/${P}-libsdl2-2.26-tests.patch + "${FILESDIR}"/${P}-cython_only.patch +) + +src_prepare() { + distutils-r1_src_prepare + + if ! use midi; then + rm test/midi_test.py || die + fi +} + +python_configure() { + PORTMIDI_INC_PORTTIME=1 LOCALBASE="${EPREFIX}/usr" \ + "${EPYTHON}" "${S}"/buildconfig/config.py -auto || die + + # Disable automagic dependency on PortMidi. + if ! use midi; then + sed -e "s:^pypm :#&:" -i Setup || die + fi +} + +python_configure_all() { + find src_c/cython -name '*.pyx' -exec touch {} + || die + "${EPYTHON}" setup.py cython_only || die +} + +python_test() { + local -x PYTHONPATH=${BUILD_DIR}/install/lib + local -x SDL_VIDEODRIVER=dummy + local -x SDL_AUDIODRIVER=disk + script -eqc "${EPYTHON} -m pygame.tests -v" || die +} + +python_install() { + distutils-r1_python_install + + # Bug #497720 + rm -fr "${D}$(python_get_sitedir)"/pygame/{docs,examples,tests}/ || die +} + +python_install_all() { + distutils-r1_python_install_all + use examples && dodoc -r examples +}
