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 uG13Ibk9rGItuwAAbAwnHQ (envelope-from ) for ; Fri, 17 Jun 2022 10:39:21 +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 yCl6ILk9rGInaQAAG6o9tA (envelope-from ) for ; Fri, 17 Jun 2022 10:39:21 +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 E9513EB28 for ; Fri, 17 Jun 2022 10:39:20 +0200 (CEST) Received: from localhost ([::1]:57634 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o27Vf-0008Mv-S4 for larch@yhetil.org; Fri, 17 Jun 2022 04:39:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:52744) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o27UR-0008Lr-0T for guix-patches@gnu.org; Fri, 17 Jun 2022 04:38:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:49761) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1o27UQ-00071Z-OT for guix-patches@gnu.org; Fri, 17 Jun 2022 04:38:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1o27UQ-0006nU-MU for guix-patches@gnu.org; Fri, 17 Jun 2022 04:38:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#55424] [PATCH 1/4] 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 08:38: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.165545503126049 (code B ref 55424); Fri, 17 Jun 2022 08:38:02 +0000 Received: (at 55424) by debbugs.gnu.org; 17 Jun 2022 08:37:11 +0000 Received: from localhost ([127.0.0.1]:43655 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o27TU-0006lp-JJ for submit@debbugs.gnu.org; Fri, 17 Jun 2022 04:37:10 -0400 Received: from mail-ej1-f65.google.com ([209.85.218.65]:37727) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1o27TP-0006kf-8A for 55424@debbugs.gnu.org; Fri, 17 Jun 2022 04:37:00 -0400 Received: by mail-ej1-f65.google.com with SMTP id gl15so7430491ejb.4 for <55424@debbugs.gnu.org>; Fri, 17 Jun 2022 01:36:59 -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=6iAdcj8DP8G4GtxwirGsAbc+0dfAdCs0LqP5/id2664=; b=YMwQMQScVoB5si134rIMMfhVr1SPoGsN9tkMOhGAFlMPpbRFQCKEsS3ng+hwT+Vsyc bcIYwBEoT9MLA4NvmvAr3ThD84Wc7z7kcaVscL1Jsd4unIuzQ2+zOFP6J04PrK4R8hzJ 2xONNMi1BFWjtpbfGOffNJPdH2z+9zaspglAJ7dqEMr2IZvhv8v1s97ZLrIeg7zm8m+N 8PkfGHxwSjnTB9FThfhzpFgucEh2dmvJPeApxgpXrZ8gwbEnGW4jgUka07m5tA05wHdR YsZFtr1J4UMA6tC69uGLWc0xXM0IzPQHvLSErD91dp6C3OTVtmPixS+Aijyq40KEt99V 4r6w== 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=6iAdcj8DP8G4GtxwirGsAbc+0dfAdCs0LqP5/id2664=; b=i3PKbfEvyRrU212OicIqQSTpJBb2rHqUNxU6GeephuENlRfPhNRjTwMsA0CWluxXQA KdvRswY7mq7a+eh/4Xawj72RHKeXVFcfyK2ogdsIbzW4Q9uJlP6knPvSWG6+PIfjT9p7 KfA6wzgrm9xIO9W5Lw8A56EXPdHttTjuTOhBWkNb9I2/MiOuZKxdtVfJx7eXdwYcFecP tuOta14FNEb4pBap2Qjtwm383pSyCdNAwGS74D7FFwFRV2yzZVSSuGu7vodXMCFrYuEw opcdrIc/YRyBOXCT3Ylipux4qYd76/+CeINoqmvpzGNJ8lb35p5JlzNUnG53Y8sCg6I5 YFew== X-Gm-Message-State: AJIora9ZvW9l4qD3WYMfaTz36VxXSLfsvA6WSGzNPMCuLPgo62I80CWl D0tDZVLjQv9FHi5IWHteBrk= X-Google-Smtp-Source: AGRyM1tjYWL2MUA2OhoBUzWvon3lSJZf2dLYlsIDVlWfSIxATYMt+T1fvLUrO//Nq1HbxoCh0QVuoA== X-Received: by 2002:a17:907:60d1:b0:70a:f154:e3c9 with SMTP id hv17-20020a17090760d100b0070af154e3c9mr8119172ejc.376.1655455013097; Fri, 17 Jun 2022 01:36:53 -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 u24-20020a17090617d800b006feb20b5235sm1859491eje.84.2022.06.17.01.36.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jun 2022 01:36:52 -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: <710ed912d21f90d7349a75a31e6985ab79fda575.camel@gmail.com> 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=1655455161; 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=6iAdcj8DP8G4GtxwirGsAbc+0dfAdCs0LqP5/id2664=; b=O36slEt3BQsZsG0Z77oPtaju0OAlcCnPXjBUYVllJ34VfOxk2L/yohQfJRWXVp3rH4x1TY tYL8UEBd7A34bKXKzNklxbbpPqxPfCnoxN+cIUv9T9DBQynXYA7xt+w2TtyeMqX+jBvT53 ztg56q7QdOr18hzSriCfl3ayQHyjs1exR8irq9eLap5QadkAhFVmRhhNSkcnBLckQHY9Nf PxVO4s2/FYs5R5s5O4+ro+sFWeYwedgwafxRi/WAU2hn/DV0MJxkLuXlY6lJV0tYaaWhSg mr26g3qFrAI0/sM3GDmqZ6CR/orOcsTm+ylQYAG+upf/+//9oAh/0CLnpFWyOQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1655455161; a=rsa-sha256; cv=none; b=HygcCX/kQ4HVq/Acye+P6exvPurruv4mlRd53N0iUb+5phpoITM+LYW06zx7uSKJYQT/hQ HUSpvF/nVoY1LrYcK/mDFsUl67PsGn1m9NpsURfSm7kjcHfQ/FRZxOLvkfF1lsWSVKqdiA srxWCVLo6LCwFTgPUDJcA5jmtNOkYEuMNKqSsnxj2FgFQgdMtAoPou6KJTgs4evLSDELHE FPUfBI2q38RztrmIuogAgvzgZBgq9RMSloutqAcUYLY76G9rUj0cCj1TujK0QsB39+r5a1 9K6v0zOVX6+UhZWyxJMz5MnC/sbtw8CgaKbXA96LG1N72QHbue6WzagA47xSXw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20210112 header.b=YMwQMQSc; 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=YMwQMQSc; 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: E9513EB28 X-Spam-Score: 5.21 X-Migadu-Scanner: scn0.migadu.com X-TUID: mg/aFbsIWLX7 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. --- gnu/packages/game-development.scm | 171 +++++++++++++++++++++++++++++- 1 file changed, 169 insertions(+), 2 deletions(-) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 4c1b97f041..44f8ca57fc 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,173 @@ (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 python2-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\")")) + #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 ((Xvfb (search-input-file (or native-inputs inputs) + "/bin/Xvfb"))) + (setenv "HOME" (getcwd)) + (system (format #f "~a :1 &" Xvfb)) + (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/python3")) + (("@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? "python" (car input))) + inputs)))))))) + #t)))))) + (inputs + `(("renpy.in" ,(search-auxiliary-file "renpy/renpy.in")) + ("python-renpy" ,python-renpy) + ("python-tkinter" ,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