unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Jean Pierre De Jesus DIAZ via Guix-patches via <guix-patches@gnu.org>
To: "55893@debbugs.gnu.org" <55893@debbugs.gnu.org>
Subject: [bug#55893] [PATCH] gnu: python-xyz: Add python-pysdl2.
Date: Tue, 14 Jun 2022 23:13:23 +0000	[thread overview]
Message-ID: <PU09rD4P7DrmB57CDTzAf3z4aqWGKe4h1X4KnWj2BGlrZlu9QrPsHF7efsUX06HmWy0b_T94tCS0vw4Xa1YuXKe5H2UZlP29FPBFx1OsRdU=@jeandudey.tech> (raw)
In-Reply-To: <WFbr_G-n9Q7OJKBaVB4sZRY28Zj9_4Hufh4Q9UsdtQoqWBCfY1aaBFPak48wHnrBQYHQx-vR4MvCNwjHy8gEaMqjyUdWgthP-xsEOvvINWI=@jeandudey.tech>

[-- Attachment #1: Type: text/plain, Size: 2730 bytes --]

Applied the suggestions to the code and relocated the definition of the package on the `python-py` packages section.

Thanks for the review.

> ------- Original Message -------
> On Saturday, June 11th, 2022 at 12:13 AM, Maxime Devos maximedevos@telenet.be wrote:
>
>
>
> > Jean Pierre De Jesus DIAZ via Guix-patches via schreef op vr 10-06-2022
> > om 18:09 [+0000]:
> >
> > > + (native-inputs
> > > + (list sdl2 sdl2-image sdl2-gfx sdl2-mixer sdl2-ttf))
> >
> > These need to be in 'inputs', not native-inputs -- their shared
> > libraries will actually be executed when python-pysdl2 executed, which
> > can only work if they are compiled for the same architecture as python-
> > pysdl2 is compiled for (that's what 'inputs' means; for 'native-
> > inputs', it would be compiled for the architecture on which python-
> > pysdl2 is compiled, not the architecture it is compiled for).
> >
> > > + (synopsis "Python ctypes wrapper around SDL2")
> >
> > ctypes sounds like an implementation detail not relevant to users of
> > python-pysdl2, maybe: ‘Python bindings around SDL2’?
> >
> > > + ; Disable pysdl2-dll. Not needed.
> >
> > Nitpick: the convention is two ;;, not a single ;.
> >
> > > + (string-append "DLL(\"SDL2\", [\"SDL2\", \"SDL2
> >
> > 2.0\","
> >
> > > + "\"SDL2-2.0.0\"], "
> > > + "\""
> >
> > Thee strings above can be combined.
> >
> > > + (dirname
> > > + (search-input-file inputs
> > > + "/lib/libSDL2.so"))
> >
> > Indentations seems a bit wonky -- if this is to not make the line too long,
> > maybe try putting a line break between the 'string-append' and the "DLL(..."?
> >
> > > + "\""
> > > + ")")))
> >
> > These strings too.
> >
> > > + (arguments
> > > + `(#:tests? #f ; Requires /dev/dri, OpenGL module, etc.
> > > + #:phases
> > > + (modify-phases %standard-phases
> >
> > Recommended style (considered more readable):
> >
> > (list #:tests? #f ; etcetera
> > #:phases
> > #~(modify-phases [etcetera]))
> >
> > (Many other packages don't do it like that yet, it has only
> > be discovered recently -- I would point you at IRC logs but
> > I'm currently offline.)
> >
> > Also, don't put the package definition simply at the end, that
> > leads to merge conflicts. Instead, try keep packages
> > alphabetical ... which is difficult here, because it has
> > historically neglected alphebetical ordening, but maybe right
> > after python-py would be a good fit?
> >
> > Otherwise, the package definition LGTM from a distance, though
> > I only looked at the definition, I didn't check the source code
> > (for simplifying the substitute*-ions or checking for malware)
> > or build it.
> >
> > Greetings,
> > Maxime.

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-python-xyz-Add-python-pysdl2.patch --]
[-- Type: text/x-patch; name=0001-gnu-python-xyz-Add-python-pysdl2.patch, Size: 4261 bytes --]

From 542a138fa26eec2c25cb7743be612a2d7f4a502d Mon Sep 17 00:00:00 2001
Message-Id: <542a138fa26eec2c25cb7743be612a2d7f4a502d.1655242487.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 | 66 +++++++++++++++++++++++++++++++++++++
 1 file changed, 66 insertions(+)

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index f37ca731d5..dbc662465b 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -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.
 ;;;
@@ -3900,6 +3901,71 @@ (define-public python-jinja2-time
 templates.  A format string can be provided to control the output.")
     (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
+      (list #: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. It can't be packaged on GNU Guix
+                    ;; as it duplicates an existing package (sdl2).
+                    (("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"))
+                   "\""))))))))
+    (inputs
+      (list sdl2 sdl2-image sdl2-gfx sdl2-mixer sdl2-ttf))
+    (home-page "https://github.com/py-sdl/py-sdl2")
+    (synopsis "Python bindings 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)))
+
 (define-public python-pystache
   (package
     (name "python-pystache")
-- 
2.36.1


  parent reply	other threads:[~2022-06-14 23:28 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-10 18:09 [bug#55893] [PATCH] gnu: python-xyz: Add python-pysdl2 Jean Pierre De Jesus DIAZ via Guix-patches via
2022-06-10 22:13 ` Maxime Devos
     [not found]   ` <WFbr_G-n9Q7OJKBaVB4sZRY28Zj9_4Hufh4Q9UsdtQoqWBCfY1aaBFPak48wHnrBQYHQx-vR4MvCNwjHy8gEaMqjyUdWgthP-xsEOvvINWI=@jeandudey.tech>
2022-06-14 23:13     ` Jean Pierre De Jesus DIAZ via Guix-patches via [this message]
2022-06-17 13:35       ` bug#55893: " Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='PU09rD4P7DrmB57CDTzAf3z4aqWGKe4h1X4KnWj2BGlrZlu9QrPsHF7efsUX06HmWy0b_T94tCS0vw4Xa1YuXKe5H2UZlP29FPBFx1OsRdU=@jeandudey.tech' \
    --to=guix-patches@gnu.org \
    --cc=55893@debbugs.gnu.org \
    --cc=me@jeandudey.tech \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).