Compare commits

5 Commits

Author SHA256 Message Date
ad08b0878f Accepting request 1275032 from devel:languages:python
Automatic submission by obs-autosubmit

OBS-URL: https://build.opensuse.org/request/show/1275032
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=16
2025-05-07 17:18:19 +00:00
578671c091 Accepting request 1273537 from home:jengelh:branches:devel:languages:python
- Adjust run-time dependencies to avoid old virtual provides.

- Adjust build-time dependencies so that it builds with SDL3.

OBS-URL: https://build.opensuse.org/request/show/1273537
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=36
2025-04-30 06:36:52 +00:00
bcde325525 - Adjust dependencies so that it builds with SDL3.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=35
2025-04-28 13:58:35 +00:00
b290cd1ea5 Accepting request 1251643 from devel:languages:python
OBS-URL: https://build.opensuse.org/request/show/1251643
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-PySDL2?expand=0&rev=15
2025-03-10 17:05:52 +00:00
f1733da240 Accepting request 1250129 from home:mcalabkova:branches:devel:languages:python:adi
- Update to 0.9.17
  * Updated to wrap new functions and constants in SDL 2.30.10.
  * Updated to wrap new functions and constants in SDL_mixer 2.8.0
  * Updated to wrap new function in SDL_image 2.8.0.
  * Added a new function sdl2.ext.get_key_state for checking if a given 
    key is currently down or up independently of the SDL event queue.
- Drop merged patches:
  * fix-tests-SDL_GetError.patch
  * fix-partially-resolve-video_test.patch
  * fix-test-SDL_hid_enumerate.patch

OBS-URL: https://build.opensuse.org/request/show/1250129
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PySDL2?expand=0&rev=33
2025-03-10 06:47:59 +00:00
7 changed files with 45 additions and 456 deletions

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1027406badbecdd30fe56e800a5a76ad7d7271a3aec0b7acf780ee26a00f2d40
size 773537

View File

@@ -1,240 +0,0 @@
From ed28ea6305dede1b6ba046e36ddae9ba2016b62e Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@collabora.com>
Date: Sat, 19 Aug 2023 23:44:03 +0100
Subject: [PATCH] Partially resolve #257: video_test (#270)
* video_test: Don't check error unless a function failed
Helps: https://github.com/py-sdl/py-sdl2/issues/257
Signed-off-by: Simon McVittie <smcv@debian.org>
* video_test: Use _check_error_msg() a bit more often
Signed-off-by: Simon McVittie <smcv@debian.org>
* video_test: Mitigate unsuitability of SDL_GetError() for detecting failure
SDL_GetError() is like errno: it's documented not to be suitable for
detecting failure, only for getting more details if failure was already
detected (its result is unspecified on success, because a successful
API call might have been implemented by doing something that failed,
detecting that, and falling back to doing something different).
However, some functions in SDL2 return void, so we have no other way
to tell whether they have failed (they do return a result in SDL3).
To make it less likely that upgrading SDL2 will make these tests regress,
clear the error indicator immediately before calling the function under
test. It is still not guaranteed to be empty on success, but at least
this way we make sure it doesn't already contain an error message from
a previous function call.
Helps: https://github.com/py-sdl/py-sdl2/issues/257
Signed-off-by: Simon McVittie <smcv@debian.org>
---------
Signed-off-by: Simon McVittie <smcv@debian.org>
---
sdl2/test/video_test.py | 58 +++++++++++++++++++++--------------------
1 file changed, 30 insertions(+), 28 deletions(-)
diff --git a/sdl2/test/video_test.py b/sdl2/test/video_test.py
index 83cb620..ca5a8e4 100644
--- a/sdl2/test/video_test.py
+++ b/sdl2/test/video_test.py
@@ -52,8 +52,7 @@ def with_sdl_gl(with_sdl):
def window(with_sdl):
flag = sdl2.SDL_WINDOW_BORDERLESS
w = sdl2.SDL_CreateWindow(b"Test", 10, 40, 12, 13, flag)
- if not w:
- assert SDL_GetError() == b""
+ assert w, _check_error_msg()
assert isinstance(w.contents, sdl2.SDL_Window)
sdl2.SDL_ClearError()
yield w
@@ -63,8 +62,7 @@ def window(with_sdl):
def decorated_window(with_sdl):
flag = sdl2.SDL_WINDOW_RESIZABLE
w = sdl2.SDL_CreateWindow(b"Test", 10, 40, 12, 13, flag)
- if not w:
- assert SDL_GetError() == b""
+ assert w, _check_error_msg()
assert isinstance(w.contents, sdl2.SDL_Window)
sdl2.SDL_ClearError()
yield w
@@ -74,20 +72,18 @@ def decorated_window(with_sdl):
def gl_window(with_sdl_gl):
flag = sdl2.SDL_WINDOW_OPENGL
w = sdl2.SDL_CreateWindow(b"OpenGL", 10, 40, 12, 13, flag)
- if not w:
- assert SDL_GetError() == b""
+ assert w, _check_error_msg()
assert isinstance(w.contents, sdl2.SDL_Window)
sdl2.SDL_ClearError()
ctx = sdl2.SDL_GL_CreateContext(w)
- assert SDL_GetError() == b""
+ assert ctx, _check_error_msg()
yield (w, ctx)
sdl2.SDL_GL_DeleteContext(ctx)
sdl2.SDL_DestroyWindow(w)
def _create_window(name, h, w, x, y, flags):
window = sdl2.SDL_CreateWindow(name, h, w, x, y, flags)
- if not window:
- assert SDL_GetError() == b""
+ assert window, _check_error_msg()
assert isinstance(window.contents, sdl2.SDL_Window)
sdl2.SDL_ClearError()
return window
@@ -193,7 +189,7 @@ def test_SDL_VideoInitQuit():
# Test with default driver
assert sdl2.SDL_WasInit(0) & sdl2.SDL_INIT_VIDEO != sdl2.SDL_INIT_VIDEO
ret = sdl2.SDL_VideoInit(None)
- assert ret == 0, sdl2.SDL_GetError().decode('utf-8', 'replace')
+ assert ret == 0, _check_error_msg()
assert sdl2.SDL_GetCurrentVideoDriver() # If initialized, should be string
sdl2.SDL_VideoQuit()
assert not sdl2.SDL_GetCurrentVideoDriver()
@@ -234,8 +230,7 @@ def test_SDL_GetDisplayMode(with_sdl):
for mode in range(modes):
dmode = sdl2.SDL_DisplayMode()
ret = sdl2.SDL_GetDisplayMode(index, mode, byref(dmode))
- assert sdl2.SDL_GetError() == b""
- assert ret == 0
+ assert ret == 0, _check_error_msg()
if not DRIVER_DUMMY:
assert dmode.w > 0
assert dmode.h > 0
@@ -245,8 +240,7 @@ def test_SDL_GetCurrentDisplayMode(with_sdl):
for index in range(numdisplays):
dmode = sdl2.SDL_DisplayMode()
ret = sdl2.SDL_GetCurrentDisplayMode(index, byref(dmode))
- assert sdl2.SDL_GetError() == b""
- assert ret == 0
+ assert ret == 0, _check_error_msg()
assert dmode.w > 0
assert dmode.h > 0
@@ -255,8 +249,7 @@ def test_SDL_GetDesktopDisplayMode(with_sdl):
for index in range(numdisplays):
dmode = sdl2.SDL_DisplayMode()
ret = sdl2.SDL_GetDesktopDisplayMode(index, byref(dmode))
- assert sdl2.SDL_GetError() == b""
- assert ret == 0
+ assert ret == 0, _check_error_msg()
assert dmode.w > 0
assert dmode.h > 0
@@ -266,8 +259,7 @@ def test_SDL_GetClosestDisplayMode(with_sdl):
for index in range(numdisplays):
dmode = sdl2.SDL_DisplayMode()
ret = sdl2.SDL_GetCurrentDisplayMode(index, byref(dmode))
- assert sdl2.SDL_GetError() == b""
- assert ret == 0
+ assert ret == 0, _check_error_msg()
cmode = sdl2.SDL_DisplayMode(
dmode.format, dmode.w - 1, dmode.h - 1, dmode.refresh_rate
)
@@ -286,8 +278,7 @@ def test_SDL_GetDisplayBounds(with_sdl):
for index in range(numdisplays):
bounds = rect.SDL_Rect()
ret = sdl2.SDL_GetDisplayBounds(index, byref(bounds))
- assert sdl2.SDL_GetError() == b""
- assert ret == 0
+ assert ret == 0, _check_error_msg()
assert bounds.w > 0
assert bounds.h > 0
assert not rect.SDL_RectEmpty(bounds)
@@ -345,8 +336,8 @@ def test_GetDisplayInfo(with_sdl):
def test_SDL_CreateDestroyWindow(with_sdl):
flag = sdl2.SDL_WINDOW_BORDERLESS
window = sdl2.SDL_CreateWindow(b"Test", 10, 40, 12, 13, flag)
+ assert window, _check_error_msg()
if not isinstance(window.contents, sdl2.SDL_Window):
- assert SDL_GetError() == b""
assert isinstance(window.contents, sdl2.SDL_Window)
sdl2.SDL_DestroyWindow(window)
@@ -453,7 +444,10 @@ def test_SDL_SetWindowIcon(window):
0, 16, 16, 16, 0xF000, 0x0F00, 0x00F0, 0x000F
)
assert isinstance(sf.contents, surface.SDL_Surface)
+ sdl2.SDL_ClearError()
sdl2.SDL_SetWindowIcon(window, sf)
+ # TODO: This is not 100% safe, but in SDL2, SetWindowIcon returns void,
+ # so we can't reliably detect error
assert SDL_GetError() == b""
@pytest.mark.xfail(is_pypy, reason="PyPy can't create proper py_object values")
@@ -535,7 +529,10 @@ def test_SDL_GetSetWindowMinimumSize(window):
sdl2.SDL_GetWindowSize(window, byref(sx), byref(sy))
assert (sx.value, sy.value) == (12, 13)
# Set and verify the minimum window size
+ sdl2.SDL_ClearError()
sdl2.SDL_SetWindowMinimumSize(window, 10, 10)
+ # TODO: This is not 100% safe, but in SDL2, SetWindowMinimumSize returns
+ # void, so we can't reliably detect error
assert SDL_GetError() == b""
sdl2.SDL_GetWindowMinimumSize(window, byref(minx), byref(miny))
assert (minx.value, miny.value) == (10, 10)
@@ -549,8 +546,11 @@ def test_SDL_GetSetWindowMaximumSize(window):
maxx, maxy = c_int(0), c_int(0)
sdl2.SDL_GetWindowSize(window, byref(sx), byref(sy))
assert (sx.value, sy.value) == (12, 13)
+ sdl2.SDL_ClearError()
# Set and verify the maximum window size
sdl2.SDL_SetWindowMaximumSize(window, 32, 32)
+ # TODO: This is not 100% safe, but in SDL2, SetWindowMaximumSize returns
+ # void, so we can't reliably detect error
assert SDL_GetError() == b""
sdl2.SDL_GetWindowMaximumSize(window, byref(maxx), byref(maxy))
assert (maxx.value, maxy.value) == (32, 32)
@@ -660,7 +660,7 @@ def test_SDL_HasWindowSurface(window):
def test_SDL_GetWindowSurface(window):
sf = sdl2.SDL_GetWindowSurface(window)
- assert SDL_GetError() == b""
+ assert sf, _check_error_msg()
assert isinstance(sf.contents, surface.SDL_Surface)
def test_SDL_UpdateWindowSurface(window):
@@ -857,23 +857,22 @@ def test_SDL_GL_CreateDeleteContext(with_sdl_gl):
b"OpenGL", 10, 40, 32, 24, sdl2.SDL_WINDOW_OPENGL
)
ctx = sdl2.SDL_GL_CreateContext(window)
- assert SDL_GetError() == b""
+ assert ctx, _check_error_msg()
sdl2.SDL_GL_DeleteContext(ctx)
ctx = sdl2.SDL_GL_CreateContext(window)
- assert SDL_GetError() == b""
+ assert ctx, _check_error_msg()
sdl2.SDL_GL_DeleteContext(ctx)
sdl2.SDL_DestroyWindow(window)
@pytest.mark.skipif(DRIVER_DUMMY, reason="Doesn't work with dummy driver")
def test_SDL_GL_GetProcAddress(gl_window):
procaddr = sdl2.SDL_GL_GetProcAddress(b"glGetString")
- assert SDL_GetError() == b""
- assert procaddr is not None and int(procaddr) != 0
+ assert procaddr is not None and int(procaddr) != 0, _check_error_msg()
@pytest.mark.skipif(DRIVER_DUMMY, reason="Doesn't work with dummy driver")
def test_SDL_GL_ExtensionSupported(gl_window):
- assert sdl2.SDL_GL_ExtensionSupported(b"GL_EXT_bgra")
- assert SDL_GetError() == b""
+ sdl2.SDL_ClearError()
+ assert sdl2.SDL_GL_ExtensionSupported(b"GL_EXT_bgra"), _check_error_msg()
@pytest.mark.skipif(DRIVER_DUMMY, reason="Doesn't work with dummy driver")
def test_SDL_GL_GetSetResetAttribute(with_sdl_gl):
@@ -946,7 +945,10 @@ def test_SDL_GL_SwapWindow(gl_window):
window, ctx = gl_window
ret = sdl2.SDL_GL_MakeCurrent(window, ctx)
assert ret == 0, _check_error_msg()
+ sdl2.SDL_ClearError()
sdl2.SDL_GL_SwapWindow(window)
sdl2.SDL_GL_SwapWindow(window)
sdl2.SDL_GL_SwapWindow(window)
+ # TODO: This is not 100% safe, but in SDL2, GL_SwapWindow returns
+ # void, so we can't reliably detect error
assert SDL_GetError() == b""

View File

@@ -1,43 +0,0 @@
From d7c0604381f6cbefa2c8b51c84b879e2f927e91e Mon Sep 17 00:00:00 2001
From: Simon McVittie <smcv@collabora.com>
Date: Sat, 19 Aug 2023 23:38:36 +0100
Subject: [PATCH] test: Don't assert that SDL_hid_enumerate doesn't set error
(#269)
On my Linux system, enumeration succeeds, but the error indicator gets
set as a side-effect (which appears to be because the loader checks
whether the symbol exists in SDL or a direct dependency before it
dlopens libudev).
The API of SDL_hid_enumerate does not make it possible to distinguish
between successfully returning an empty list of devices (returns NULL
with the error indicator in an undefined state) and a failure (returns
NULL with the error indicator set), and systems that run automated tests
usually don't have any HID game controllers connected, so we can't make
any meaningful use of the error indicator here.
Helps: https://github.com/py-sdl/py-sdl2/issues/257
Signed-off-by: Simon McVittie <smcv@debian.org>
---
sdl2/test/hidapi_test.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/sdl2/test/hidapi_test.py b/sdl2/test/hidapi_test.py
index 68bb9f9..5422d42 100644
--- a/sdl2/test/hidapi_test.py
+++ b/sdl2/test/hidapi_test.py
@@ -38,10 +38,11 @@ def test_SDL_hid_device_change_count(hidapi_setup):
def test_SDL_hid_enumerate(hidapi_setup):
devices = sdl2.SDL_hid_enumerate(0, 0)
- assert SDL_GetError() == b""
+ # Cannot check the error indicator here: a non-error empty list is
+ # indistinguishable from an error, and it is not guaranteed that the
+ # error indicator will not be set as a side-effect of a successful load
if devices != None:
sdl2.SDL_hid_free_enumeration(devices)
- assert SDL_GetError() == b""
@pytest.mark.skip("not implemented")

View File

@@ -1,148 +0,0 @@
From 1c865e3f751e678f3ad2d8f3fca17a0755fbeaf7 Mon Sep 17 00:00:00 2001
From: basak <robie@justgohome.co.uk>
Date: Fri, 11 Aug 2023 17:52:01 +0100
Subject: [PATCH] tests: SDL_GetError() != b'' isn't an error (#267)
* tests: SDL_GetError() != b'' isn't an error
In Ubuntu, we're seeing test failures of the following pattern when
moving from libsdl2 2.28.1+dfsg-1 to 2.28.2+dfsg-1:
> assert sdl2.SDL_GetError() == b""
E AssertionError: assert b'Unexpected ...r element crc' == b''
E Full diff:
E - b''
E + b'Unexpected controller element crc'
This looks like an issue similar to that fixed in commit 8c39f40. We
should check the relevant return value, and only if it indicates failure
should we attach any particular meaning to the return value of
SDL_GetError().
* Add myself to AUTHORS.txt
As instructed in #267
---
AUTHORS.txt | 1 +
sdl2/test/gamecontroller_test.py | 16 +++-------------
2 files changed, 4 insertions(+), 13 deletions(-)
diff --git a/AUTHORS.txt b/AUTHORS.txt
index 287109e..6d40500 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -45,6 +45,7 @@ Thanks to everyone else for their assistance, support, fixes and improvements:
* Radomir Dopieralski
* Rob Rolls
* Robert Winkler
+* Robie Basak
* Roger Flores
* Simon McVittie
* smea lum
diff --git a/sdl2/test/gamecontroller_test.py b/sdl2/test/gamecontroller_test.py
index 7a00aac..f509a88 100644
--- a/sdl2/test/gamecontroller_test.py
+++ b/sdl2/test/gamecontroller_test.py
@@ -51,7 +51,7 @@ def gamepads(with_sdl):
for i in range(count):
if sdl2.SDL_IsGameController(i) == SDL_TRUE:
pad = sdl2.SDL_GameControllerOpen(i)
- assert sdl2.SDL_GetError() == b""
+ assert pad, _check_error_msg()
assert isinstance(pad.contents, sdl2.SDL_GameController)
devices.append(pad)
yield devices
@@ -133,21 +133,18 @@ def test_SDL_GameControllerMappingForGUID(with_sdl):
def test_SDL_GameControllerMapping(gamepads):
for pad in gamepads:
mapping = sdl2.SDL_GameControllerMapping(pad)
- assert SDL_GetError() == b""
assert mapping == None or type(mapping) in (str, bytes)
def test_SDL_IsGameController(with_sdl):
count = joystick.SDL_NumJoysticks()
for index in range(count):
ret = sdl2.SDL_IsGameController(index)
- assert sdl2.SDL_GetError() == b""
assert ret in [SDL_TRUE, SDL_FALSE]
def test_SDL_GameControllerNameForIndex(with_sdl):
count = joystick.SDL_NumJoysticks()
for index in range(count):
name = sdl2.SDL_GameControllerNameForIndex(index)
- assert sdl2.SDL_GetError() == b""
assert name == None or type(name) in (str, bytes)
@pytest.mark.skipif(sdl2.dll.version < 2231, reason="not available")
@@ -174,7 +171,7 @@ def test_SDL_GameControllerOpenClose(with_sdl):
for index in range(count):
if sdl2.SDL_IsGameController(index) == SDL_TRUE:
pad = sdl2.SDL_GameControllerOpen(index)
- assert sdl2.SDL_GetError() == b""
+ assert pad, _check_error_msg()
assert isinstance(pad.contents, sdl2.SDL_GameController)
sdl2.SDL_GameControllerClose(pad)
@@ -220,7 +217,6 @@ def test_SDL_GameControllerPath(gamepads):
def test_SDL_GameControllerGetType(gamepads):
for pad in gamepads:
padtype = sdl2.SDL_GameControllerGetType(pad)
- assert SDL_GetError() == b""
assert padtype in gamepad_types
if is_virtual(pad):
assert padtype == sdl2.SDL_CONTROLLER_TYPE_VIRTUAL
@@ -244,7 +240,6 @@ def test_SDL_GameControllerSetPlayerIndex(gamepads):
def test_SDL_GameControllerGetVendor(gamepads):
for pad in gamepads:
vid = sdl2.SDL_GameControllerGetVendor(pad)
- assert SDL_GetError() == b""
if not is_virtual(pad):
assert vid > 0
@@ -252,7 +247,6 @@ def test_SDL_GameControllerGetVendor(gamepads):
def test_SDL_GameControllerGetProduct(gamepads):
for pad in gamepads:
pid = sdl2.SDL_GameControllerGetProduct(pad)
- assert SDL_GetError() == b""
if not is_virtual(pad):
assert pid > 0
@@ -260,21 +254,18 @@ def test_SDL_GameControllerGetProduct(gamepads):
def test_SDL_GameControllerGetProductVersion(gamepads):
for pad in gamepads:
pver = sdl2.SDL_GameControllerGetProductVersion(pad)
- assert SDL_GetError() == b""
assert pver >= 0
@pytest.mark.skipif(sdl2.dll.version < 2231, reason="not available")
def test_SDL_GameControllerGetFirmwareVersion(gamepads):
for pad in gamepads:
fw_ver = sdl2.SDL_GameControllerGetFirmwareVersion(pad)
- assert SDL_GetError() == b""
assert fw_ver >= 0
@pytest.mark.skipif(sdl2.dll.version < 2014, reason="not available")
def test_SDL_GameControllerGetSerial(gamepads):
for pad in gamepads:
serial = sdl2.SDL_GameControllerGetSerial(pad)
- assert SDL_GetError() == b""
assert serial == None or type(serial) in (str, bytes)
def test_SDL_GameControllerGetAttached(gamepads):
@@ -285,7 +276,7 @@ def test_SDL_GameControllerGetAttached(gamepads):
def test_SDL_GameControllerGetJoystick(gamepads):
for pad in gamepads:
stick = sdl2.SDL_GameControllerGetJoystick(pad)
- assert SDL_GetError() == b""
+ assert stick, _check_error_msg()
assert isinstance(stick.contents, joystick.SDL_Joystick)
def test_SDL_GameControllerEventState(with_sdl):
@@ -298,7 +289,6 @@ def test_SDL_GameControllerEventState(with_sdl):
def test_SDL_GameControllerUpdate(with_sdl):
# NOTE: Returns void, can't really test anything else
sdl2.SDL_GameControllerUpdate()
- assert SDL_GetError() == b""
def test_SDL_GameControllerGetAxisFromString(with_sdl):
expected = {

3
pysdl2-0.9.17.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:48c6ef01a4eb123db5f7e46e1a1b565675755b07e615f3fe20a623c94735b52b
size 775955

View File

@@ -1,3 +1,27 @@
-------------------------------------------------------------------
Wed Apr 30 00:41:39 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Adjust run-time dependencies to avoid old virtual provides.
-------------------------------------------------------------------
Mon Apr 28 13:58:16 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
- Adjust build-time dependencies so that it builds with SDL3.
-------------------------------------------------------------------
Tue Mar 4 15:07:23 UTC 2025 - Markéta Machová <mmachova@suse.com>
- Update to 0.9.17
* Updated to wrap new functions and constants in SDL 2.30.10.
* Updated to wrap new functions and constants in SDL_mixer 2.8.0
* Updated to wrap new function in SDL_image 2.8.0.
* Added a new function sdl2.ext.get_key_state for checking if a given
key is currently down or up independently of the SDL event queue.
- Drop merged patches:
* fix-tests-SDL_GetError.patch
* fix-partially-resolve-video_test.patch
* fix-test-SDL_hid_enumerate.patch
-------------------------------------------------------------------
Fri Feb 2 09:28:39 UTC 2024 - munix9@googlemail.com

View File

@@ -1,7 +1,7 @@
#
# spec file for package python-PySDL2
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,29 +17,25 @@
%define X_display ":98"
%define lname pysdl2
Name: python-PySDL2
Version: 0.9.16
Version: 0.9.17
Release: 0
Summary: Python ctypes wrapper around SDL2
License: SUSE-Public-Domain
URL: https://github.com/py-sdl/py-sdl2
Source: https://files.pythonhosted.org/packages/source/P/PySDL2/PySDL2-%{version}.tar.gz
# PATCH-FIX-UPSTREAM fix-tests-SDL_GetError.patch -- based on commit 1c865e3
Patch0: https://github.com/py-sdl/py-sdl2/commit/1c865e3f751e678f3ad2d8f3fca17a0755fbeaf7.patch#/fix-tests-SDL_GetError.patch
# PATCH-FIX-UPSTREAM fix-test-SDL_hid_enumerate.patch -- based on commit d7c0604
Patch1: https://github.com/py-sdl/py-sdl2/commit/d7c0604381f6cbefa2c8b51c84b879e2f927e91e.patch#/fix-test-SDL_hid_enumerate.patch
# PATCH-FIX-UPSTREAM fix-partially-resolve-video_test.patch -- based on commit ed28ea6
Patch2: https://github.com/py-sdl/py-sdl2/commit/ed28ea6305dede1b6ba046e36ddae9ba2016b62e.patch#/fix-partially-resolve-video_test.patch
Source: https://files.pythonhosted.org/packages/source/p/%{lname}/%{lname}-%{version}.tar.gz
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
BuildRequires: SDL2 >= 2.0.22
BuildRequires: SDL2_gfx >= 1.0.4
BuildRequires: SDL2_image >= 2.6.0
BuildRequires: SDL2_mixer >= 2.6.0
BuildRequires: SDL2_ttf >= 2.20.0
BuildRequires: fdupes
BuildRequires: pkgconfig
BuildRequires: python-rpm-macros
BuildRequires: pkgconfig(SDL2_gfx) >= 1.0.4
BuildRequires: pkgconfig(SDL2_image) >= 2.6.0
BuildRequires: pkgconfig(SDL2_mixer) >= 2.6.0
BuildRequires: pkgconfig(SDL2_ttf) >= 2.20.0
BuildRequires: pkgconfig(sdl3) >= 2.0.22
# SECTION test requirements
BuildRequires: %{python_module numpy}
BuildRequires: %{python_module Pillow}
@@ -47,11 +43,11 @@ BuildRequires: %{python_module pytest}
BuildRequires: libmpg123-0
BuildRequires: xorg-x11-server
# /SECTION
Requires: SDL2 >= 2.0.22
Requires: SDL2_gfx >= 1.0.4
Requires: SDL2_image >= 2.6.0
Requires: SDL2_mixer >= 2.6.0
Requires: SDL2_ttf >= 2.20.0
Requires: libSDL2-2_0-0 >= 2.0.22
Requires: libSDL2_gfx-1_0-0 >= 1.0.4
Requires: libSDL2_image-2_0-0 >= 2.6.0
Requires: libSDL2_mixer-2_0-0 >= 2.6.0
Requires: libSDL2_ttf-2_0-0 >= 2.20.0
BuildArch: noarch
%python_subpackages
@@ -62,7 +58,7 @@ the built-in ctypes module to interface with SDL2, and provides simple
Python classes and wrappers for common SDL2 functionality.
%prep
%autosetup -p1 -n PySDL2-%{version}
%autosetup -p1 -n %{lname}-%{version}
sed -i 's/\r$//' AUTHORS.txt COPYING.txt README.md
find . -name *DS_Store -delete
@@ -80,12 +76,12 @@ export SDL_AUDIODRIVER=dummy
export SDL_RENDER_DRIVER=software
export PYTHONFAULTHANDLER=1
%pytest -rfEs
%pytest -rfEs -k 'not (test_SDL_SetWindowDisplayMode or test_SDL_SetWindowFullscreen or test_SDL_SetHint)'
%files %{python_files}
%license COPYING.txt
%doc AUTHORS.txt README.md doc/
%{python_sitelib}/sdl2
%{python_sitelib}/PySDL2-%{version}*-info
%{python_sitelib}/[Pp]y[Ss][Dd][Ll]2-%{version}*-info
%changelog