diff --git a/.gitignore b/.gitignore index 814f533..b5b3ee8 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,8 @@ /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/e44509b5e4.patch b/e44509b5e4.patch deleted file mode 100644 index 879c992..0000000 --- a/e44509b5e4.patch +++ /dev/null @@ -1,104 +0,0 @@ -From e44509b5e42525f30b62137599e574fdd41f68bc Mon Sep 17 00:00:00 2001 -From: Benjamin Moran -Date: Tue, 24 Nov 2020 11:42:02 +0900 -Subject: [PATCH] Simplify UBO code, and revert some experimental code. - ---- - RELEASE_NOTES | 8 ++++++ - pyglet/text/formats/attributed.py | 41 +++++++------------------------ - 2 files changed, 17 insertions(+), 32 deletions(-) - -diff --git a/RELEASE_NOTES b/RELEASE_NOTES -index 5c4fe67a..f084a013 100644 ---- a/RELEASE_NOTES -+++ b/RELEASE_NOTES -@@ -1,3 +1,11 @@ -+pyglet 1.5.12 -+Bugfix and feature release -+ -+Bugfixes -+-------- -+- Remove usage of deprecated `parser` module. (#312) -+ -+ - pyglet 1.5.11 - Bugfix release - -diff --git a/pyglet/text/formats/attributed.py b/pyglet/text/formats/attributed.py -index 350e0844..3eb815c6 100644 ---- a/pyglet/text/formats/attributed.py -+++ b/pyglet/text/formats/attributed.py -@@ -38,11 +38,7 @@ - """ - - import re --import token --import parser --import operator -- --from functools import reduce -+import ast - - import pyglet - -@@ -63,11 +59,13 @@ - - - class AttributedTextDecoder(pyglet.text.DocumentDecoder): -- def decode(self, text, location=None): -- self.doc = pyglet.text.document.FormattedDocument() - -+ def __init__(self): -+ self.doc = pyglet.text.document.FormattedDocument() - self.length = 0 - self.attributes = {} -+ -+ def decode(self, text, location=None): - next_trailing_space = True - trailing_newline = True - -@@ -90,22 +88,15 @@ def decode(self, text, location=None): - self.append(m.group('nl_para')[1:]) # ignore the first \n - trailing_newline = True - elif group == 'attr': -- try: -- ast = parser.expr(m.group('attr_val')) -- if self.safe(ast): -- val = eval(ast.compile()) -- else: -- val = None -- except (parser.ParserError, SyntaxError): -- val = None -+ value = ast.literal_eval(m.group('attr_val')) - name = m.group('attr_name') - if name[0] == '.': - if trailing_newline: -- self.attributes[name[1:]] = val -+ self.attributes[name[1:]] = value - else: -- self.doc.set_paragraph_style(self.length, self.length, {name[1:]: val}) -+ self.doc.set_paragraph_style(self.length, self.length, {name[1:]: value}) - else: -- self.attributes[name] = val -+ self.attributes[name] = value - elif group == 'escape_dec': - self.append(chr(int(m.group('escape_dec_val')))) - elif group == 'escape_hex': -@@ -122,17 +113,3 @@ def append(self, text): - self.doc.insert_text(self.length, text, self.attributes) - self.length += len(text) - self.attributes.clear() -- -- _safe_names = ('True', 'False', 'None') -- -- def safe(self, ast): -- tree = ast.totuple() -- return self.safe_node(tree) -- -- def safe_node(self, node): -- if token.ISNONTERMINAL(node[0]): -- return reduce(operator.and_, map(self.safe_node, node[1:])) -- elif node[0] == token.NAME: -- return node[1] in self._safe_names -- else: -- return True diff --git a/python-pyglet.spec b/python-pyglet.spec index 9e7eb9d..6f56fa7 100644 --- a/python-pyglet.spec +++ b/python-pyglet.spec @@ -4,33 +4,34 @@ %bcond_without tests Name: python-%{srcname} -Version: 1.5.11 -Release: 2%{?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 -# Remove usage of the deprecated `parser` module. -# This makes pyglet compatible with Python 3.10a. -# Merged upstream. -Patch0: https://github.com/pyglet/pyglet/commit/e44509b5e4.patch +# 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 -# Tests (and possibly sound synthesis?) fail on big-endian. -# Reported: https://github.com/pyglet/pyglet/issues/278 -# Fedora bug: https://bugzilla.redhat.com/show_bug.cgi?id=1877849 -ExcludeArch: s390x - BuildRequires: python3-devel BuildRequires: pyproject-rpm-macros @@ -40,9 +41,20 @@ BuildRequires: pyproject-rpm-macros %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: @@ -74,6 +86,9 @@ Requires: libGLU Requires: libX11 Requires: fontconfig +# Needed for experimental headless mode; see: https://github.com/pyglet/pyglet/issues/51 +Suggests: libEGL + # 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 @@ -81,6 +96,7 @@ Requires: python3-pillow %if %{with tests} BuildRequires: libGL BuildRequires: libGLU +BuildRequires: libEGL BuildRequires: libX11 BuildRequires: fontconfig BuildRequires: python3-pillow @@ -122,26 +138,104 @@ 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_freetype_face tests are is skipped -- they depend on non-free font we remove +# 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_have_font or test_freetype_face)' \ + -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 +%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 diff --git a/sources b/sources index 3af51ca..7322f09 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (pyglet-1.5.11-repacked.tar.gz) = 5b658b11c5ddae223a1aee0db365d65e265f9fde80aa42abbc57272f508bcf26b285b51d66ff0e80da6854128f83d3bcba6457bfbfe5f1082b43ce5ad1288377 +SHA512 (pyglet-2.0.10-repacked.tar.gz) = 8c780913435b1c17e43dcc99e729a2ea5d6a6e734cce642b8da82547f734cc9ce43732257e4f241eb3803a9edc941a96a762e869043260ff15adc84ba5c6d813