diff --git a/pkgs/development/python-modules/pysdl2/PySDL2-dll.patch b/pkgs/development/python-modules/pysdl2/PySDL2-dll.patch index ca723a0e573..db6895edfbf 100644 --- a/pkgs/development/python-modules/pysdl2/PySDL2-dll.patch +++ b/pkgs/development/python-modules/pysdl2/PySDL2-dll.patch @@ -1,119 +1,100 @@ -diff -ru PySDL2-0.9.6-old/sdl2/dll.py PySDL2-0.9.6/sdl2/dll.py ---- PySDL2-0.9.6-old/sdl2/dll.py 2018-03-08 10:18:37.583471745 +0100 -+++ PySDL2-0.9.6/sdl2/dll.py 2018-03-08 10:20:06.705517520 +0100 -@@ -45,29 +45,31 @@ +diff -ru PySDL2-0.9.7-old/sdl2/dll.py PySDL2-0.9.7/sdl2/dll.py +--- PySDL2-0.9.7-old/sdl2/dll.py 2020-02-15 09:36:29.000000000 +0100 ++++ PySDL2-0.9.7/sdl2/dll.py 2020-09-23 20:24:09.365497270 +0200 +@@ -94,15 +94,16 @@ """Function wrapper around the different DLL functions. Do not use or instantiate this one directly from your user code. """ - def __init__(self, libinfo, libnames, path=None): -- self._dll = None ++ def __init__(self, libinfo, libfile): + self._dll = None + self._libname = libinfo + self._version = None - foundlibs = _findlib(libnames, path) - dllmsg = "PYSDL2_DLL_PATH: %s" % (os.getenv("PYSDL2_DLL_PATH") or "unset") - if len(foundlibs) == 0: - raise RuntimeError("could not find any library for %s (%s)" % - (libinfo, dllmsg)) -- for libfile in foundlibs: -- try: -- self._dll = CDLL(libfile) -- self._libfile = libfile -- break -- except Exception as exc: -- # Could not load the DLL, move to the next, but inform the user -- # about something weird going on - this may become noisy, but -- # is better than confusing the users with the RuntimeError below -- warnings.warn(repr(exc), DLLWarning) -- if self._dll is None: -- raise RuntimeError("found %s, but it's not usable for the library %s" % -- (foundlibs, libinfo)) ++ #foundlibs = _findlib(libnames, path) ++ #dllmsg = "PYSDL2_DLL_PATH: %s" % (os.getenv("PYSDL2_DLL_PATH") or "unset") ++ #if len(foundlibs) == 0: ++ # raise RuntimeError("could not find any library for %s (%s)" % ++ # (libinfo, dllmsg)) ++ foundlibs = [ libfile ] + for libfile in foundlibs: + try: + self._dll = CDLL(libfile) +@@ -117,9 +118,9 @@ + if self._dll is None: + raise RuntimeError("found %s, but it's not usable for the library %s" % + (foundlibs, libinfo)) - if path is not None and sys.platform in ("win32",) and \ - path in self._libfile: - os.environ["PATH"] = "%s;%s" % (path, os.environ["PATH"]) -+ def __init__(self, libfile): -+ self._dll = CDLL(libfile) -+ self._libfile = libfile -+ # self._dll = None -+ # foundlibs = _findlib(libnames, path) -+ # dllmsg = "PYSDL2_DLL_PATH: %s" % (os.getenv("PYSDL2_DLL_PATH") or "unset") -+ # if len(foundlibs) == 0: -+ # raise RuntimeError("could not find any library for %s (%s)" % -+ # (libinfo, dllmsg)) -+ # for libfile in foundlibs: -+ # try: -+ # self._dll = CDLL(libfile) -+ # self._libfile = libfile -+ # break -+ # except Exception as exc: -+ # # Could not load the DLL, move to the next, but inform the user -+ # # about something weird going on - this may become noisy, but -+ # # is better than confusing the users with the RuntimeError below -+ # warnings.warn(repr(exc), DLLWarning) -+ # if self._dll is None: -+ # raise RuntimeError("found %s, but it's not usable for the library %s" % -+ # (foundlibs, libinfo)) -+ # if path is not None and sys.platform in ("win32",) and \ -+ # path in self._libfile: -+ # os.environ["PATH"] = "%s;%s" % (path, os.environ["PATH"]) ++ #if path is not None and sys.platform in ("win32",) and \ ++ # path in self._libfile: ++ # os.environ["PATH"] = "%s;%s" % (path, os.environ["PATH"]) - def bind_function(self, funcname, args=None, returns=None, optfunc=None): + def bind_function(self, funcname, args=None, returns=None, added=None): """Binds the passed argument and return value types to the specified -@@ -110,7 +112,7 @@ +@@ -220,7 +221,7 @@ return try: - dll = DLL("SDL2", ["SDL2", "SDL2-2.0"], os.getenv("PYSDL2_DLL_PATH")) -+ dll = DLL("SDL2") ++ dll = DLL("SDL2", "@sdl2@") except RuntimeError as exc: raise ImportError(exc) -diff -ru PySDL2-0.9.6-old/sdl2/sdlgfx.py PySDL2-0.9.6/sdl2/sdlgfx.py ---- PySDL2-0.9.6-old/sdl2/sdlgfx.py 2018-03-08 10:18:37.585471769 +0100 -+++ PySDL2-0.9.6/sdl2/sdlgfx.py 2018-03-08 10:20:06.705517520 +0100 -@@ -34,8 +34,7 @@ +diff -ru PySDL2-0.9.7-old/sdl2/sdlgfx.py PySDL2-0.9.7/sdl2/sdlgfx.py +--- PySDL2-0.9.7-old/sdl2/sdlgfx.py 2020-02-02 11:07:00.000000000 +0100 ++++ PySDL2-0.9.7/sdl2/sdlgfx.py 2020-09-23 20:23:56.997419129 +0200 +@@ -39,8 +39,7 @@ ] try: - dll = DLL("SDL2_gfx", ["SDL2_gfx", "SDL2_gfx-1.0"], - os.getenv("PYSDL2_DLL_PATH")) -+ dll = DLL("SDL2_gfx") ++ dll = DLL("SDL2_gfx", "@sdl2_gfx@") except RuntimeError as exc: raise ImportError(exc) -diff -ru PySDL2-0.9.6-old/sdl2/sdlimage.py PySDL2-0.9.6/sdl2/sdlimage.py ---- PySDL2-0.9.6-old/sdl2/sdlimage.py 2018-03-08 10:18:37.585471769 +0100 -+++ PySDL2-0.9.6/sdl2/sdlimage.py 2018-03-08 10:20:06.705517520 +0100 -@@ -26,8 +26,7 @@ +diff -ru PySDL2-0.9.7-old/sdl2/sdlimage.py PySDL2-0.9.7/sdl2/sdlimage.py +--- PySDL2-0.9.7-old/sdl2/sdlimage.py 2020-02-02 11:07:00.000000000 +0100 ++++ PySDL2-0.9.7/sdl2/sdlimage.py 2020-09-23 20:23:50.085375658 +0200 +@@ -27,8 +27,7 @@ ] try: - dll = DLL("SDL2_image", ["SDL2_image", "SDL2_image-2.0"], - os.getenv("PYSDL2_DLL_PATH")) -+ dll = DLL("SDL2_image") ++ dll = DLL("SDL2_image", "@sdl2_image@") except RuntimeError as exc: raise ImportError(exc) -diff -ru PySDL2-0.9.6-old/sdl2/sdlmixer.py PySDL2-0.9.6/sdl2/sdlmixer.py ---- PySDL2-0.9.6-old/sdl2/sdlmixer.py 2018-03-08 10:18:37.585471769 +0100 -+++ PySDL2-0.9.6/sdl2/sdlmixer.py 2018-03-08 10:20:27.415758478 +0100 -@@ -50,8 +50,7 @@ +diff -ru PySDL2-0.9.7-old/sdl2/sdlmixer.py PySDL2-0.9.7/sdl2/sdlmixer.py +--- PySDL2-0.9.7-old/sdl2/sdlmixer.py 2020-02-02 11:07:00.000000000 +0100 ++++ PySDL2-0.9.7/sdl2/sdlmixer.py 2020-09-23 20:23:46.117350771 +0200 +@@ -53,8 +53,7 @@ ] try: - dll = DLL("SDL2_mixer", ["SDL2_mixer", "SDL2_mixer-2.0"], - os.getenv("PYSDL2_DLL_PATH")) -+ dll = DLL("SDL2_mixer") ++ dll = DLL("SDL2_mixer", "@sdl2_mixer@") except RuntimeError as exc: raise ImportError(exc) -diff -ru PySDL2-0.9.6-old/sdl2/sdlttf.py PySDL2-0.9.6/sdl2/sdlttf.py ---- PySDL2-0.9.6-old/sdl2/sdlttf.py 2018-03-08 10:18:37.585471769 +0100 -+++ PySDL2-0.9.6/sdl2/sdlttf.py 2018-03-08 10:20:06.705517520 +0100 -@@ -38,8 +38,7 @@ +diff -ru PySDL2-0.9.7-old/sdl2/sdlttf.py PySDL2-0.9.7/sdl2/sdlttf.py +--- PySDL2-0.9.7-old/sdl2/sdlttf.py 2020-02-02 11:07:00.000000000 +0100 ++++ PySDL2-0.9.7/sdl2/sdlttf.py 2020-09-23 20:23:40.069312931 +0200 +@@ -39,8 +39,7 @@ ] try: - dll = DLL("SDL2_ttf", ["SDL2_ttf", "SDL2_ttf-2.0"], - os.getenv("PYSDL2_DLL_PATH")) -+ dll = DLL("SDL2_ttf") ++ dll = DLL("SDL2_ttf", "@sdl2_ttf@") except RuntimeError as exc: raise ImportError(exc) diff --git a/pkgs/development/python-modules/pysdl2/default.nix b/pkgs/development/python-modules/pysdl2/default.nix index b22da8b83ac..be9663245bb 100644 --- a/pkgs/development/python-modules/pysdl2/default.nix +++ b/pkgs/development/python-modules/pysdl2/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, fetchPypi, buildPythonPackage, SDL2, SDL2_ttf, SDL2_image, SDL2_gfx, SDL2_mixer }: +{ stdenv, lib, substituteAll, fetchPypi, buildPythonPackage, SDL2, SDL2_ttf, SDL2_image, SDL2_gfx, SDL2_mixer }: buildPythonPackage rec { pname = "PySDL2"; @@ -18,19 +18,18 @@ buildPythonPackage rec { # which library they want to include. buildInputs = [ SDL2_ttf SDL2_image SDL2_gfx SDL2_mixer ]; propagatedBuildInputs = [ SDL2 ]; - patches = [ ./PySDL2-dll.patch ]; - postPatch = '' - substituteInPlace sdl2/dll.py --replace \ - "DLL(\"SDL2\")" "DLL('${SDL2}/lib/libSDL2${stdenv.hostPlatform.extensions.sharedLibrary}')" - substituteInPlace sdl2/sdlttf.py --replace \ - "DLL(\"SDL2_ttf\")" "DLL('${SDL2_ttf}/lib/libSDL2_ttf${stdenv.hostPlatform.extensions.sharedLibrary}')" - substituteInPlace sdl2/sdlimage.py --replace \ - "DLL(\"SDL2_image\")" "DLL('${SDL2_image}/lib/libSDL2_image${stdenv.hostPlatform.extensions.sharedLibrary}')" - substituteInPlace sdl2/sdlgfx.py --replace \ - "DLL(\"SDL2_gfx\")" "DLL('${SDL2_gfx}/lib/libSDL2_gfx${stdenv.hostPlatform.extensions.sharedLibrary}')" - substituteInPlace sdl2/sdlmixer.py --replace \ - "DLL(\"SDL2_mixer\")" "DLL('${SDL2_mixer}/lib/libSDL2_mixer${stdenv.hostPlatform.extensions.sharedLibrary}')" - ''; + patches = [ + (substituteAll ({ + src = ./PySDL2-dll.patch; + } // builtins.mapAttrs (_: pkg: "${pkg}/lib/lib${pkg.pname}${stdenv.hostPlatform.extensions.sharedLibrary}") { + # substituteAll keys must start lowercase + sdl2 = SDL2; + sdl2_ttf = SDL2_ttf; + sdl2_image = SDL2_image; + sdl2_gfx = SDL2_gfx; + sdl2_mixer = SDL2_mixer; + })) + ]; meta = { description = "A wrapper around the SDL2 library and as such similar to the discontinued PySDL project";