summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-04-29 17:34:16 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-05-31 14:52:28 -0400
commit9f1bd63fb5b6916f07d454ffde27cd3a66c95bb5 (patch)
tree673fcd5b27af091c60989c98f020bcd67676b785 /gnu
parentda52f45208f052c50ae482d1c9d95c43c81cf72d (diff)
gnu: renpy: Build with Python 3.
* gnu/packages/game-development.scm (renpy)[python]: Delete argument. [phases]: Delete trailing #t. [propagated-inputs]: Update the inputs to their Python 3 counterparts. [native-inputs]: Likewise.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/game-development.scm197
1 files changed, 10 insertions, 187 deletions
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index d8725e837c..961b396ea7 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -1263,9 +1263,9 @@ developed mainly for Ren'py.")
(define-public python2-pygame-sdl2
(package-with-python2 python-pygame-sdl2))
-(define-public python2-renpy
+(define-public renpy
(package
- (name "python2-renpy")
+ (name "renpy")
(version "7.4.11")
(source
(origin
@@ -1284,8 +1284,7 @@ developed mainly for Ren'py.")
#t))))
(build-system python-build-system)
(arguments
- `(#:tests? #f ; Ren'py doesn't seem to package tests
- #:python ,python-2
+ `(#:tests? #f ; Ren'py doesn't seem to package tests
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-commands
@@ -1293,8 +1292,7 @@ developed mainly for Ren'py.")
(substitute* "renpy/editor.py"
(("xdg-open")
(string-append (assoc-ref inputs "xdg-utils")
- "/bin/xdg-open")))
- #t))
+ "/bin/xdg-open")))))
(add-after 'unpack 'fix-include-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "module/setup.py"
@@ -1305,8 +1303,7 @@ developed mainly for Ren'py.")
(setenv "RENPY_CYTHON"
(search-input-file (or native-inputs inputs)
"/bin/cython"))
- (setenv "RENPY_DEPS_INSTALL" (string-join (map cdr inputs) ":"))
- #t))
+ (setenv "RENPY_DEPS_INSTALL" (string-join (map cdr inputs) ":"))))
(replace 'build
(lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
;; The "module" subdirectory contains a python (really cython)
@@ -1316,8 +1313,7 @@ developed mainly for Ren'py.")
(apply (assoc-ref %standard-phases 'build) args))
;; The above only builds the cython modules, but nothing else,
;; so we do that here.
- (invoke "python" "-m" "compileall" "renpy")
- #t))
+ (invoke "python" "-m" "compileall" "renpy")))
(replace 'install
(lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
;; Again, we have to wrap the module installation.
@@ -1332,8 +1328,9 @@ developed mainly for Ren'py.")
(apply (assoc-ref %standard-phases 'install) args))
(copy-recursively "renpy"
(string-append out site "/renpy"))
- (delete-file-recursively (string-append out site "/renpy/common")))
- #t)))))
+ (delete-file-recursively (string-append out site
+ "/renpy/common"))))))))
+ (native-inputs (list python-cython))
(inputs
(list ffmpeg
freetype
@@ -1342,11 +1339,7 @@ developed mainly for Ren'py.")
libpng
(sdl-union (list sdl2 sdl2-image sdl2-mixer sdl2-ttf))
xdg-utils))
- (propagated-inputs
- `(("python2-future" ,python2-future)
- ("python2-pygame" ,python2-pygame-sdl2)))
- (native-inputs
- (list python2-cython))
+ (propagated-inputs (list python-future python-pygame-sdl2))
(home-page "https://www.renpy.org/")
(synopsis "Ren'py python module")
(description "This package contains the shared libraries and Python modules
@@ -1355,176 +1348,6 @@ the launcher and common Ren'py code provided by the @code{renpy} package and
are only used to bootstrap it.")
(license license:expat)))
-(define-public renpy
- (package
- (inherit python2-renpy)
- (name "renpy")
- (build-system python-build-system)
- (arguments
- `(#:tests? #f ; see python2-renpy
- #:python ,python-2
- #:modules ((srfi srfi-1)
- (guix build python-build-system)
- (guix build utils))
- #:imported-modules ((srfi srfi-1) ,@%python-build-system-modules)
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-commands
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (substitute* "launcher/game/choose_directory.rpy"
- (("/usr/bin/python")
- (string-append (assoc-ref inputs "python2")
- "/bin/python2")))
- (substitute* "launcher/game/front_page.rpy"
- (("xdg-open")
- (string-append (assoc-ref inputs "xdg-utils")
- "/bin/xdg-open")))
- (substitute* "launcher/game/project.rpy"
- (("cmd = \\[ executable, \"-EO\", sys.argv\\[0\\] \\]")
- (string-append "cmd = [ \"" (assoc-ref outputs "out")
- "/bin/renpy\" ]"))
- ;; Projects are still created in the usual style, so we need
- ;; to adjust the path.
- (("cmd.append\\(self.path\\)")
- "cmd.append(self.path + \"/game\")"))
- #t))
- (add-after 'unpack 'drop-game-from-paths
- (lambda _
- (substitute* (list "launcher/game/gui7.rpy"
- "launcher/game/gui7/images.py")
- ((", \"game\",") ","))
- #t))
- (add-before 'build 'start-xserver
- (lambda* (#:key inputs native-inputs #:allow-other-keys)
- (let ((xorg-server (assoc-ref (or native-inputs inputs)
- "xorg-server")))
- (setenv "HOME" (getcwd))
- (system (format #f "~a/bin/Xvfb :1 &" xorg-server))
- (setenv "DISPLAY" ":1")
- #t)))
- (replace 'build
- (lambda _
- (invoke "python" "renpy.py" "launcher" "quit")
- (invoke "python" "renpy.py" "the_question" "quit")
- (invoke "python" "renpy.py" "tutorial" "quit")
- #t))
- (replace 'install
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; Here we install our custom renpy program.
- ;; After finishing this step, "out" will have the following:
- ;; |-- bin/renpy
- ;; `-- share/renpy ; i.e. path_to_renpy_base()
- ;; |-- common
- ;; `-- gui
- ;;
- ;; Note that common shares the source files that would be installed
- ;; by python2-renpy (which are instead deleted from that package),
- ;; but also contains their byte-compiled versions.
- ;; On other systems, renpy_base would point to site-packages or
- ;; even somewhere in /opt.
- ;; The former approach is not as straightforward as it seems
- ;; -- it causes renpy to load files twice for some weird reason --
- ;; and the latter is impossible on Guix. Hence the detour through
- ;; share/renpy and the custom renpy program.
- ;;
- ;; As a convention, other games should be installed as
- ;; subdirectories of share/renpy in their respective outputs as
- ;; well. This differs from the traditional layout, which is
- ;; roughly the following:
- ;; `-- Super Awesome Game
- ;; |-- game ; <- the folder we actually want
- ;; |-- lib ; compiled renpy module and dependencies
- ;; |-- renpy ; yet another copy of Ren'py's code
- ;; | |-- common ; the common folder from above
- ;; | `-- ... ; Python code (source + compiled)
- ;; |-- Super Awesome Game.py
- ;; `-- Super Awesome Game.sh
- (let* ((out (assoc-ref outputs "out"))
- (bin/renpy (string-append out "/bin/renpy")))
- (copy-recursively "renpy/common"
- (string-append out "/share/renpy/common"))
- (copy-recursively "gui"
- (string-append out "/share/renpy/gui"))
-
- (mkdir-p (string-append out "/bin"))
- (copy-file (assoc-ref inputs "renpy.in") bin/renpy)
- (substitute* bin/renpy
- (("@PYTHON@") (search-input-file inputs "bin/python2"))
- (("@RENPY_BASE@") (string-append out "/share/renpy")))
- (chmod bin/renpy #o755))))
-
- (add-after 'install 'install-games
- (lambda* (#:key outputs #:allow-other-keys)
- (define renpy (assoc-ref outputs "out"))
- ;; TODO: We should offer a renpy-build-system to make the
- ;; installation of Ren'py games easier.
- (define* (install-renpy-game #:key output game name (renpy renpy)
- #:allow-other-keys)
- (let* ((name (or name (basename game)))
- (launcher (string-append output "/bin/renpy-" name))
- (share (string-append output "/share/renpy/" name)))
- (copy-recursively (string-append game "/game") share)
- (mkdir-p (string-append output "/bin"))
- (with-output-to-file launcher
- (lambda ()
- (format #t
- "#!~a~%~a ~a \"$@\""
- (which "bash")
- (string-append renpy "/bin/renpy")
- share)))
- (chmod launcher #o755)))
-
- (install-renpy-game #:output (assoc-ref outputs "out")
- #:game "launcher")
-
- (install-renpy-game #:output (assoc-ref outputs "the-question")
- #:game "the_question"
- #:name "the-question")
-
- (install-renpy-game #:output (assoc-ref outputs "tutorial")
- #:game "tutorial")
- #t))
- (replace 'wrap
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (site (string-append "/lib/python"
- (python-version
- (assoc-ref inputs "python"))
- "/site-packages")))
- (wrap-program (string-append out "/bin/renpy")
- `("GUIX_PYTHONPATH" =
- (,@(delete-duplicates
- (map
- (lambda (store-path)
- (string-append store-path site))
- (cons (assoc-ref outputs "out")
- (map cdr
- (filter
- (lambda (input)
- (string-prefix? "python2" (car input)))
- inputs))))))))
- #t))))))
- (inputs
- `(("renpy.in" ,(search-auxiliary-file "renpy/renpy.in"))
- ("python2-renpy" ,python2-renpy)
- ("python2-tkinter" ,python-2 "tk")
- ("python2" ,python-2) ; for ‘fix-commands’ and ‘wrap’
- ("xdg-utils" ,xdg-utils)))
- (propagated-inputs '())
- (native-inputs
- (list xorg-server-for-tests))
- (outputs
- (list "out" "tutorial" "the-question"))
- (home-page "https://www.renpy.org/")
- (synopsis "Visual Novel Engine")
- (description "Ren'Py is a visual novel engine that helps you use words,
-images, and sounds to tell interactive stories that run on computers and
-mobile devices. These can be both visual novels and life simulation games.
-The easy to learn script language allows anyone to efficiently write large
-visual novels, while its Python scripting is enough for complex simulation
-games.")
- (license license:expat)))
-
(define-public python-pyxel
(package
(name "python-pyxel")