Message ID | 20220208151316.1897345-1-philip@philipmcgrath.com |
---|---|
Headers |
Return-Path: <guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org> X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 43CF327BBEA; Tue, 8 Feb 2022 16:22:36 +0000 (GMT) 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_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SPF_HELO_PASS,URIBL_BLOCKED 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 C613327BBE9 for <patchwork@mira.cbaines.net>; Tue, 8 Feb 2022 16:22:35 +0000 (GMT) Received: from localhost ([::1]:38724 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org>) id 1nHTGE-00086v-VB for patchwork@mira.cbaines.net; Tue, 08 Feb 2022 11:22:34 -0500 Received: from eggs.gnu.org ([209.51.188.92]:40194) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <Debian-debbugs@debbugs.gnu.org>) id 1nHSBu-0007kg-CU for guix-patches@gnu.org; Tue, 08 Feb 2022 10:14:03 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:54408) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <Debian-debbugs@debbugs.gnu.org>) id 1nHSBu-0007CJ-32 for guix-patches@gnu.org; Tue, 08 Feb 2022 10:14:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from <Debian-debbugs@debbugs.gnu.org>) id 1nHSBt-0006eD-Tn; Tue, 08 Feb 2022 10:14:01 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#53878] [RFC PATCH 0/9] Update Racket to 8.4. Adjust Chez Scheme packages. Resent-From: Philip McGrath <philip@philipmcgrath.com> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces@debbugs.gnu.org> Resent-CC: philip@philipmcgrath.com, guix-patches@gnu.org Resent-Date: Tue, 08 Feb 2022 15:14:01 +0000 Resent-Message-ID: <handler.53878.B.164433320425495@debbugs.gnu.org> Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 53878 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 53878@debbugs.gnu.org Cc: Philip McGrath <philip@philipmcgrath.com> X-Debbugs-Original-To: guix-patches@gnu.org X-Debbugs-Original-Xcc: Philip McGrath <philip@philipmcgrath.com> Received: via spool by submit@debbugs.gnu.org id=B.164433320425495 (code B ref -1); Tue, 08 Feb 2022 15:14:01 +0000 Received: (at submit) by debbugs.gnu.org; 8 Feb 2022 15:13:24 +0000 Received: from localhost ([127.0.0.1]:48304 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces@debbugs.gnu.org>) id 1nHSBI-0006d8-FY for submit@debbugs.gnu.org; Tue, 08 Feb 2022 10:13:24 -0500 Received: from lists.gnu.org ([209.51.188.17]:48924) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <philip@philipmcgrath.com>) id 1nHSBG-0006d1-SU for submit@debbugs.gnu.org; Tue, 08 Feb 2022 10:13:23 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39638) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <philip@philipmcgrath.com>) id 1nHSBG-0007G5-Iy for guix-patches@gnu.org; Tue, 08 Feb 2022 10:13:22 -0500 Received: from [2607:f8b0:4864:20::a35] (port=45788 helo=mail-vk1-xa35.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from <philip@philipmcgrath.com>) id 1nHSBE-000755-Am for guix-patches@gnu.org; Tue, 08 Feb 2022 10:13:22 -0500 Received: by mail-vk1-xa35.google.com with SMTP id l14so9919497vko.12 for <guix-patches@gnu.org>; Tue, 08 Feb 2022 07:13:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=philipmcgrath.com; s=google; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=ZiPiADDfFL30/ot2+angaoDI+VIsbhxDMmgvstn2p9Q=; b=T1AkTCg45QXhHn9mGXkFYD+U+lTrReflBN44jS3p8rOlSVMM3AfpOEgmQ8LxJ1z6CI smpJO5aLymV9EtuaYmpKrgAEMMZpeCQAIwy4rVNZ/m8vY5eEcKACXCFGFSYLKQCHj03q /yTwA9+yDnkjnYtLlw4fH2QgYM0GQ1yIw6eSlh+N8hcQE4jChZsuIHi6c/qJOK8yqIDU GfJVPJxBO0mo/EMa0tdzswqZOMyCPlpk5A3ezZKolqomwN1gFeU7nCgQp9NnFlEzcK1S /GSr8WO97Dv7wkVHF3MJBK7ZTo7RZfrGNfz5TnxbL62e9JzEDjdKRiZXYuWpN2ZL7Ma3 5OrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=ZiPiADDfFL30/ot2+angaoDI+VIsbhxDMmgvstn2p9Q=; b=CdGOfPTzwDLSO140sPUz3Evos9nBWA3xwzBqGSY2PU/yKVIoz7GVTIl8cFda/VUu4S vPaziLJ0J27EzEMjGSI1MhzABuP8FnyHoT1Gl3prUwKqxnzQEUTsQLnVpn3/DNYKJrLj O8eXPzv0Ge1x8UJRwJ+LaQ4MHb76axj38rIN5MFGoOaU+sjgUrj2KTwRGR6ttn2BBOHm ETa6tNkpJSD+a10SN3nAFxLcxRoJNz5t3okPFcARYQZR5GunoWQhy2VMSrLeIB5Yg4Sb u6lsyHAAQjdJKV0VhXvjUyH0/bmD7Pia5So/cTaUKk2lLC+knGJh51f5cKN34SIZk42K Y1nQ== X-Gm-Message-State: AOAM532ecZfSi4I7zaIaVe0xjyTDfiwnudn4XBHsZGKUbVBU4lYHM+BC KUgQ0AF81BtUc0mhco9TjTT3gDwRxf2GonETOg4= X-Google-Smtp-Source: ABdhPJyq4ZVDm6B7VcUQgd5g7UYLBbs9gRbQJ61Rm866OFF6yg55ov/Z3KOm0jdpEEEWPDxW6UThbQ== X-Received: by 2002:a1f:78cd:: with SMTP id t196mr289298vkc.24.1644333198230; Tue, 08 Feb 2022 07:13:18 -0800 (PST) Received: from localhost (c-73-125-98-51.hsd1.fl.comcast.net. [73.125.98.51]) by smtp.gmail.com with UTF8SMTPSA id r26sm662483uaw.12.2022.02.08.07.13.17 for <guix-patches@gnu.org> (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 08 Feb 2022 07:13:18 -0800 (PST) From: Philip McGrath <philip@philipmcgrath.com> Date: Tue, 8 Feb 2022 10:13:16 -0500 Message-Id: <20220208151316.1897345-1-philip@philipmcgrath.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::a35 (failed) Received-SPF: neutral client-ip=2607:f8b0:4864:20::a35; envelope-from=philip@philipmcgrath.com; helo=mail-vk1-xa35.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, PDS_HP_HELO_NORDNS=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_NEUTRAL=0.779, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: <guix-patches.gnu.org> List-Unsubscribe: <https://lists.gnu.org/mailman/options/guix-patches>, <mailto:guix-patches-request@gnu.org?subject=unsubscribe> List-Archive: <https://lists.gnu.org/archive/html/guix-patches> List-Post: <mailto:guix-patches@gnu.org> List-Help: <mailto:guix-patches-request@gnu.org?subject=help> List-Subscribe: <https://lists.gnu.org/mailman/listinfo/guix-patches>, <mailto:guix-patches-request@gnu.org?subject=subscribe> Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" <guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org> X-getmail-retrieved-from-mailbox: Patches |
Series |
Update Racket to 8.4. Adjust Chez Scheme packages.
|
|
Message
Philip McGrath
Feb. 8, 2022, 3:13 p.m. UTC
Racket 8.4 hasn't been released yet (expect it in a matter of days), but I wanted to solicit feedback on these changes early. On the Racket side of things, discussions upstream and with other distribution packagers have clarified what a ``minimal Racket'' package ought to consist of, which in turn suggested a nice new boundary between the lowest-level Racket VM packages, which are concerned with bootstrapping and platform support, and a more uniform use of layered and tethered installations for both the 'racket-minimal' and 'racket' packages. I've also started getting the sources for the other main-distribution Racket packages directly from their respective repositories, rather than extracting them from the bundled tarballs. All in all, it's a few steps closer to the goal of a build system for Racket packages. For Chez Scheme, I set out to package Racket's variant of Chez Scheme---which supports architectures not yet supported upstream, e.g. aarch64---and to share more between the upstream and Racket packages. I also tweaked various things I found along the way: hopefully some are clear improvements, though there are some prime opportunities for bikeshedding about naming things. Let me know what you think! -Philip Philip McGrath (9): gnu: chez-scheme: Move to (gnu packages chez-and-racket-bootstrap). gnu: chez-scheme: Use "lib/chez-scheme" for search path. gnu: chez-scheme: Use shared zlib and lz4. gnu: chez-and-racket-bootstrap: Add utilities for Chez machine types. gnu: Add stex. gnu: Add chez-nanopass. gnu: chez-scheme: Explicitly package bootstrap bootfiles. gnu: Add chez-scheme-racket-variant. gnu: racket: Update to 8.3.900. gnu/local.mk | 5 +- gnu/packages/chez-and-racket-bootstrap.scm | 1108 ++++++++++++ gnu/packages/chez.scm | 628 +++---- gnu/packages/emacs-xyz.scm | 4 +- gnu/packages/loko.scm | 4 +- .../racket-enable-scheme-backport.patch | 465 +++++ ...acket-gui-tethered-launcher-backport.patch | 26 + gnu/packages/racket.scm | 1552 +++++++++++------ 8 files changed, 2850 insertions(+), 942 deletions(-) create mode 100644 gnu/packages/chez-and-racket-bootstrap.scm create mode 100644 gnu/packages/patches/racket-enable-scheme-backport.patch create mode 100644 gnu/packages/patches/racket-gui-tethered-launcher-backport.patch
Comments
Hi, As promised, here is v3! Changes since v2: * 05/15: Fix typo in commit message. * 09/15: Add `%racket-version` and `%racket-origin`. * 11/15: Add `%chez-scheme-for-racket-version`. * 15/15: Use `%racket-version` and `%racket-origin`. Also: * `racket-minimal`: The package to install explicitly is "racket-lib" ("base" is implicit). * `make-installation-layer.rkt`: Adjust workaround for <https://github.com/racket/racket/issues/4133>, because `racket` (but not `racket-minimal`) ends up actually creating the bogus untethered "bin" directory. I've also put these patches up at <https://gitlab.com/philip1/guix-patches/-/tags/guix-issue-53878-v3> -Philip Philip McGrath (15): gnu: chez-scheme: Move to (gnu packages chez-and-racket-bootstrap). gnu: chez-scheme: Use "lib/chez-scheme" for search path. gnu: chez-scheme: Use shared zlib and lz4. gnu: chez-and-racket-bootstrap: Add utilities for Chez machine types. gnu: chez-scheme: Use new package style. gnu: Add stex. gnu: Add chez-nanopass. gnu: chez-scheme: Explicitly package bootstrap bootfiles. gnu: Add racket-vm-cgc. gnu: Add racket-vm-bc. gnu: Add chez-scheme-for-racket. gnu: Add racket-vm-cs. gnu: chez-mit: Support chez-scheme-for-racket. gnu: chez-and-racket-bootstrap: Add 'chez-scheme-for-system'. gnu: racket: Update to 8.4. gnu/local.mk | 5 +- gnu/packages/chez-and-racket-bootstrap.scm | 1074 ++++++++++++ gnu/packages/chez.scm | 628 +++---- gnu/packages/emacs-xyz.scm | 4 +- gnu/packages/loko.scm | 4 +- .../racket-enable-scheme-backport.patch | 465 +++++ ...acket-gui-tethered-launcher-backport.patch | 26 + gnu/packages/racket.scm | 1557 +++++++++++------ 8 files changed, 2821 insertions(+), 942 deletions(-) create mode 100644 gnu/packages/chez-and-racket-bootstrap.scm create mode 100644 gnu/packages/patches/racket-enable-scheme-backport.patch create mode 100644 gnu/packages/patches/racket-gui-tethered-launcher-backport.patch
(sorry, missed "reply all" ...) ---------- Forwarded Message ---------- Subject: Re: [PATCH v3 14/15] gnu: chez-and-racket-bootstrap: Add 'chez- scheme-for-system'. Date: Saturday, February 19, 2022, 5:29:05 PM EST From: Philip McGrath <philip@philipmcgrath.com> To: Liliana Marie Prikler <liliana.prikler@gmail.com> Hi, On Saturday, February 19, 2022 3:00:37 PM EST you wrote: > Am Samstag, dem 19.02.2022 um 01:42 -0500 schrieb Philip McGrath: > > +(define* (chez-scheme-for-system #:optional > > + (system (or (%current-target- > > system) > > + (%current-system)))) > > + "Return 'chez-scheme' unless only 'chez-scheme-for-racket' > > supports SYSTEM, > > +including support for native threads." > > + (if (and (nix-system->chez-machine system) > > + (not (and=> (chez-upstream-features-for-system system) > > + (cut memq 'threads <>)))) > > + chez-scheme-for-racket > > + chez-scheme)) > > Given your previous explanation this series looks clean enough so far, > but this looks like a bug. You probably want > (if (and (nix-system->chez-machine system) > (and=> (chez-upstream-features-for-system system) > (cut memq 'threads <>))) > chez-scheme > chez-scheme-for-racket) > This variant would in particular use chez-scheme-for-racket if nix- > system->chez-machine returns #f. > > I can make that adjustment for you assuming I interpreted this > correctly. Thanks for catching this! I must have gotten myself confused while changing to chez-upstream-features-for-system from the chez-machine->upstream-restriction version. -Philip -----------------------------------------
(... on this one, too) ---------- Forwarded Message ---------- Subject: Re: [PATCH v3 09/15] gnu: Add racket-vm-cgc. Date: Saturday, February 19, 2022, 5:27:39 PM EST From: Philip McGrath <philip@philipmcgrath.com> To: Liliana Marie Prikler <liliana.prikler@gmail.com> Hi, On Saturday, February 19, 2022 3:46:47 PM EST you wrote: > Am Samstag, dem 19.02.2022 um 01:42 -0500 schrieb Philip McGrath: > > * gnu/packages/patches/racket-enable-scheme-backport.patch: New > > patch. > > * gnu/local.mk (dist_patch_DATA): Add it. > > * gnu/packages/chez-and-racket-bootstrap.scm (unbundle-chez- > > submodules, > > %racket-version, %racket-origin, racket-vm-cgc): New variables. > > (chez-scheme)[source]<snippet>: Use 'unbundle-chez-submodules'. > > Something weird happened to me just now trying to build this series. > While compiling emacs-xyz, an error was raised regarding %racket- > version not existing and and import being missing. Assuming that you > didn't mess up an include somewhere, there could be a cycle meaning > we'd have to pass the version and origin by function as I originally > said in my reply to v2. > > I'll clean up my work tree and try to reapply it, but that will take > some time. Since you mentioned re-exports causing issues, I'd like to > ask if you've made a similar experience, but the results got somehow > hidden after the right incantations. I haven't seen errors from emacs-xyz, but I have gotten errors about %racket- version not existing: at the time I thought it was just a problem with incremental rebuilds while moving back and forward through history, but, having just refreshed my memory on more details of the cyclic issues, I think it may be related. I'll send another email presently with details once I've gathered references. For now, I found that `rm gnu/packages/*.go` was enough to get `make` to succeed again. -Philip -----------------------------------------
Hi, On Saturday, February 19, 2022 5:35:22 PM EST Philip McGrath wrote: > On Saturday, February 19, 2022 3:46:47 PM EST you wrote: > > Am Samstag, dem 19.02.2022 um 01:42 -0500 schrieb Philip McGrath: > > > * gnu/packages/patches/racket-enable-scheme-backport.patch: New > > > patch. > > > * gnu/local.mk (dist_patch_DATA): Add it. > > > * gnu/packages/chez-and-racket-bootstrap.scm (unbundle-chez- > > > submodules, > > > %racket-version, %racket-origin, racket-vm-cgc): New variables. > > > (chez-scheme)[source]<snippet>: Use 'unbundle-chez-submodules'. > > > > Something weird happened to me just now trying to build this series. > > While compiling emacs-xyz, an error was raised regarding %racket- > > version not existing and and import being missing. Assuming that you > > didn't mess up an include somewhere, there could be a cycle meaning > > we'd have to pass the version and origin by function as I originally > > said in my reply to v2. > > > > I'll clean up my work tree and try to reapply it, but that will take > > some time. Since you mentioned re-exports causing issues, I'd like to > > ask if you've made a similar experience, but the results got somehow > > hidden after the right incantations. > > I haven't seen errors from emacs-xyz, but I have gotten errors about > %racket- version not existing: at the time I thought it was just a problem > with incremental rebuilds while moving back and forward through history, > but, having just refreshed my memory on more details of the cyclic issues, > I think it may be related. I'll send another email presently with details > once I've gathered references. > > For now, I found that `rm gnu/packages/*.go` was enough to get `make` to > succeed again. This reminded me of one of the commits I mentioned yesterday in <https:// issues.guix.gnu.org/53878#66>: > commit 96db2ff145ecbd962206eae815b065bda7ed3d9f > Author: Ludovic Courtès <ludo@gnu.org> > Date: Tue Sep 7 15:11:46 2021 +0200 > > gnu: racket-minimal: Remove top-level reference to 'chez-scheme'. > > This could cause build errors; for instance, doing: > make && touch gnu/packages/chez.scm && make > > would trigger a "chez-scheme: unbound variable" error. > > * gnu/packages/racket.scm (racket-minimal)[source]: Add 'modules' > field. In 'snippet', remove top-level reference to CHEZ-SCHEME, which > could cause build errors. Simplify snippet. That symptom of an unbound variable error on re-making sounds like what's going on. In <https://issues.guix.gnu.org/48682#7>, Ludo’ explained: On Monday, May 31, 2021 12:23:27 PM EST Ludovic Courtès wrote: > Philip McGrath <philip@philipmcgrath.com> skribis: > > On 5/29/21 4:15 PM, Ludovic Courtès wrote: > >> In general we cannot use #:select for (gnu packages …) modules because > >> that doesn’t play well with circular module dependencies. > > > > Ah, interesting, I'll keep that in mind. I'm used to Racket, where all > > cyclic module dependencies cause errors at compile time. > > Yeah, in hindsight, that’s probably safer… > > > Do you have any advice on what would be good practice? > > For package modules, the main things are: > > 1. Don’t use #:select or #:autoload for (gnu packages …) modules in a > (gnu packages …) module. > > 2. At the top level of a module, only refer to variables within that > module. For instance, the following would be wrong: > > (define-module (gnu packages racket) > #:use-module (gnu packages chez) > …) > > (define whatever > ;; Wrong because ‘chez-scheme’ is defined in another module, > ;; which might be part of a cycle with this one. > (package (inherit chez-scheme) …)) > > (define something > (package > ;; … > (license (package-license chez-scheme)))) ;likewise > > Note that references from ‘inputs’ and ‘arguments’ fields are perfectly > fine (fortunately!) because those fields are “thunked” (their value is > wrapped in a thunk). > My understanding of the semantics of Guile modules is strictly less than the content of that thread. I'm most familiar with Racket modules, and I have some understanding of how those semantics differ from R6RS library semantics. I think I had seized in my memory of № 2 on "at the top level of a module", and I'd filled in my usual (Racket) understanding of "at the top level of a module" as a less formal way of saying "in a module context", in the sense of "expansion contexts".[1] But Ludo’'s examples show that's wrong: those uses of `chez scheme` are in what the "expansion contexts" model would call "expression contexts". Instead, I think rule № 2 prohibits any reference to a variable imported from another (gnu packages ...) module that will be evaluated when the (gnu packages ...) modules are—visited? instantiated? [2][3]—IDK when exactly, but, for practical purposes, any variable reference that is not underneath a lambda abstraction. If that's right, IIUC, it would mean that: (define chez-scheme-for-racket (make-chez-scheme-for-racket ...)) would also be prohibited. On the other hand, uses of `(racket-vm-for-system)` and `(chez-scheme-for- system)` in an `imports` field should still be fine, thanks to the implicit thunks. I think I can can make that work relatively well. The one thing I don't know how to avoid is defining `%racket-version` in both "chez-and-racket- bootstrap.scm" and "racket.scm", but I'll leave a cautionary comment. I'll try to make a v4 with the approach I have in mind. I'd be glad to hear better ideas, though! Especially if anyone knows more about what Guile's module semantics really are. -Philip [1]: https://docs.racket-lang.org/reference/syntax-model.html#%28part._expand-context-model%29 [2]: http://www.r6rs.org/final/html/r6rs/r6rs-Z-H-10.html#node_sec_7.2 [4]: https://docs.racket-lang.org/reference/syntax-model.html#%28part._mod-parse%29
Hi, Here is v4. I believe it avoids the import cycle. The first change from v3 is in patch 09/15, in which I changed "gnu/packages/chez-and-racket-bootstrap.scm" no longer export `%racket-version` or `%racket-origin`. The package `source` field is not thunked, so exporting the latter seems like a particular trap for the unwary. In 14/15, I looked again at the issue with `chez-scheme-for-system` that Liliana reported in <https://issues.guix.gnu.org/53878#89>, and I realized my intention had actually been to return `chez-scheme` if the specified system is completely unsupported (not that it makes much difference ...). I tweaked it slightly and added comments, since I've gotten confused about it more than once now. The changes to avoid the import cycle are primarily in 15/15. As I outlined in <https://issues.guix.gnu.org/53878#93>, I duplicated the definition of `%racket-version` in "gnu/packages/racket.scm" and added comments there and to "gnu/packages/chez-and-racket-bootstrap.scm" warning to keep them in sync. I also had to avoid the use of `%racket-origin` (or `(package-source (racket-vm-for-system))`) outside of lambda abstractions, which in particular meant that it could no longer be used in the `source` field of `racket-minimal`. Instead, I changed `racket-minimal` to handle "base" and "racket-lib" in the same way `racket` does for its component Racket packages. Recalling Liliana's comment in <https://issues.guix.gnu.org/53878#65>, since I was lifting the function to handle Racket package origins anyway to reuse it, I changed it to produce `computed-file`s that take care of extracting the right files from the origin, so `racket-minimal` can now use `union-build` and `racket` no longer needs to replace the build phase. I can immagine a `racket-build-system` helping to improve the situation, since it would presumably add `(racket-vm-for-system)` as an implicit input. It might also be useful to provide special support for packages from the main Racket Git repository: almost always, if you change transform the origin for the Racket VM, you want all of the packages developed in the same repository to use come from the transformed origin, too. But for now, v4 should avoid the import cycle problem without doing anything too ugly. -Philip Philip McGrath (15): gnu: chez-scheme: Move to (gnu packages chez-and-racket-bootstrap). gnu: chez-scheme: Use "lib/chez-scheme" for search path. gnu: chez-scheme: Use shared zlib and lz4. gnu: chez-and-racket-bootstrap: Add utilities for Chez machine types. gnu: chez-scheme: Use new package style. gnu: Add stex. gnu: Add chez-nanopass. gnu: chez-scheme: Explicitly package bootstrap bootfiles. gnu: Add racket-vm-cgc. gnu: Add racket-vm-bc. gnu: Add chez-scheme-for-racket. gnu: Add racket-vm-cs. gnu: chez-mit: Support chez-scheme-for-racket. gnu: chez-and-racket-bootstrap: Add 'chez-scheme-for-system'. gnu: racket: Update to 8.4. gnu/local.mk | 5 +- gnu/packages/chez-and-racket-bootstrap.scm | 1077 +++++++++++ gnu/packages/chez.scm | 628 +++---- gnu/packages/emacs-xyz.scm | 4 +- gnu/packages/loko.scm | 4 +- .../racket-enable-scheme-backport.patch | 465 +++++ ...acket-gui-tethered-launcher-backport.patch | 26 + gnu/packages/racket.scm | 1599 +++++++++++------ 8 files changed, 2871 insertions(+), 937 deletions(-) create mode 100644 gnu/packages/chez-and-racket-bootstrap.scm create mode 100644 gnu/packages/patches/racket-enable-scheme-backport.patch create mode 100644 gnu/packages/patches/racket-gui-tethered-launcher-backport.patch