From f983d332d6f541e019aa68eddbc14525c549b948 Mon Sep 17 00:00:00 2001
Message-Id: <f983d332d6f541e019aa68eddbc14525c549b948.1654884220.git.me@jeandudey.tech>
From: Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
Date: Fri, 10 Jun 2022 19:57:31 +0200
Subject: [PATCH] gnu: python-xyz: Add python-pysdl2.
* gnu/packages/python-xyz.scm (python-pysdl2): Add package.
---
gnu/packages/python-xyz.scm | 73 +++++++++++++++++++++++++++++++++++++
1 file changed, 73 insertions(+)
@@ -123,6 +123,7 @@
;;; Copyright © 2022 Jai Vetrivelan <jaivetrivelan@gmail.com>
;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
+;;; Copyright © 2022 Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -29447,3 +29448,75 @@ (define-public python-musical-scales
@url{https://en.wikipedia.org/wiki/List_of_musical_scales_and_modes, found on
Wikipedia}.")
(license license:expat)))
+
+(define-public python-pysdl2
+ (package
+ (name "python-pysdl2")
+ (version "0.9.11")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "PySDL2" version))
+ (sha256
+ (base32
+ "19id1qswgcj4v4j5kn49shq1xxx3slhjpm0102w87mczsdbi1rck"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:tests? #f ; Requires /dev/dri, OpenGL module, etc.
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "sdl2/dll.py"
+ ; Disable pysdl2-dll. Not needed.
+ (("prepath = os\\.getenv\\('PYSDL2_DLL_PATH'\\)")
+ "prepath = \"system\"")
+ (("^import sdl2dll$") "")
+ (("postpath = os\\.getenv\\('PYSDL2_DLL_PATH'\\)")
+ "postpath = \"system\"")
+ (("DLL\\(.*, os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)\\)")
+ (string-append "DLL(\"SDL2\", [\"SDL2\", \"SDL2-2.0\","
+ "\"SDL2-2.0.0\"], "
+ "\""
+ (dirname
+ (search-input-file inputs
+ "/lib/libSDL2.so"))
+ "\""
+ ")")))
+ (substitute* "sdl2/sdlimage.py"
+ (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)")
+ (string-append "\""
+ (dirname
+ (search-input-file inputs
+ "/lib/libSDL2_image.so"))
+ "\"")))
+ (substitute* "sdl2/sdlgfx.py"
+ (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)")
+ (string-append "\""
+ (dirname
+ (search-input-file inputs
+ "/lib/libSDL2_gfx.so"))
+ "\"")))
+ (substitute* "sdl2/sdlmixer.py"
+ (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)")
+ (string-append "\""
+ (dirname
+ (search-input-file inputs
+ "/lib/libSDL2_mixer.so"))
+ "\"")))
+ (substitute* "sdl2/sdlttf.py"
+ (("os\\.getenv\\(\"PYSDL2_DLL_PATH\"\\)")
+ (string-append "\""
+ (dirname
+ (search-input-file inputs
+ "/lib/libSDL2_ttf.so"))
+ "\""))))))))
+ (native-inputs
+ (list sdl2 sdl2-image sdl2-gfx sdl2-mixer sdl2-ttf))
+ (home-page "https://github.com/py-sdl/py-sdl2")
+ (synopsis "Python ctypes wrapper around SDL2")
+ (description "PySDL2 is a pure Python wrapper around the @code{SDL2},
+@code{SDL2_mixer}, @code{SDL2_image}, @code{SDL2_ttf}, and @code{SDL2_gfx}
+libraries. Instead of relying on C code, it uses the built-in ctypes module to
+interface with SDL2, and provides simple Python classes and wrappers for
+common SDL2 functionality.")
+ (license license:cc0)))
--
2.36.1