From patchwork Sun May 15 04:37:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Maxim Cournoyer X-Patchwork-Id: 39313 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 7EBC727BBEA; Sun, 15 May 2022 05:58:09 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FROM,MAILING_LIST_MULTI, SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id AC73D27BBE9 for ; Sun, 15 May 2022 05:58:08 +0100 (BST) Received: from localhost ([::1]:57192 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nq6KV-0001YP-T7 for patchwork@mira.cbaines.net; Sun, 15 May 2022 00:58:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43432) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nq6IV-0000Ts-GL for guix-patches@gnu.org; Sun, 15 May 2022 00:56:04 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:54366) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nq6IV-0006aI-7u for guix-patches@gnu.org; Sun, 15 May 2022 00:56:03 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nq6IV-0003Z7-7o for guix-patches@gnu.org; Sun, 15 May 2022 00:56:03 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#55424] [PATCH 081/602] gnu: renpy: Build with Python 3. Resent-From: Maxim Cournoyer Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 15 May 2022 04:56:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 55424 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 55424@debbugs.gnu.org Cc: Maxim Cournoyer Received: via spool by 55424-submit@debbugs.gnu.org id=B55424.165259051713255 (code B ref 55424); Sun, 15 May 2022 04:56:03 +0000 Received: (at 55424) by debbugs.gnu.org; 15 May 2022 04:55:17 +0000 Received: from localhost ([127.0.0.1]:48153 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nq6Hd-0003RL-2g for submit@debbugs.gnu.org; Sun, 15 May 2022 00:55:17 -0400 Received: from mail-qv1-f47.google.com ([209.85.219.47]:38669) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nq6Hb-0003PT-44 for 55424@debbugs.gnu.org; Sun, 15 May 2022 00:55:07 -0400 Received: by mail-qv1-f47.google.com with SMTP id n10so9883867qvi.5 for <55424@debbugs.gnu.org>; Sat, 14 May 2022 21:55:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7c3f4F9JXtD7QCxK3oYR1z3X5bnl37koui24Jk0cghg=; b=CloQWCeq8NvTtZp1u7C1tZS841WUjhkldn5vcdGh5y8lyfbi6KuMmL3X59jz8cYQSM mwmup1cFi6ui2AHS2ldvJKCBsAunlBj/aP+RYLPjOSWQ+zGWpC5qHCdZGQ075zqTOy+j ID8pH6ePSwojdfsMOgvHUjotUpW0xyfzp5aFooNHCb8/7V1NWXMlGgqHnOOXtbIc8UkQ 7MYv9F/lCCcz3Ww9viUMh1ahxZodbbScQcaWaw17dV911QY4jGido0wF+dtZMGOVJLQv q6kPnQnDKyJaeX2PGdo8LLzUpDLaz5IqFxlEqdGQ4WBZBgWckWW5kf7llL4S1C6m3Yqc swYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7c3f4F9JXtD7QCxK3oYR1z3X5bnl37koui24Jk0cghg=; b=rsweOnYlVLywkWga1Gv7jtP6OhsWiwIr/d1871l3kNp+Fd8d1v0NoIg3tWhARGMl0F EqRI+DHZ3AjzA9E8Max7rDtvRsHnf4r5JyeVqstEgRcqzBRu9uvIKFSyMZCOFQe3q2jC 0gdJTA7gN3K/haPTfnMgC+kGS/xk+DKIP0xhJItFW+f5hLr0WcIIHKzWlb78NC2qDG6G nFj1pgJCNjwQEMxi6J3rw/RRjLBd64cD8nNzzgJtkp3wUur8aJLUVNBTKJjeCsLFR9Zg HWqhxiOkDTVY1kRKsH+ieA6vGslDTpwvSEx/YVDLI/MPcxS1liEDNTLNaVERmwi+GaQ6 5TBg== X-Gm-Message-State: AOAM531olbIc5mk/z3DTLYFpujBLnsJ88GDtiF7lnRuzAIFZPEscwugm XVHaOTbeO+cqQC5mGLmTdogiQ4sH6QALmg== X-Google-Smtp-Source: ABdhPJwziDe8cM+jAlVKD8FDy4LHe1OdWcYnZkqxbqEyx3zUozENTyiCrq/NwUftaAa5zxhwwxSJyw== X-Received: by 2002:a0c:dc91:0:b0:461:cab2:8630 with SMTP id n17-20020a0cdc91000000b00461cab28630mr429563qvk.79.1652590070680; Sat, 14 May 2022 21:47:50 -0700 (PDT) Received: from localhost.localdomain (dsl-149-239.b2b2c.ca. [66.158.149.239]) by smtp.gmail.com with ESMTPSA id 2-20020ac82082000000b002f39b99f672sm4287690qtd.12.2022.05.14.21.47.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 14 May 2022 21:47:50 -0700 (PDT) From: Maxim Cournoyer Date: Sun, 15 May 2022 00:37:48 -0400 Message-Id: <20220515044629.6843-81-maxim.cournoyer@gmail.com> X-Mailer: git-send-email 2.36.0 In-Reply-To: <20220515044629.6843-1-maxim.cournoyer@gmail.com> References: <20220515044629.6843-1-maxim.cournoyer@gmail.com> MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * 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. --- gnu/packages/game-development.scm | 197 ++---------------------------- 1 file 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 @@ (define-public python-pygame-sdl2 (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 @@ (define-public python2-renpy #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 @@ (define-public python2-renpy (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 @@ (define-public python2-renpy (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 @@ (define-public python2-renpy (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 @@ (define-public python2-renpy (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 @@ (define-public python2-renpy 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 @@ (define-public python2-renpy 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")