diff --git a/.gitignore b/.gitignore index 2896b44..b5b3ee8 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,10 @@ /pyglet-1.3.2-repacked.tar.gz /pyglet-1.4.1-repacked.tar.gz /pyglet-1.4.6-repacked.tar.gz +/pyglet-1.5.7-repacked.tar.gz +/pyglet-1.5.11-repacked.tar.gz +/pyglet-1.5.16.tar.gz +/pyglet-1.5.16-repacked.tar.gz +/pyglet-1.5.23-repacked.tar.gz +/pyglet-1.5.27-repacked.tar.gz +/pyglet-2.0.10-repacked.tar.gz diff --git a/pyglet-get-tarball.sh b/pyglet-get-tarball.sh index 67f4148..4ac3656 100644 --- a/pyglet-get-tarball.sh +++ b/pyglet-get-tarball.sh @@ -7,12 +7,18 @@ ARCHIVENAME=${VERSIONEDNAME}.tar.gz wget -N https://github.com/pyglet/pyglet/archive/v${VERSION}.tar.gz -O ${ARCHIVENAME} tar xzvf ${ARCHIVENAME} pushd ${VERSIONEDNAME} -rm -rvf examples # includes non-free artwork -rm -rvf tests # includes non-free font rm -rvf tools # random developer tools (*) rm -rvf contrib # again, questionable licensing rm -v pyglet/image/codecs/s3tc.py # patent-encumbered algorithm (**) rm -v pyglet/image/codecs/dds.py # image codec that uses s3tc (**) +rm -rvf examples # includes non-free artwork +rm -rvf tests/data/fonts # includes non-free font +rm -rvf tests/data/images/*.dds # compressed with patent-encumbered algorithm +rm -rvf tests/data/images/dinosaur.gif # questionable origin + +# questionable sound files "retrieved from libpurple": +rm -rvf tests/data/media/{alert,login,logout,receive,send}.wav + popd tar czvf ${VERSIONEDNAME}-repacked.tar.gz ${VERSIONEDNAME} diff --git a/python-pyglet.spec b/python-pyglet.spec index 98d604f..6f56fa7 100644 --- a/python-pyglet.spec +++ b/python-pyglet.spec @@ -1,29 +1,63 @@ %global srcname pyglet -%global srcversion 1.4.6 -%global versionedname %{srcname}-%{srcversion} +%global versionedname %{srcname}-%{version} + +%bcond_without tests Name: python-%{srcname} -Version: %{srcversion} -Release: 4%{?dist} +Version: 2.0.10 +Release: 9%{?dist} Summary: A cross-platform windowing and multimedia library for Python -License: BSD +License: BSD-3-Clause URL: http://www.pyglet.org/ # The upstream tarball includes some non-free files in the examples and tests, # and a patented texture compression algorithm. -# Run the following (in rpmbuild/SOURCES) to generate the distributed tarball: -# $ bash pyglet-get-tarball.sh 1.3.2 +# Run the following (in rpmbuild/SOURCES) to generate the distributed tarball +# (the subcommand outputs a version number like 1.5.16): +# $ bash pyglet-get-tarball.sh $(grep Version python-pyglet.spec|cut -c10-) # See the script for details. Source0: %{versionedname}-repacked.tar.gz Source1: pyglet-get-tarball.sh +# Note that unbundling pypng removes "PNGImageDecoder", which is normally +# available for advanced use cases. Instead of: +# img = image.load(fname, decoder=PNGImageDecoder) # don't use! +# It is enough to let Pyglet choose an appropriate decoder with: +# img = image.load(fname) +# Pyglet docs even discourage hard-coding the decoder "unless your application +# has to work around specific deficiences in an operating system decoder": +# https://pyglet.readthedocs.io/en/latest/programming_guide/image.html?highlight=PILImageDecoder#loading-an-image +# If you do find an issue with the default decoder on Fedora, file a bug. + BuildArch: noarch BuildRequires: python3-devel -BuildRequires: python3-setuptools +BuildRequires: pyproject-rpm-macros -%description +# Tests need OpenGL +# See also: https://bugzilla.redhat.com/show_bug.cgi?id=904851 +%global __pytest xvfb-run -s '-screen 0 640x480x24' pytest +%if %{with tests} +BuildRequires: /usr/bin/xvfb-run mesa-dri-drivers +BuildRequires: python3-pytest +# These two for gdkpixbuf2 tests +BuildRequires: gtk2-devel +BuildRequires: gdk-pixbuf2-devel +# libpurple has sound files unbundled in the repacked tarball +BuildRequires: libpurple +# These tests fail in koji, likely due to missing devices +#BuildRequires: openal-soft +# These are not specified by upstream +BuildRequires: python3-gobject +# Some tests fail if this is present +# https://github.com/pyglet/pyglet/issues/875 +#BuildRequires: python3-pytest-asyncio +%endif +Requires: python3-gobject + + +%global _description %{expand: This library provides an object-oriented programming interface for developing games and other visually-rich applications with Python. pyglet has virtually no external dependencies. For most applications and game @@ -32,6 +66,13 @@ distribution and installation. It also handles multiple windows and fully aware of multi-monitor setups. pyglet might be seen as an alternative to PyGame. +} + +%generate_buildrequires +%pyproject_buildrequires + + +%description %_description %package -n python3-%{srcname} @@ -39,57 +80,173 @@ Summary: A cross-platform windowing and multimedia library for Python 3 %{?python_provide:%python_provide python3-%{srcname}} -Requires: python3 -Requires: python3-pillow -Requires: python3-future - # The libraries are imported dynamically using ctypes, so rpm can't find them. Requires: libGL Requires: libGLU Requires: libX11 +Requires: fontconfig -%description -n python3-%{srcname} -This library provides an object-oriented programming interface for developing -games and other visually-rich applications with Python 3. -pyglet has virtually no external dependencies. For most applications and game -requirements, pyglet needs nothing else besides Python, simplifying -distribution and installation. It also handles multiple windows and -fully aware of multi-monitor setups. +# Needed for experimental headless mode; see: https://github.com/pyglet/pyglet/issues/51 +Suggests: libEGL -pyglet might be seen as an alternative to PyGame. +# Pillow is technically optional, but in Fedora we always pull it in. +# It can open PNG images, so we can remove the bundled "png.py" +Requires: python3-pillow + +%if %{with tests} +BuildRequires: libGL +BuildRequires: libGLU +BuildRequires: libEGL +BuildRequires: libX11 +BuildRequires: fontconfig +BuildRequires: python3-pillow +%endif + + +%description -n python3-%{srcname} %_description %prep -%setup -q -n %{versionedname} +%autosetup -p1 -n %{versionedname} # Remove the bundled pypng library (python-pillow provides the same functionality) rm pyglet/image/codecs/png.py rm pyglet/extlibs/png.py -# The future library can be unbundled (upstream even does it for the wheel distribution) -rm -r pyglet/extlibs/future - # Get rid of hashbang lines. This is a library, it has no executable scripts. # Also remove Windows newlines find . -name '*.py' | xargs sed --in-place -e's|#!/usr/bin/\(env \)\?python||;s/\r//' %build -%py3_build +%pyproject_wheel %install -%py3_install +%pyproject_install -%files -n python3-%{srcname} +%pyproject_save_files pyglet + + +%if %{with tests} +%check +# Skip flaky tests +export CI=on + +# The files are unbundled in the repacked tarball +ln -s %{_datadir}/sounds/purple/*.wav tests/data/media/ + +# Interactive tests are skipped for obvious reasons. +# Media player tests are skipped -- we don't have PulseAudio running. +# test_find_font_match & test_have_font skipped -- they look for a font named 'arial' +# test_font & test_freetype_face tests are skipped -- they depend on non-free font we remove +# test_push_handlers_instance has broken mocking: https://github.com/pyglet/pyglet/issues/606 +# GdkPixBufTest.test_load_animation uses dinosaur.gif which we remove +%pytest \ + -vv \ + --non-interactive \ + --ignore=tests/interactive \ + --ignore=tests/integration/media \ + -m 'not (requires_user_action or requires_user_validation or only_interactive)' \ + -k 'not (test_find_font_match or test_font or test_have_font or test_freetype_face or test_openal_listener or test_push_handlers_instance)' \ + --deselect tests/integration/image/test_gdkpixbuf2.py::GdkPixBufTest::test_load_animation \ + tests +%endif + + +%files -n python3-%{srcname} -f %%{pyproject_files} %license LICENSE -%doc README.md -%doc RELEASE_NOTES -%doc NOTICE -%{python3_sitelib}/%{versionedname}-py%{python3_version}.egg-info -%{python3_sitelib}/%{srcname} +%doc README.md RELEASE_NOTES %changelog +* Fri Sep 19 2025 Python Maint - 2.0.10-9 +- Rebuilt for Python 3.14.0rc3 bytecode + +* Sat Aug 23 2025 Orion Poplawski - 2.0.10-8 +- Add BR/R on python3-gobject, skip openal test (FTBFS rhbz#2379002) + +* Fri Aug 15 2025 Python Maint - 2.0.10-7 +- Rebuilt for Python 3.14.0rc2 bytecode + +* Fri Jul 25 2025 Fedora Release Engineering - 2.0.10-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Tue Jun 03 2025 Python Maint - 2.0.10-5 +- Rebuilt for Python 3.14 + +* Sat Jan 18 2025 Fedora Release Engineering - 2.0.10-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Fri Jul 19 2024 Fedora Release Engineering - 2.0.10-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sat Jun 08 2024 Python Maint - 2.0.10-2 +- Rebuilt for Python 3.13 + +* Sat Feb 17 2024 Orion Poplawski - 2.0.10-1 +- Update to 2.0.10 + +* Fri Jan 26 2024 Fedora Release Engineering - 1.5.27-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Jan 22 2024 Fedora Release Engineering - 1.5.27-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jul 21 2023 Fedora Release Engineering - 1.5.27-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sat Jun 17 2023 Orion Poplawski - 1.5.27-1 +- Update to 1.5.27 +- Add patch for Python 3.12 support +- Use SPDX License + +* Fri Jun 16 2023 Python Maint - 1.5.23-5 +- Rebuilt for Python 3.12 + +* Fri Jan 20 2023 Fedora Release Engineering - 1.5.23-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Jul 22 2022 Fedora Release Engineering - 1.5.23-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Mon Jun 13 2022 Python Maint - 1.5.23-2 +- Rebuilt for Python 3.11 + +* Thu Apr 28 2022 Petr Viktorin - 1.5.23-1 +- Update to 1.5.23 +- This version should not attempt to use the incompatible ffmpeg 5.0, + and fall back to another sound backend if available. + Resolves: RHBZ#2075965 + +* Fri Jan 21 2022 Fedora Release Engineering - 1.5.16-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Sun Oct 10 2021 Benjamin A. Beasley - 1.5.16-4 +- Backport upstream patch to fix ExcludeArch (fix RHBZ#1877849) + +* Fri Jul 23 2021 Fedora Release Engineering - 1.5.16-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Fri Jun 04 2021 Python Maint - 1.5.16-2 +- Rebuilt for Python 3.10 + +* Wed Apr 14 2021 Petr Viktorin - 1.5.16-1 +- Update to 1.5.16 +- Add a comment on how to handle unbundled "pypng" +- Suggest libEGL for new headless mode (experimental, undocumented) +- Remove patch that's now upstream + +* Wed Jan 27 2021 Fedora Release Engineering - 1.5.11-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Nov 25 2020 Petr Viktorin - 1.5.11-1 +- Update to 1.5.11 + +* Wed Sep 09 2020 Petr Viktorin - 1.5.7-1 +- Update to 1.5.7 +- Switch to pyproject macros +- Run tests + * Wed Jul 29 2020 Fedora Release Engineering - 1.4.6-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild diff --git a/sources b/sources index 91c947e..7322f09 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (pyglet-1.4.6-repacked.tar.gz) = 20f3b5c762de1ae1247109a40af4c659f15ee2e900c44cd072dce6ff2cf0bfd909a84b4581addfe8870af9151e5cc90a06d88e1fbdaa282f8156f2bedd7c6e59 +SHA512 (pyglet-2.0.10-repacked.tar.gz) = 8c780913435b1c17e43dcc99e729a2ea5d6a6e734cce642b8da82547f734cc9ce43732257e4f241eb3803a9edc941a96a762e869043260ff15adc84ba5c6d813