From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id 4OiSIQObrGJ7twAAbAwnHQ (envelope-from ) for ; Fri, 17 Jun 2022 17:17:23 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id sCWlIAObrGITHQAAG6o9tA (envelope-from ) for ; Fri, 17 Jun 2022 17:17:23 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 274CF21EC9 for ; Fri, 17 Jun 2022 17:17:23 +0200 (CEST) Received: from localhost ([::1]:33686 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o2Dis-0006WL-3K for larch@yhetil.org; Fri, 17 Jun 2022 11:17:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46262) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o2DiY-000660-Ib for guix-patches@gnu.org; Fri, 17 Jun 2022 11:17:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:52779) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1o2DiY-0003Yk-AW for guix-patches@gnu.org; Fri, 17 Jun 2022 11:17:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1o2DiY-0002Nl-78 for guix-patches@gnu.org; Fri, 17 Jun 2022 11:17:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#55424] [PATCH v2 1/6] gnu: Add back the distinction between python-renpy and renpy. References: <20220515044412.6697-1-maxim.cournoyer@gmail.com> In-Reply-To: <20220515044412.6697-1-maxim.cournoyer@gmail.com> Resent-From: Liliana Marie Prikler Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 17 Jun 2022 15:17:02 +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: Maxim Cournoyer Cc: 55424@debbugs.gnu.org Received: via spool by 55424-submit@debbugs.gnu.org id=B55424.16554790099095 (code B ref 55424); Fri, 17 Jun 2022 15:17:02 +0000 Received: (at 55424) by debbugs.gnu.org; 17 Jun 2022 15:16:49 +0000 Received: from localhost ([127.0.0.1]:46667 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o2DiK-0002Mc-2I for submit@debbugs.gnu.org; Fri, 17 Jun 2022 11:16:48 -0400 Received: from mail-ej1-f68.google.com ([209.85.218.68]:42877) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o2DiE-0002Lk-5e for 55424@debbugs.gnu.org; Fri, 17 Jun 2022 11:16:43 -0400 Received: by mail-ej1-f68.google.com with SMTP id g25so9354020ejh.9 for <55424@debbugs.gnu.org>; Fri, 17 Jun 2022 08:16:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:date:subject:mime-version:to:cc:content-transfer-encoding :message-id; bh=7TQFwlmaU9KuFiQG/j0klGGgWclTXx6e0Uh1SnY6RHg=; b=Qe1Rj85yWq1BE2QAblhlo17pFSJJcHHVQ+ckoYjrr234OfBxBnLUokmVFDz1UdZWbS u3WDQXDAPtl66Fu8nYEdscekKdyVnqXvLBQ6Ktwy83cZOTJmoZT4YnuJAZTcW8Dl6uFJ RFeSToI9eN4hVNTm7oRVyj3DlwzwUTSI6GVpbIdR2A7ALnYDNUn4+OiCHmjxCh68NVq2 R2HGTDHXRzkP0H2nGieqIhLmhxGRFo9s3k5yrR624ZwX01KKBbN8lwrKmTwgx7LJKjls LFuNwkgcCyiHZCccGsnxI0wl4vAT4RzLSpRhBBuCUGDs89znikh2Z3pF3F23xE/M7Ew6 TKSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:date:subject:mime-version:to:cc :content-transfer-encoding:message-id; bh=7TQFwlmaU9KuFiQG/j0klGGgWclTXx6e0Uh1SnY6RHg=; b=H1SN16a6AZGHW/5NcBNOinhwzxDlR62kDPmSRYjpl65oYCJNTpaL6MI2lxrABXrnIB uQy9w4+VllG1pDPn8oZbpAjfEO9iew4sSC9Msl6RVApau6BonYe7mCbRmVg2uG/yLsxG 36PrZCx1FtiDHcdlxozTCAgIvB2uvRtzu82kYTWAgwKd2w2WBJBxmiara2mLdMMth1uR QO1nGolCkKcDWAYg3mTbt9Sq/zqeWGJkVCSQGyckxwt/wDhHEkQZUpLhPFxzX2Wo5dw8 JbowlGyn1GCJZKLaeWZi//RSJuHzHp59MOtapoXNgYRDYpV3+7jp9vn1fNNSZICJ1KF2 WpQg== X-Gm-Message-State: AJIora+01NYLt70g8IucCZBb2WgxTLaA3KNyJ/HDeVlj+mMdKxIk9wxC +gs2wvzp7Ot2YfPCjhGfGSk= X-Google-Smtp-Source: AGRyM1vadLZEegM0qG3dIClkjIeB3m6IU/XI1oc4dOreSKf9w1ogVETu58cZ1cfJj3OMp/Jeht5pYA== X-Received: by 2002:a17:907:3f0b:b0:719:945a:ac46 with SMTP id hq11-20020a1709073f0b00b00719945aac46mr9082864ejc.87.1655478996054; Fri, 17 Jun 2022 08:16:36 -0700 (PDT) Received: from nijino.fritz.box (85-127-52-93.dsl.dynamic.surfer.at. [85.127.52.93]) by smtp.gmail.com with ESMTPSA id u20-20020aa7d554000000b0042a2d9af0f8sm3801083edr.79.2022.06.17.08.16.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jun 2022 08:16:35 -0700 (PDT) From: Liliana Marie Prikler Date: Fri, 17 Jun 2022 08:49:05 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Message-ID: 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+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1655479043; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=7TQFwlmaU9KuFiQG/j0klGGgWclTXx6e0Uh1SnY6RHg=; b=oZBuENNA+yUAj4vGBi4rFgjPaigHjEIZL1P+9gWb/MblBxs5eC7VlJU6lXEj7wV9O/Usuj ImgqS6/gbjbVjXwCWlp9sUmlwRHSfH1xbst4mUpcnK685Az3tmeAIiGcUA1bYzS7dqqKJC XCMA4InCn7GxfJ0X5ksUnVp1PuCU8LMJjlq6eioOqcipGL9MZgAQ1vdVwtoHaEu8PfDBT+ fsM2YDrvXLGRK6KhiZucdRacuMEJus0Y1Qs9O6x2o+WXn1fL0YW5rgdTEeHr/H1mM7pqpi 2rj+p0Xkv6Ym3NHNyFoiUhddr0KYk5pU1olI0Qp5+L3zIojlQk/ishbaf85lgw== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1655479043; a=rsa-sha256; cv=none; b=fUcJuT13ggj/uo63tORrBpVkkh4aWlTd+gePNKB+PjM9cVW39zo0Nqcl/RcvFc1bksRv7g 6HX1Car6hcjABE9RTDN7dzshQ1YlxQ0GpcRo+6pjEYimNOcQM2pACy3kfABOgJh2Zz0s3m uXFGPXzaWCP63XKJFejyQsrJDgX6xz8TahqXqXF6Mn6tSNNlVnBVPbRmD75Ss/Ysfk9Zbt w6um+LNds/0x4gOJFGndL3Y8v4lmFA9viZrZoFMeKwGgEBW5B6jhohl6lYPKtFb+Pd6rbw KoWIaSB9cLOD+YYyUrgyMjWrSi1J6fbdlchPWNBxT9L45hrtrq8cTqRTsmhBnQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20210112 header.b=Qe1Rj85y; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: 5.21 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20210112 header.b=Qe1Rj85y; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 274CF21EC9 X-Spam-Score: 5.21 X-Migadu-Scanner: scn0.migadu.com X-TUID: 1OiyNeRgVMIK This partially reverts commit 9f1bd63fb5b6916f07d454ffde27cd3a66c95bb5. Note, that with this patch renpy fails to build due to incompatibilities with Python 3. * gnu/packages/game-development.scm (renpy): Split into ‘python-renpy’ for the python modules and ‘renpy’ for the games and binaries. --- Hi Maxim (and others reading), I squashed in some of your suggestions towards later packages, that seem to be no-brainer modernizations into this patch. In particular, it now uses search-input-file rather than which and already has bash-minimal. Cheers gnu/packages/game-development.scm | 167 +++++++++++++++++++++++++++++- 1 file changed, 165 insertions(+), 2 deletions(-) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 4c1b97f041..099268d58c 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -1257,9 +1257,9 @@ (define-public python-pygame-sdl2 developed mainly for Ren'py.") (license (list license:lgpl2.1 license:zlib))))) -(define-public renpy +(define-public python-renpy (package - (name "renpy") + (name "python-renpy") (version "7.4.11") (source (origin @@ -1342,6 +1342,169 @@ (define-public renpy are only used to bootstrap it.") (license license:expat))) +(define-public renpy + (package + (inherit python-renpy) + (name "renpy") + (build-system python-build-system) + (arguments + `(#:tests? #f ; see python-renpy + #: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") + (search-input-file inputs "/bin/python3"))) + (substitute* "launcher/game/front_page.rpy" + (("xdg-open") + (search-input-file inputs "/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\")")))) + (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 ((Xvfb (search-input-file (or native-inputs inputs) + "/bin/Xvfb"))) + (setenv "HOME" (getcwd)) + (system (format #f "~a :1 &" Xvfb)) + (setenv "DISPLAY" ":1")))) + (replace 'build + (lambda _ + (invoke "python" "renpy.py" "launcher" "quit") + (invoke "python" "renpy.py" "the_question" "quit") + (invoke "python" "renpy.py" "tutorial" "quit"))) + (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 python-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/python3")) + (("@RENPY_BASE@") (string-append out "/share/renpy"))) + (chmod bin/renpy #o755)))) + + (add-after 'install 'install-games + (lambda* (#:key inputs 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 \"$@\"" + (search-input-file inputs "/bin/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"))) + (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? "python" (car input))) + inputs)))))))))))))) + (inputs + `(("bash-minimal" ,bash-minimal) + ("renpy.in" ,(search-auxiliary-file "renpy/renpy.in")) + ("python-renpy" ,python-renpy) + ("python:tk" ,python "tk") + ("python" ,python) ; 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") -- 2.36.1