Message ID | 20210830153003.27134-1-leo.prikler@student.tugraz.at |
---|---|
State | Accepted |
Headers | show |
Series | [bug#50273] gnu: Add python-pyxel. | expand |
Context | Check | Description |
---|---|---|
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
Hello Leo, Leo Prikler <leo.prikler@student.tugraz.at> writes: > * gnu/packages/game-development.scm (python-pyxel): New variable. > --- > gnu/packages/game-development.scm | 55 +++++++++++++++++++++++++++++++ > 1 file changed, 55 insertions(+) > > diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm > index 2a58848dce..3e21d411cf 100644 > --- a/gnu/packages/game-development.scm > +++ b/gnu/packages/game-development.scm > @@ -1484,6 +1484,61 @@ visual novels, while its Python scripting is enough for complex simulation > games.") > (license license:expat))) > > +(define-public python-pyxel > + (package > + (name "python-pyxel") > + (version "1.4.3") > + (source > + (origin > + (method git-fetch) > + (uri > + (git-reference > + (url "https://github.com/kitao/pyxel") > + (commit (string-append "v" version)))) > + (file-name (git-file-name name version)) > + (sha256 > + (base32 > + "0bwsgb5yq5s479cnf046v379zsn5ybp5195kbfvzr9l11qbaicm9")) > + (modules '((guix build utils))) > + (snippet > + '(begin > + (delete-file-recursively "pyxel/core/bin"))))) > + (build-system python-build-system) > + (arguments > + `(#:tests? #f ; "Tests" are actually example programs that never halt. > + #:phases > + (modify-phases %standard-phases > + (add-after 'unpack 'patch-build-files > + (lambda* (#:key inputs #:allow-other-keys) > + (substitute* "setup.py" > + (("\"pyxel\\.core\\.bin\\.(.*)\"," all arch) > + (if (string=? arch "linux") > + all > + ""))) > + (let* ((sdl2 (assoc-ref inputs "sdl2"))) > + (substitute* "pyxel/core/Makefile" > + (("`sdl2-config --cflags`") > + (string-append "-I" sdl2 "/include/SDL2 -D_REENTRANT")) > + (("`sdl2-config --libs`") > + (string-append "-L" sdl2 "/lib " > + "-Wl,-rpath," sdl2 "/lib " > + "-Wl,--enable-new-dtags -lSDL2")))))) The above could benefit from some extra commenting to explain the choice of linker options (--enable-new-dtags ?) or C preprocessor variables (-D_REENTRANT). I'd have to dig a bit deeper than I'd like to have an understanding of these. > + (add-before 'build 'prebuild > + (lambda _ > + (invoke "make" "-C" "pyxel/core")))))) > + (inputs > + `(("gifsicle" ,gifsicle) > + ("sdl2" ,(sdl-union (list sdl2 sdl2-image))))) > + (native-inputs > + `(("gcc" ,gcc-10))) ; for std::filesystem > + (home-page "https://github.com/kitao/pyxel") > + (synopsis "Retro game engine for Python") > + (description "Pyxel is a game engine inspired by retro gaming consoles. > +It has a fixed 16-color palette, can hold up to 3 image banks and 8 tilemaps > +(256x256 pixels each) and 4 sound channels with 64 definable sounds. It > +also comes with a built-in image and sound editor.") > + (license license:expat))) > + > (define-public grafx2 > (package > (name "grafx2") The rest LGTM! Feel free to push a revised version in which you explain a little bit the choice of linker/preprocessor options. Thank you! Maxim
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 2a58848dce..3e21d411cf 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -1484,6 +1484,61 @@ visual novels, while its Python scripting is enough for complex simulation games.") (license license:expat))) +(define-public python-pyxel + (package + (name "python-pyxel") + (version "1.4.3") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/kitao/pyxel") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0bwsgb5yq5s479cnf046v379zsn5ybp5195kbfvzr9l11qbaicm9")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "pyxel/core/bin"))))) + (build-system python-build-system) + (arguments + `(#:tests? #f ; "Tests" are actually example programs that never halt. + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-build-files + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "setup.py" + (("\"pyxel\\.core\\.bin\\.(.*)\"," all arch) + (if (string=? arch "linux") + all + ""))) + (let* ((sdl2 (assoc-ref inputs "sdl2"))) + (substitute* "pyxel/core/Makefile" + (("`sdl2-config --cflags`") + (string-append "-I" sdl2 "/include/SDL2 -D_REENTRANT")) + (("`sdl2-config --libs`") + (string-append "-L" sdl2 "/lib " + "-Wl,-rpath," sdl2 "/lib " + "-Wl,--enable-new-dtags -lSDL2")))))) + (add-before 'build 'prebuild + (lambda _ + (invoke "make" "-C" "pyxel/core")))))) + (inputs + `(("gifsicle" ,gifsicle) + ("sdl2" ,(sdl-union (list sdl2 sdl2-image))))) + (native-inputs + `(("gcc" ,gcc-10))) ; for std::filesystem + (home-page "https://github.com/kitao/pyxel") + (synopsis "Retro game engine for Python") + (description "Pyxel is a game engine inspired by retro gaming consoles. +It has a fixed 16-color palette, can hold up to 3 image banks and 8 tilemaps +(256x256 pixels each) and 4 sound channels with 64 definable sounds. It +also comes with a built-in image and sound editor.") + (license license:expat))) + (define-public grafx2 (package (name "grafx2")