diff mbox series

[bug#55248,1/7] gnu: racket: Update to 8.5.

Message ID 2290ebb81a8acaa959eff9f60694330e495e3a19.1651594312.git.philip@philipmcgrath.com
State Accepted
Headers show
Series gnu: Update Racket to 8.5 and Chez Scheme to 9.5.8. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Philip McGrath May 3, 2022, 6:33 p.m. UTC
* gnu/packages/patches/racket-gui-tethered-launcher-backport.patch,
gnu/packages/patches/racket-enable-scheme-backport.patch: Delete files.
* gnu/local.mk (dist_patch_DATA): Remove them.
* gnu/packages/chez.scm (chez-scheme-for-racket): Update to 9.5.7.6.
* gnu/packages/racket.scm (%racket-version): Update to 8.4.900.
(%racket-origin)[sha256]: Update accordingly.
[patches]: Remove obsolete patches.
(racket-vm-common-configure-flags): Remove incorrect comment.
(simple-racket-origin): Accept optional #:commit argument.
(racket)[inputs]<2d, datalog, deinprogramm, draw, drracket, expeditor, htdp,
pict, plot, quickscript, racklog, rackunit, redex, scribble, typed-racket,
string-constants, syntax-color, web-server, xrepl>: Update checksums.
<gui, srfi>: Likewise, and remove obsolete backports.
---
 gnu/local.mk                                  |   2 -
 gnu/packages/chez.scm                         |   4 +-
 .../racket-enable-scheme-backport.patch       | 465 ------------------
 ...acket-gui-tethered-launcher-backport.patch |  26 -
 gnu/packages/racket.scm                       |  85 ++--
 5 files changed, 32 insertions(+), 550 deletions(-)
 delete mode 100644 gnu/packages/patches/racket-enable-scheme-backport.patch
 delete mode 100644 gnu/packages/patches/racket-gui-tethered-launcher-backport.patch

Comments

Liliana Marie Prikler May 4, 2022, 6:53 a.m. UTC | #1
Am Dienstag, dem 03.05.2022 um 14:33 -0400 schrieb Philip McGrath:
> * gnu/packages/patches/racket-gui-tethered-launcher-backport.patch,
> gnu/packages/patches/racket-enable-scheme-backport.patch: Delete
> files.
> * gnu/local.mk (dist_patch_DATA): Remove them.
LGTM.
> * gnu/packages/chez.scm (chez-scheme-for-racket): Update to 9.5.7.6.
This...
> * gnu/packages/racket.scm (%racket-version): Update to 8.4.900.
... and this might be done in different commits.  Also, you typo'd in
the ChangeLog, the version ought to be 8.5
> (%racket-origin)[sha256]: Update accordingly.
You don't normally need to mention hash updates, but (*).
> [patches]: Remove obsolete patches.
LGTM.
> (racket-vm-common-configure-flags): Remove incorrect comment.
No.  Unless you address the issue at hand (which I don't want to be a
blocker for this series, mind you), it persists.  If you don't like how
the comment is written currently, you might suggest an alternative
formulation, but people deserve to know that the origtree layout is a
hack.
> (simple-racket-origin): Accept optional #:commit argument.
Is this used anywhere?  If not, I suggest leaving it be for now.
> (racket)[inputs]<2d, datalog, deinprogramm, draw, drracket,
> expeditor, htdp, pict, plot, quickscript, racklog, rackunit, redex,
> scribble, typed-racket, string-constants, syntax-color, web-server,
> xrepl>: Update checksums.
(*) here it makes sense to document the checksum updates, because
they'd otherwise be invisible.
> <gui, srfi>: Likewise, and remove obsolete backports.

Cheers
Philip McGrath May 5, 2022, 9:49 p.m. UTC | #2
Hi,

On 5/4/22 02:53, Liliana Marie Prikler wrote:
> Am Dienstag, dem 03.05.2022 um 14:33 -0400 schrieb Philip McGrath:
>> * gnu/packages/patches/racket-gui-tethered-launcher-backport.patch,
>> gnu/packages/patches/racket-enable-scheme-backport.patch: Delete
>> files.
>> * gnu/local.mk (dist_patch_DATA): Remove them.
> LGTM.
>> * gnu/packages/chez.scm (chez-scheme-for-racket): Update to 9.5.7.6.
> This...
>> * gnu/packages/racket.scm (%racket-version): Update to 8.4.900.
> ... and this might be done in different commits.

Since 'chez-scheme-for-racket' uses the same origin as the Racket VM 
packages, I think the versions have to be updated at the same time, 
short of having a commit where one of them is incorrect or doing 
something needlessly complicated.

> Also, you typo'd in
> the ChangeLog, the version ought to be 8.5

Thanks! (8.4.900 was the release candidate, from which I `git commit 
--amend`ed this patch.)

>> (%racket-origin)[sha256]: Update accordingly.
> You don't normally need to mention hash updates, but (*).

Ok, will drop this but keep below.

>> [patches]: Remove obsolete patches.
> LGTM.
>> (racket-vm-common-configure-flags): Remove incorrect comment.
> No.  Unless you address the issue at hand (which I don't want to be a
> blocker for this series, mind you), it persists.  If you don't like how
> the comment is written currently, you might suggest an alternative
> formulation, but people deserve to know that the origtree layout is a
> hack.

I understand that this is your opinion. I disagree. I don't want to make 
a big deal out of it, but I'm uncomfortable with the fact that `git 
blame` currently attributes to me a statement of opinion which I did not 
write and do not believe.

I could write a lot of prose arguing in favor of --enable-origtree as a 
matter of opinion, but I'd rather spend my time trying to write a 
racket-build-system, which I expect will make its usefulness more 
obvious. For now, I'll limit myself to noting that, while Racket 
supports --enable-unix-style for those who insist on it (a group which 
formerly included me!), if you run the Racket installer script [1] with 
default options, it will install the files that 'racket-vm-cs' and 
similar place in "/opt/racket-vm/" in "/usr/racket". Optionally, the 
installer will then create symlinks is "/usr/bin" etc. pointing to a 
subset of the files that Guix's 'racket-minimal' installs into '#$output'.

To the extent that there is an assertion of fact embedded in:

> > -      ;; XXX: origtree layout is required by some other packages down the
> > -      ;; bootstrap chain.  Remove these flags as soon as we can do without them.

it is not true. The packages which operate on a Racket installation with 
this layout (e.g. 'distro-build' and 'raco-cross') are not part of "the 
bootstrap chain", and the packages which are part of the bootstrap chain 
do not require --enable-origtree, except to the extent that e.g. it is a 
convenient way of telling apart multiple executables named "racket".

>> (simple-racket-origin): Accept optional #:commit argument.
> Is this used anywhere?  If not, I suggest leaving it be for now.

It isn't, but it was extremely useful for building the release 
candidate. That said, I'm ok with not changing it in Guix.

>> (racket)[inputs]<2d, datalog, deinprogramm, draw, drracket,
>> expeditor, htdp, pict, plot, quickscript, racklog, rackunit, redex,
>> scribble, typed-racket, string-constants, syntax-color, web-server,
>> xrepl>: Update checksums.
> (*) here it makes sense to document the checksum updates, because
> they'd otherwise be invisible.
>> <gui, srfi>: Likewise, and remove obsolete backports.

-Philip

[1]: 
https://download.racket-lang.org/releases/8.5/installers/racket-minimal-8.5-x86_64-linux-cs.sh
Liliana Marie Prikler May 6, 2022, 6:37 a.m. UTC | #3
Hi,

Am Donnerstag, dem 05.05.2022 um 17:49 -0400 schrieb Philip McGrath:
> Hi,
> 
> On 5/4/22 02:53, Liliana Marie Prikler wrote:
> > Am Dienstag, dem 03.05.2022 um 14:33 -0400 schrieb Philip McGrath:
> > > * gnu/packages/patches/racket-gui-tethered-launcher-
> > > backport.patch,
> > > gnu/packages/patches/racket-enable-scheme-backport.patch: Delete
> > > files.
> > > * gnu/local.mk (dist_patch_DATA): Remove them.
> > LGTM.
> > > * gnu/packages/chez.scm (chez-scheme-for-racket): Update to
> > > 9.5.7.6.
> > This...
> > > * gnu/packages/racket.scm (%racket-version): Update to 8.4.900.
> > ... and this might be done in different commits.
> 
> Since 'chez-scheme-for-racket' uses the same origin as the Racket VM 
> packages, I think the versions have to be updated at the same time, 
> short of having a commit where one of them is incorrect or doing 
> something needlessly complicated.
Fair enough, go ahead.

> 
> [...]
> > > [patches]: Remove obsolete patches.
> > LGTM.
> > 
> > > (racket-vm-common-configure-flags): Remove incorrect comment.
> > No.  Unless you address the issue at hand (which I don't want to be
> > a blocker for this series, mind you), it persists.  If you don't
> > like how the comment is written currently, you might suggest an
> > alternative formulation, but people deserve to know that the
> > origtree layout is a hack.
> 
> I understand that this is your opinion. I disagree. I don't want to
> make a big deal out of it, but I'm uncomfortable with the fact that
> `git blame` currently attributes to me a statement of opinion which I
> did not write and do not believe.
Well, I'm uncomfortable with the fact that git assigns blame to people.
The wording of the command name is (as many things in git) poorly
chosen, but that's somewhat besides the point.  I'm leaving open the
option of writing a comment that you're more comfortable with, but I'm
not leaving the option of silently removing it.

> I could write a lot of prose arguing in favor of --enable-origtree as
> a matter of opinion, but I'd rather spend my time trying to write a 
> racket-build-system, which I expect will make its usefulness more 
> obvious. 
You can argue in favour of it, but that doesn't change the fact that
this layout breaks assumptions that are held elsewhere.  "Dump
everything into a single directory" has never been a good deployment
strategy, and those who use it tend to regret their decision later.

> For now, I'll limit myself to noting that, while Racket 
> supports --enable-unix-style for those who insist on it (a group
> which formerly included me!), if you run the Racket installer script
> [1] with default options, it will install the files that 'racket-vm-
> cs' and similar place in "/opt/racket-vm/" in "/usr/racket".
> Optionally, the installer will then create symlinks is "/usr/bin"
> etc. pointing to a subset of the files that Guix's 'racket-minimal'
> installs into'#$output'.
This paragraph does not make as much sense to another person as you
believe it does.  If I'm counting correctly, we're talking about three
different configurations right now.  --enable-origtree, --enable-unix-
style, and a default that uses neither of the two.  I don't think we 
can easily draw inferences from either to the others.

> To the extent that there is an assertion of fact embedded in:
> 
> > > -      ;; XXX: origtree layout is required by some other packages
> > > down the
> > > -      ;; bootstrap chain.  Remove these flags as soon as we can
> > > do without them.
> 
> it is not true. The packages which operate on a Racket installation
> with this layout (e.g. 'distro-build' and 'raco-cross') are not part
> of "the bootstrap chain", and the packages which are part of the
> bootstrap chain do not require --enable-origtree, except to the
> extent that e.g. it is a convenient way of telling apart multiple
> executables named "racket".
From my POV "the bootstrap chain" consists of everything from the first
VM to the final racket package.  In that sense, I am sure you
communicated elsewhere that it is very important to get layers going,
and I'm also fairly certain that we can't currently build the VM chain
without origtree either -- at least it would require nontrivial
modification of said packages.

Again, if you have a formulation that is more factual, but doesn't span
several pages like other comments in racket.scm do, you are free to
replace it.  However, for the sake of a racket-build-system even, I
suggest that it would be better if racket's own layout was meaningful.
In other words, why can't racket be more like guile and support
RACKET_LOAD_PATH and RACKET_LOAD_COMPILED_PATH?

> > 
Cheers
Philip McGrath May 7, 2022, 6:39 p.m. UTC | #4
Hi,

On 5/6/22 02:37, Liliana Marie Prikler wrote:
> Hi,
> 
> Am Donnerstag, dem 05.05.2022 um 17:49 -0400 schrieb Philip McGrath:
>> Hi,
>>
>> On 5/4/22 02:53, Liliana Marie Prikler wrote:
>>> Am Dienstag, dem 03.05.2022 um 14:33 -0400 schrieb Philip McGrath:
>>>> (racket-vm-common-configure-flags): Remove incorrect comment.
>>> No.  Unless you address the issue at hand (which I don't want to be
>>> a blocker for this series, mind you), it persists.  If you don't
>>> like how the comment is written currently, you might suggest an
>>> alternative formulation, but people deserve to know that the
>>> origtree layout is a hack.
>>
>> I understand that this is your opinion. I disagree. I don't want to
>> make a big deal out of it, but I'm uncomfortable with the fact that
>> `git blame` currently attributes to me a statement of opinion which I
>> did not write and do not believe.
> Well, I'm uncomfortable with the fact that git assigns blame to people.
> The wording of the command name is (as many things in git) poorly
> chosen, but that's somewhat besides the point.  I'm leaving open the
> option of writing a comment that you're more comfortable with, but I'm
> not leaving the option of silently removing it.
> 
>> I could write a lot of prose arguing in favor of --enable-origtree as
>> a matter of opinion, but I'd rather spend my time trying to write a
>> racket-build-system, which I expect will make its usefulness more
>> obvious.
> You can argue in favour of it, but that doesn't change the fact that
> this layout breaks assumptions that are held elsewhere.  "Dump
> everything into a single directory" has never been a good deployment
> strategy, and those who use it tend to regret their decision later.
> 
>> For now, I'll limit myself to noting that, while Racket
>> supports --enable-unix-style for those who insist on it (a group
>> which formerly included me!), if you run the Racket installer script
>> [1] with default options, it will install the files that 'racket-vm-
>> cs' and similar place in "/opt/racket-vm/" in "/usr/racket".
>> Optionally, the installer will then create symlinks is "/usr/bin"
>> etc. pointing to a subset of the files that Guix's 'racket-minimal'
>> installs into'#$output'.
> This paragraph does not make as much sense to another person as you
> believe it does.  If I'm counting correctly, we're talking about three
> different configurations right now.  --enable-origtree, --enable-unix-
> style, and a default that uses neither of the two.  I don't think we
> can easily draw inferences from either to the others.
> 

Given the vehemence of your opinion, I was assuming some familiarity 
with building Racket. There are various ways of ending up with a 
"Unix-style" installation as implemented by the 
'setup/unixstyle-install' module, including `make unix-style` in the 
top-level directory, `./configure --enable-origtree=no` in the vm source 
directory, and the default answers to the installer script (which embeds 
an archive of the built files). There are some platform-specific 
details, but none that currently affect Guix. (E.g. when building for 
Mac, you can fine-tune the installation style and the use of GTK vs. 
Cocoa for `racket/gui`).

An in-place installation (as produced by --enable-origtree) is 
self-contained and can be freely relocated. A Unix-style installation 
moves parts of an in-place build to better suit a shared FHS prefix 
(e.g. "etc/config.rktd" -> "etc/racket/config.rktd"; "collects" -> 
"share/racket/collects"), injects absolute paths to find parts of 
itself, and generates an uninstall script. But those things are not 
useful in this context: the `racket` executable from the VM packages 
should only be run to build the rest of Racket, and we want to build a 
Racket installation additive, not by mutating it.

>> To the extent that there is an assertion of fact embedded in:
>>
>>>> -      ;; XXX: origtree layout is required by some other packages
>>>> down the
>>>> -      ;; bootstrap chain.  Remove these flags as soon as we can
>>>> do without them.
>>
>> it is not true. The packages which operate on a Racket installation
>> with this layout (e.g. 'distro-build' and 'raco-cross') are not part
>> of "the bootstrap chain", and the packages which are part of the
>> bootstrap chain do not require --enable-origtree, except to the
>> extent that e.g. it is a convenient way of telling apart multiple
>> executables named "racket".
>  From my POV "the bootstrap chain" consists of everything from the first
> VM to the final racket package.  In that sense, I am sure you
> communicated elsewhere that it is very important to get layers going,
> and I'm also fairly certain that we can't currently build the VM chain
> without origtree either -- at least it would require nontrivial
> modification of said packages.
> 

It is true that removing `--enable-origtree` would require nontrivial 
changes, primarily to `configure-layer.rkt`.

> Again, if you have a formulation that is more factual, but doesn't span
> several pages like other comments in racket.scm do, you are free to
> replace it.

I will try to write a strictly factual comment.

> However, for the sake of a racket-build-system even, I
> suggest that it would be better if racket's own layout was meaningful.
> In other words, why can't racket be more like guile and support
> RACKET_LOAD_PATH and RACKET_LOAD_COMPILED_PATH?
> 

I mean, you are certainly free to dislike Racket's model of linking and 
compilation! And, in fact, Racket has enough configuration options and 
compatibility hooks that you could try to use it with e.g. PLTCOLLECTS, 
though it would not be recommended, well-tested, or useful for most 
Racketeers.

With the caveat that all analogies are imprecise, why does Guix prefer 
to avoid relying on LD_LIBRARY_PATH for C libraries? From my 
perspective, Racket avoids at least several (maybe not all, but we shall 
see) of the weaknesses/restrictions described in [1]:

> This is not the end of stat storms, though. Interpreters and language
> run-time systems rely on search paths—GUILE_LOAD_PATH for Guile,
> PYTHONPATH for Python, OCAMLPATH for OCaml, etc.—and are equally prone
> to stormy application startups. Unlike ELF, they do not have a mechanism
> akin to RUNPATH, let alone a run-time search path cache. We have yet to
> find ways to address these.

-Philip

[1]: 
https://guix.gnu.org/en/blog/2021/taming-the-stat-storm-with-a-loader-cache/
M May 7, 2022, 8:01 p.m. UTC | #5
Philip McGrath schreef op za 07-05-2022 om 14:39 [-0400]:
> With the caveat that all analogies are imprecise, why does Guix prefer 
> to avoid relying on LD_LIBRARY_PATH for C libraries?

Because when using LD_LIBRARY_PATH, you not only need to install the
binary in a profile, but also it library dependencies.  Now, suppose
that Guix didn't use RUNPATH or RPATH and instead relied on
LD_LIBRARY_PATH.

Now suppose you have a binary 'vlc' in /usr/bin (on a foreign distro)
and 'openssl.so' in ~/.guix-profile/lib/... . Note that 'vlc' has
'openssl' as a dependency (for streaming over the Internet).

Then suppose you run 'vlc'.  The dynamic linker will see ‘we have a
$LD_LIBRARY_PATH, let's use the openssl.so from ~/.guix-profile/lib
instead of /usr/lib!’.  However, it (could) turn out that the openssls
from the two different locations have an incompatible ABI, causing a
crash or such.

Also, if you depend of LD_LIBRARY_PATH (without wrap-program), then you
can't run things directly from /gnu/store.

In the same manner, GUILE_LOAD_COMPILED_PATH (= Guile's mix of
LD_LIBRARY_PATH (for 'guile') and LIBRARY_PATH (for Guile's compiler,
e.g. the cross-module inlining) is a bit suboptimal, Guile binaries
need to be wrapped (wrap-program / wrap-script).  Would be nice to have
a RUNPATH/RPATH equivalent ...

Greetings,
Maxime.
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index ad7b0a1480..c812881809 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1757,8 +1757,6 @@  dist_patch_DATA =						\
   %D%/packages/patches/ripperx-missing-file.patch		\
   %D%/packages/patches/rpcbind-CVE-2017-8779.patch		\
   %D%/packages/patches/rtags-separate-rct.patch			\
-  %D%/packages/patches/racket-enable-scheme-backport.patch	\
-  %D%/packages/patches/racket-gui-tethered-launcher-backport.patch	\
   %D%/packages/patches/racket-minimal-sh-via-rktio.patch	\
   %D%/packages/patches/remake-impure-dirs.patch			\
   %D%/packages/patches/restic-0.9.6-fix-tests-for-go1.15.patch	\
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index d47225dbe5..a7f75a731a 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -4,7 +4,7 @@ 
 ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Brendan Tildesley <mail@brendan.scot>
-;;; Copyright © 2021 Philip McGrath <philip@philipmcgrath.com>
+;;; Copyright © 2021, 2022 Philip McGrath <philip@philipmcgrath.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -361,7 +361,7 @@  (define-public chez-scheme-for-racket
   (package
     (inherit chez-scheme)
     (name "chez-scheme-for-racket")
-    (version "9.5.7.3")
+    (version "9.5.7.6")
     ;; The version should match `(scheme-fork-version-number)`.
     ;; See racket/src/ChezScheme/s/cmacros.ss c. line 360.
     ;; It will always be different than the upstream version!
diff --git a/gnu/packages/patches/racket-enable-scheme-backport.patch b/gnu/packages/patches/racket-enable-scheme-backport.patch
deleted file mode 100644
index 3a5a4a3d82..0000000000
--- a/gnu/packages/patches/racket-enable-scheme-backport.patch
+++ /dev/null
@@ -1,465 +0,0 @@ 
-From 8d7687842f099e3e7e60d3a83fed58b2c6a92863 Mon Sep 17 00:00:00 2001
-From: Matthew Flatt <mflatt@racket-lang.org>
-Date: Sun, 6 Feb 2022 10:36:09 -0700
-Subject: [PATCH 1/2] Chez Scheme: adapt bootfile build for supplied `Scheme=`
-
-(cherry picked from commit fca1e02349664060e10278ca2ce6577a949bebf5)
-
-(Fixed conflicts by dropping pbchunks and pbarch changes.)
----
- racket/src/ChezScheme/configure  | 15 ++++++++++++++-
- racket/src/ChezScheme/s/Mf-base  |  4 ++--
- racket/src/ChezScheme/s/Mf-cross |  4 +++-
- 3 files changed, 19 insertions(+), 4 deletions(-)
-
-diff --git a/racket/src/ChezScheme/configure b/racket/src/ChezScheme/configure
-index 4515ffc105..0098829091 100755
---- a/racket/src/ChezScheme/configure
-+++ b/racket/src/ChezScheme/configure
-@@ -45,6 +45,7 @@ threads=yes
- nothreads=no
- temproot=""
- help=no
-+forceworkarea=no
- gzipmanpages=yes
- installowner=""
- installgroup=""
-@@ -205,6 +206,9 @@ while [ $# != 0 ] ; do
-     --pb)
-       pb=yes
-       ;;
-+    --force)
-+      forceworkarea=yes
-+      ;;
-     --installprefix=*)
-       installprefix=`echo $1 | sed -e 's/^--installprefix=//'`
-       ;;
-@@ -439,6 +443,7 @@ if [ "$help" = "yes" ]; then
-   echo "  --toolprefix=<prefix>             prefix tool (compiler, linker, ...) names"
-   echo "  --[no]gzip-man-pages              compress manual pages ($gzipmanpages)"
-   echo "  --workarea=<pathname>             build directory ($w)"
-+  echo "  --force                           configure even without boot files"
-   echo "  CC=<C compiler>                   C compiler"
-   echo "  CPPFLAGS=<C preprocessor flags>   C preprocessor flags"
-   echo "  CFLAGS=<C compiler flags>         C compiler flags"
-@@ -721,8 +726,16 @@ case "${flagsmuni}" in
-         ;;
- esac
- 
-+if [ "$w" = "$m" ] ; then
-+    configuringin=""
-+else
-+    configuringin=" in $w"
-+fi
-+
- if [ -f boot/$m/scheme.boot -o -f "$srcdir"/boot/$m/scheme.boot ] ; then
--  echo "Configuring for $m"
-+    echo "Configuring for $m$configuringin"
-+elif [ "$forceworkarea" = yes ] ; then
-+    echo "Configuring for $m$configuringin despite missing boot files"
- else
-   if [ "$m" = "" ] ; then
-       maybem="<machine type>"
-diff --git a/racket/src/ChezScheme/s/Mf-base b/racket/src/ChezScheme/s/Mf-base
-index cc6178c973..1f4a967998 100644
---- a/racket/src/ChezScheme/s/Mf-base
-+++ b/racket/src/ChezScheme/s/Mf-base
-@@ -94,7 +94,7 @@ endif
- # that Scheme and SCHEMEHEAPDIRS are set by Mf-cross to point to the host Scheme
- # implementation
- Scheme = ../bin/$m/scheme${ExeSuffix}
--export SCHEMEHEAPDIRS=../boot/%m
-+export SCHEMEHEAPDIRS=../boot/$m
- export CHEZSCHEMELIBDIRS=.
- 
- # Define the libdirs separator character
-@@ -691,4 +691,4 @@ reset-one:
- 
- .PHONY: run
- run:
--	env SCHEMEHEAPDIRS=../boot/$m/ ../bin/$m/scheme $(ARGS)
-+	env SCHEMEHEAPDIRS=${SCHEMEHEAPDIRS} ${Scheme} $(ARGS)
-diff --git a/racket/src/ChezScheme/s/Mf-cross b/racket/src/ChezScheme/s/Mf-cross
-index d796cbb459..397af59a28 100644
---- a/racket/src/ChezScheme/s/Mf-cross
-+++ b/racket/src/ChezScheme/s/Mf-cross
-@@ -43,5 +43,7 @@ x$(xm).$(m):
- 	$(MAKE) -f Mf-cross m=$(m) xm=$(xm) i=f o=3 d=0 xpatch
- 	mv xpatch x$(xm).$(m)
- 
-+ifneq ($(SCHEMEHEAPDIRS),:)
- # Ensure that cross-compiling "nanopass.so" is rebuilt if the host compiler changed
--nanopass.so: ${SCHEME} ${SCHEMEHEAPDIRS}/petite.boot ${SCHEMEHEAPDIRS}/scheme.boot
-+nanopass.so: ${Scheme} ${SCHEMEHEAPDIRS}/petite.boot ${SCHEMEHEAPDIRS}/scheme.boot
-+endif
--- 
-2.32.0
-
-
-From 26c8e2c1d9b02ad85acef8bda40d92154cf0b699 Mon Sep 17 00:00:00 2001
-From: Matthew Flatt <mflatt@racket-lang.org>
-Date: Sun, 6 Feb 2022 11:03:30 -0700
-Subject: [PATCH 2/2] configure: make `--enable-scheme` work with an executable
-
-When the same Chez Scheme version as used by Racket is already
-available, then `--enable-scheme=...` can supply an executable. For
-cross builds, `--enable-scheme=...` can still supply a build
-directory, instead, as before.
-
-(cherry picked from commit 4f0e76855ce7e86107de495292a553469daf0b3f)
----
- racket/src/ChezScheme/makefiles/Makefile.in |  3 ++
- racket/src/README.txt                       | 30 +++++++++++---
- racket/src/configure                        |  8 +++-
- racket/src/cs/README.txt                    |  6 ++-
- racket/src/cs/c/Makefile.in                 | 44 ++++++++++++++++-----
- racket/src/cs/c/configure                   | 24 +++++++++--
- racket/src/cs/c/configure.ac                | 21 ++++++++--
- 7 files changed, 112 insertions(+), 24 deletions(-)
-
-diff --git a/racket/src/ChezScheme/makefiles/Makefile.in b/racket/src/ChezScheme/makefiles/Makefile.in
-index c396efc851..3998ef9ccd 100644
---- a/racket/src/ChezScheme/makefiles/Makefile.in
-+++ b/racket/src/ChezScheme/makefiles/Makefile.in
-@@ -59,6 +59,9 @@ reset:
- %.boot:
- 	(cd $(workarea) && $(MAKE) $*.boot)
- 
-+auto.boot:
-+	(cd $(workarea) && $(MAKE) $(defaultm).boot)
-+
- # <machine>.bootquick to build boot files for <machine>
- # with o=3 d=0 for the cross compiler, and only after
- # building the kernel for the configured machine
-diff --git a/racket/src/README.txt b/racket/src/README.txt
-index 98647aebce..d77310b4a4 100644
---- a/racket/src/README.txt
-+++ b/racket/src/README.txt
-@@ -354,6 +354,10 @@ variant of MinGW without "libdelayimp.a", get the implementation of
- ========================================================================
- 
- Cross-compilation requires at least two flags to `configure`:
-+`--host=OS` and either `--enable-racket=RACKET` or (for Racket CS)
-+`--enable-scheme-SCHEME`.
-+
-+More information:
- 
-  * `--host=OS`, where OS is something like `i386-gnu-linux` to
-    indicate the target platform.
-@@ -374,11 +378,27 @@ Cross-compilation requires at least two flags to `configure`:
-    run `configure` again (with no arguments) in a "local" subdirectory
-    to create a build for the current platform.
- 
--An additional flag is needed for building Racket CS, unless the flag
--`--enable-racket=auto` is used:
--
-- * `--enable-scheme=DIR`, where DIR is a path that has a "ChezScheme"
--   directory where Chez Scheme is built for the host system.
-+ * `--enable-scheme=SCHEME`, where SCHEME is a Chez Scheme executable
-+   executable that runs on the build platform; the executable must be
-+   the same version as used in Racket built for the target platform.
-+ 
-+   Supplying `--enable-scheme=DIR` is also supported in cross-build
-+   mode, where DIR is a path that has a "ChezScheme" directory where
-+   Chez Scheme is built for the host system.
-+
-+The `--enable-racket=RACKET` and `--enable-scheme=SCHEME` flags are
-+allowed for non-cross builds, too:
-+
-+ * For Racket CS, supplying either selects a Racket or Chez Scheme
-+   implementation used to create boot files to the build platform.
-+   Suppling Chez Scheme is a much more direct path, but when Racket is
-+   supplied, its version does not have to match the version being
-+   built.
-+
-+ * For Racket BC, `--enable-racket=RACKET` selects a Racket for
-+   prepare C sources to cooperate with garbage collection. Its version
-+   needs to be close to the one being built, and potentially exactly
-+   the same version.
- 
- Some less commonly needed `configure` flags are for Racket BC:
- 
-diff --git a/racket/src/configure b/racket/src/configure
-index c9f3ba4419..1b53ec7ce2 100755
---- a/racket/src/configure
-+++ b/racket/src/configure
-@@ -9,6 +9,7 @@ pb_dir="$dir/ChezScheme/boot/pb"
- use_cs=maybe
- use_bc=maybe
- supplied_racket=no
-+supplied_scheme=no
- enable_boothelp=
- 
- # We don't have to detect conflicts like `--enable-csdefault --enable-bcdefault`,
-@@ -34,6 +35,9 @@ for arg in $*; do
-         --enable-racket=*)
-             supplied_racket=yes
-             ;;
-+        --enable-scheme=*)
-+            supplied_scheme=yes
-+            ;;
-         --help | -h)
-             echo $0:
-             echo see --help-bc or --help-cs, since the Racket CS build and the
-@@ -70,8 +74,8 @@ elif test "$use_cs" = "maybe" ; then
- fi
- 
- if test "$use_cs" = "yes" ; then
--    if test $use_bc = no  -a $supplied_racket = no -a ! -d "$pb_dir" ; then
--        echo $0: must have $pb_dir or --enable-racket=... for --enable-csonly
-+    if test $use_bc = no  -a $supplied_racket = no  -a $supplied_scheme = no  -a ! -d "$pb_dir" ; then
-+        echo $0: must have $pb_dir, --enable-racket=... or --enable-scheme=... for --enable-csonly
-         exit 1
-     fi
- 
-diff --git a/racket/src/cs/README.txt b/racket/src/cs/README.txt
-index 2ece417b78..8e6fc57b74 100644
---- a/racket/src/cs/README.txt
-+++ b/racket/src/cs/README.txt
-@@ -39,6 +39,11 @@ build:
-    installed in the "../ChezScheme/boot/pb" directory as described by
-    "../ChezScheme/BUILDING".
- 
-+   Supplying `--enable-scheme=...` is also an option if you alerady
-+   have the same version of Chez Scheme built on the current platform.
-+   Another build will be created, anyway, but more quickly than
-+   without Chez Scheme.
-+
-  * Racket is needed to generate the files in the "schemified"
-    directory from the sources in sibling directories like "../io". The
-    Racket version must be practically the same as the current Racket
-@@ -48,7 +53,6 @@ build:
-    Unlike Chez Scheme boot files, the files generated in "schemified"
-    are human-readable and -editable Scheme code. That provides a way
-    out of bootstrapping black holes, even without BC.
--   
- 
- 
- ========================================================================
-diff --git a/racket/src/cs/c/Makefile.in b/racket/src/cs/c/Makefile.in
-index 54a644a1d9..d73993f0fc 100644
---- a/racket/src/cs/c/Makefile.in
-+++ b/racket/src/cs/c/Makefile.in
-@@ -12,7 +12,9 @@ CS_HOST_WORKAREA_PREFIX = @CS_HOST_WORKAREA_PREFIX@
- SCHEME_HOST_WORKAREA = $(CS_HOST_WORKAREA_PREFIX)$(SCHEME_WORKAREA)
- SCHEME_BIN = $(SCHEME_HOST_WORKAREA)/$(MACH)/bin/$(MACH)/scheme
- SCHEME_INC = $(SCHEME_HOST_WORKAREA)/$(MACH)/boot/$(MACH)
--SCHEME = $(SCHEME_BIN) -B $(SCHEME_INC)/petite.boot -B $(SCHEME_INC)/scheme.boot
-+SCHEME_built = $(SCHEME_BIN) -B $(SCHEME_INC)/petite.boot -B $(SCHEME_INC)/scheme.boot
-+SCHEME_existing = @MAKE_SCHEME_SCHEME@
-+SCHEME = $(SCHEME@USE_SCHEME_MODE@)
- 
- TARGET_MACH = @TARGET_MACH@
- SCHEME_TARGET_INC = $(SCHEME_WORKAREA)/$(TARGET_MACH)/boot/$(TARGET_MACH)
-@@ -88,7 +90,7 @@ mainsrcdir = @srcdir@/../..
- @INCLUDEDEP@ @srcdir@/../../version/version.mak
- 
- cs:
--	$(MAKE) scheme@T_CROSS_MODE@
-+	$(MAKE) scheme@MAKE_SCHEME_MODE@
- 	$(MAKE) racket-so
- 	cd rktio; $(MAKE)
- 	$(MAKE) racketcs
-@@ -121,9 +123,13 @@ racket-so:
- 
- RACKET_SO_ENV = @CONFIGURE_RACKET_SO_COMPILE@
- 
-+TARGET_MACH_built = $(TARGET_MACH)
-+TARGET_MACH_existing = xc-$(TARGET_MACH)
-+XPATCH_FILE = $(SCHEME_WORKAREA)/$(TARGET_MACH@USE_SCHEME_MODE@)/s/xpatch
-+
- CS_PROGS = SCHEME="$(SCHEME)"
- CS_OPTS = COMPRESS_COMP=@COMPRESS_COMP@ @ENABLE_OR_DISABLE_WPO@
--CS_OPTScross = $(CS_OPTS) CSO=$(MACH) CROSS_COMP="--xpatch $(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch"
-+CS_OPTScross = $(CS_OPTS) CSO=$(MACH) CROSS_COMP="--xpatch $(XPATCH_FILE)"
- PASS_COMPILE_DEPS = EXTRA_COMPILE_DEPS="$(SCHEME_INC)/petite.boot $(SCHEME_INC)/scheme.boot"
- 
- build-racket-so:
-@@ -163,6 +169,15 @@ pb-bootquick:
- 	cd $(SCHEME_WORKAREA) && $(MAKE) reset
- 	$(SHELL) $(srcdir)/ready_boot.sh $(MACH) $(SCHEME_WORKAREA)
- 
-+scheme-via-scheme:
-+	$(MAKE) $(SCHEME_WORKAREA)/boot/$(MACH)/scheme.boot
-+	$(MAKE) mach-make
-+
-+$(SCHEME_WORKAREA)/boot/$(MACH)/scheme.boot:
-+	mkdir -p $(SCHEME_WORKAREA)
-+	$(MAKE) config-scheme CONFIG_SCHEME_MODE="$(CONFIG_SCHEME_MODE) --force"
-+	cd $(SCHEME_WORKAREA) && $(MAKE) $(MACH).boot Scheme="$(SCHEME)" SCHEMEHEAPDIRS=: o=3 d=0 what=all
-+
- mach-make:
- 	$(MAKE) config-scheme
- 	cd $(SCHEME_WORKAREA) && $(MAKE)
-@@ -182,24 +197,33 @@ config-scheme:
- 
- scheme-cross:
- 	env MAKE_BOOT_FOR_CROSS=yes SCHEME_SRC="$(SCHEME_DIR)" SCHEME_WORKAREA=$(SCHEME_WORKAREA) MACH="$(TARGET_MACH)" $(BOOTSTRAP_RACKET) "$(SCHEME_DIR)"/rktboot/make-boot.rkt
-+	$(MAKE) finish-scheme-cross
-+
-+finish-scheme-cross:
- 	$(SHELL) $(srcdir)/reset_boot.sh $(TARGET_MACH) $(SCHEME_WORKAREA)
- 	cd $(SCHEME_WORKAREA) && "$(UP_SCHEME_DIR)"/configure @SCHEME_CROSS_CONFIG_ARGS@ $(SCHEME_CONFIG_VARS)
- 	cd $(SCHEME_WORKAREA)/$(TARGET_MACH)/c && $(CHOST_HACK@T_CROSS_MODE@) $(MAKE) o=o cross=t
--	$(MAKE) $(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch
-+	$(MAKE) $(XPATCH_FILE)
-+
-+scheme-cross-via-scheme:
-+	$(MAKE) $(SCHEME_WORKAREA)/boot/$(TARGET_MACH)/scheme.boot MACH=$(TARGET_MACH)
-+	$(MAKE) finish-scheme-cross
- 
- # Rebuild patch file and cross "petite.boot" and "scheme.boot" when older
--# than the build-host "scheme.boot" or when "make-boot.rkt" touchs dummy boot files
--XPATCH_DEPS = $(SCHEME_HOST_WORKAREA)/$(MACH)/boot/$(MACH)/scheme.boot \
--              $(SCHEME_WORKAREA)/boot/$(TARGET_MACH)/scheme.boot
-+# than the build-<host "scheme.boot" or when "make-boot.rkt" touchs dummy boot files
-+XPATCH_DEPS_built = $(SCHEME_HOST_WORKAREA)/$(MACH)/boot/$(MACH)/scheme.boot \
-+                    $(SCHEME_WORKAREA)/boot/$(TARGET_MACH)/scheme.boot
-+XPATCH_DEPS_existing = 
-+XPATCH_DEPS = $(XPATCH_DEPS@USE_SCHEME_MODE@)
- 
--$(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch: $(XPATCH_DEPS)
-+$(XPATCH_FILE): $(XPATCH_DEPS)
- 	$(MAKE) bounce TARGET=build-xpatch-using-host
- 
- build-xpatch-using-host:
- 	cd $(SCHEME_WORKAREA)/$(TARGET_MACH)/s && $(MAKE) -f Mf-cross m=$(MACH) xm=$(TARGET_MACH) Scheme="$(SCHEME_BIN)" SCHEMEHEAPDIRS="$(SCHEME_INC)"
- 
- XPATCH =
--XPATCHcross = --xpatch $(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch
-+XPATCHcross = --xpatch $(XPATCH_FILE)
- 
- racket.boot: racket.so
- 	$(SCHEME) --script $(srcdir)/convert-to-boot.ss @BOOT_COMPRESS_COMP@ $(XPATCH@CROSS_MODE@) racket.so racket.boot $(TARGET_MACH)
-@@ -410,7 +434,7 @@ install-cross:
- 	$(MAKE) compile-xpatch.$(TARGET_MACH)
- 	$(MAKE) library-xpatch.$(TARGET_MACH)
- 
--SCHEME_XPATCH = $(SCHEME_WORKAREA)/$(TARGET_MACH)/s/xpatch
-+SCHEME_XPATCH = $(XPATCH_FILE)
- 
- CROSS_SERVE_DEPS = $(srcdir)/mk-cross-serve.ss $(srcdir)/cross-serve.ss \
-                    $(srcdir)/../expander/env.ss $(srcdir)/../linklet/config.ss
-diff --git a/racket/src/cs/c/configure b/racket/src/cs/c/configure
-index 21695a431a..1eeef57753 100755
---- a/racket/src/cs/c/configure
-+++ b/racket/src/cs/c/configure
-@@ -654,6 +654,9 @@ MINGW
- NOT_OSX
- OSX
- SETUP_BOOT_MODE
-+USE_SCHEME_MODE
-+MAKE_SCHEME_SCHEME
-+MAKE_SCHEME_MODE
- TT_CROSS_MODE
- T_CROSS_MODE
- CROSS_MODE
-@@ -1448,7 +1451,7 @@ Optional Features:
-   --enable-docs           build docs on install (enabled by default)
-   --enable-usersetup      setup user-specific files on install
-   --enable-racket=<path>  use <path> as Racket for build; or "auto" to create
--  --enable-scheme=<path>  use <path> as host's build directory for cross
-+  --enable-scheme=<path>  use <path> as host build for cross
-   --enable-mach=<mach>    use Chez Scheme machine type <mach>
-   --enable-target=<mach>  cross-build for Chez Scheme machine type <mach>
-   --enable-portable       prefer portable to host-specific
-@@ -2867,7 +2870,7 @@ show_explicitly_enabled "${enable_xonx}" "Unix style"
- show_explicitly_enabled "${enable_libzo}" 'Compiled ".zo" files moved to lib'
- 
- show_explicitly_set "${enable_racket}" "Racket"
--show_explicitly_set "${enable_scheme}" "Chez Scheme build directory"
-+show_explicitly_set "${enable_scheme}" "Chez Scheme for build"
- show_explicitly_set "${enable_mach}" "machine type"
- show_explicitly_set "${enable_target}" "cross-build machine type"
- show_explicitly_enabled "${enable_portable}" "portable"
-@@ -4745,9 +4748,21 @@ esac
- 
- SCHEME_DIR=${srcdir}/../../ChezScheme
- MAKE_BUILD_SCHEME=checkout
-+USE_SCHEME_MODE="_built"
-+MAKE_SCHEME_MODE="${T_CROSS_MODE}"
- 
- if test "${enable_scheme}" != "" ; then
--  CS_HOST_WORKAREA_PREFIX="${enable_scheme}/"
-+   if test -d "${enable_scheme}" ; then
-+     # Directory exists, so use it as a build directory
-+     echo "Using supplied Scheme path as a build directory"
-+     CS_HOST_WORKAREA_PREFIX="${enable_scheme}/"
-+   else
-+     # Directory does not exist, so assume it's an executable
-+     echo "Using supplied Scheme path as an executable"
-+     MAKE_SCHEME_MODE="${T_CROSS_MODE}-via-scheme"
-+     MAKE_SCHEME_SCHEME="${enable_scheme}"
-+     USE_SCHEME_MODE="_existing"
-+   fi
- fi
- 
- if test "${enable_racket}" != "" ; then
-@@ -6012,6 +6027,9 @@ SCHEME_CROSS_CONFIG_ARGS="--machine=${TARGET_MACH} --disable-x11 ${cs_auto_flags
- 
- 
- 
-+
-+
-+
- 
- 
- 
-diff --git a/racket/src/cs/c/configure.ac b/racket/src/cs/c/configure.ac
-index 464ebe1760..aaee88156d 100644
---- a/racket/src/cs/c/configure.ac
-+++ b/racket/src/cs/c/configure.ac
-@@ -23,7 +23,7 @@ AC_ARG_ENABLE(compressmore, [  --enable-compressmore   compress compiled code ev
- AC_ARG_ENABLE(compressboot, [  --enable-compressboot   compress boot files])
- m4_include(../ac/path_arg.m4)
- AC_ARG_ENABLE(racket,     [  --enable-racket=<path>  use <path> as Racket for build; or "auto" to create])
--AC_ARG_ENABLE(scheme,     [  --enable-scheme=<path>  use <path> as host's build directory for cross])
-+AC_ARG_ENABLE(scheme,     [  --enable-scheme=<path>  use <path> as host build for cross])
- AC_ARG_ENABLE(mach,       [  --enable-mach=<mach>    use Chez Scheme machine type <mach>])
- AC_ARG_ENABLE(target,     [  --enable-target=<mach>  cross-build for Chez Scheme machine type <mach>])
- m4_include(../ac/portable_arg.m4)
-@@ -81,7 +81,7 @@ show_explicitly_disabled "${enable_compressboot}" "Compressed boot files"
- show_explicitly_enabled "${enable_xonx}" "Unix style"
- m4_include(../ac/path_show.m4)
- show_explicitly_set "${enable_racket}" "Racket"
--show_explicitly_set "${enable_scheme}" "Chez Scheme build directory"
-+show_explicitly_set "${enable_scheme}" "Chez Scheme for build"
- show_explicitly_set "${enable_mach}" "machine type"
- show_explicitly_set "${enable_target}" "cross-build machine type"
- m4_include(../ac/portable_show.m4)
-@@ -504,9 +504,21 @@ esac
- 
- SCHEME_DIR=${srcdir}/../../ChezScheme
- MAKE_BUILD_SCHEME=checkout
-+USE_SCHEME_MODE="_built"
-+MAKE_SCHEME_MODE="${T_CROSS_MODE}"
- 
- if test "${enable_scheme}" != "" ; then
--  CS_HOST_WORKAREA_PREFIX="${enable_scheme}/"
-+   if test -d "${enable_scheme}" ; then
-+     # Directory exists, so use it as a build directory
-+     echo "Using supplied Scheme path as a build directory"
-+     CS_HOST_WORKAREA_PREFIX="${enable_scheme}/"
-+   else
-+     # Directory does not exist, so assume it's an executable
-+     echo "Using supplied Scheme path as an executable"
-+     MAKE_SCHEME_MODE="${T_CROSS_MODE}-via-scheme"
-+     MAKE_SCHEME_SCHEME="${enable_scheme}"
-+     USE_SCHEME_MODE="_existing"
-+   fi     
- fi
- 
- if test "${enable_racket}" != "" ; then
-@@ -821,6 +833,9 @@ AC_SUBST(DIFF_MACH)
- AC_SUBST(CROSS_MODE)
- AC_SUBST(T_CROSS_MODE)
- AC_SUBST(TT_CROSS_MODE)
-+AC_SUBST(MAKE_SCHEME_MODE)
-+AC_SUBST(MAKE_SCHEME_SCHEME)
-+AC_SUBST(USE_SCHEME_MODE)
- AC_SUBST(SETUP_BOOT_MODE)
- AC_SUBST(OSX)
- AC_SUBST(NOT_OSX)
--- 
-2.32.0
-
diff --git a/gnu/packages/patches/racket-gui-tethered-launcher-backport.patch b/gnu/packages/patches/racket-gui-tethered-launcher-backport.patch
deleted file mode 100644
index 1e018eaa79..0000000000
--- a/gnu/packages/patches/racket-gui-tethered-launcher-backport.patch
+++ /dev/null
@@ -1,26 +0,0 @@ 
-From aa792e707b1fbc5cc33691bfaee5828dc3fbebaa Mon Sep 17 00:00:00 2001
-From: Matthew Flatt <mflatt@racket-lang.org>
-Date: Mon, 31 Jan 2022 15:31:22 -0700
-Subject: [PATCH] fix creation of tethered launchers
-
-Related to racket/racket#4133
-
-(cherry picked from commit 563c68432f127729592f234ef30c31e92618b517)
----
- gui-lib/mred/installer.rkt | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/gui-lib/mred/installer.rkt b/gui-lib/mred/installer.rkt
-index b1691472..9ef06c53 100644
---- a/gui-lib/mred/installer.rkt
-+++ b/gui-lib/mred/installer.rkt
-@@ -72,4 +72,5 @@
-    (list "-A" (path->string (find-system-path 'addon-dir)))))
- 
- (define (config-flags)
--  (list "-G" (path->string (find-config-dir))))
-+  (list "-X" (path->string (find-collects-dir))
-+        "-G" (path->string (find-config-dir))))
--- 
-2.32.0
-
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index 471a11dd48..adf3ccfd74 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -195,7 +195,7 @@  (define* (racket-vm-for-system #:optional
       racket-vm-cs
       racket-vm-bc))
 
-(define %racket-version "8.4") ; Remember to update chez-scheme-for-racket!
+(define %racket-version "8.5") ; Remember to update chez-scheme-for-racket!
 (define %racket-commit
   (string-append "v" %racket-version))
 (define %racket-origin
@@ -205,11 +205,9 @@  (define %racket-origin
           (url "https://github.com/racket/racket")
           (commit %racket-commit)))
     (sha256
-     (base32 "1vpl66gdgc8rnldmn8rmb7ar9l057jqjvgpfn29k57i3c5skr8s6"))
+     (base32 "0f9zyhdvbh4xsndrqjzl85j5ziz0rmqi676g9s1lw3h3skq2636h"))
     (file-name (git-file-name "racket" %racket-version))
-    (patches (search-patches "racket-minimal-sh-via-rktio.patch"
-                             ;; Remove by Racket 8.5:
-                             "racket-enable-scheme-backport.patch"))
+    (patches (search-patches "racket-minimal-sh-via-rktio.patch"))
     (modules '((guix build utils)))
     (snippet
      #~(begin
@@ -248,8 +246,6 @@  (define (racket-vm-common-configure-flags)
       ,(string-append "CPPFLAGS=-DGUIX_RKTIO_PATCH_BIN_SH="
                       #$(file-append bash-minimal "/bin/sh"))
       "--disable-strip"
-      ;; XXX: origtree layout is required by some other packages down the
-      ;; bootstrap chain.  Remove these flags as soon as we can do without them.
       "--enable-origtree"
       ,(string-append "--prefix=" #$output "/opt/racket-vm")))
 
@@ -442,17 +438,18 @@  (define (racket-packages-origin name origin specs)
                                         #$name)))
                  specs)))))
 
-(define (simple-racket-origin repo hash specs)
+(define* (simple-racket-origin repo hash specs #:key (commit %racket-commit))
   "Like 'racket-packages-origin', but specialized for packages hosted at
 \"https://github.com/racket/REPO\" with sha256 checksum HASH.  REPO is also
-used to build the name of the resulting store item."
+used to build the name of the resulting store item.  If COMMIT is given, it is
+used instead of %RACKET-COMMIT."
   (racket-packages-origin
    repo
    (origin
      (method git-fetch)
      (uri (git-reference
            (url (format #f "https://github.com/racket/~a" repo))
-           (commit %racket-commit)))
+           (commit commit)))
      (sha256 hash)
      (file-name (git-file-name (string-append "racket-" repo)
                                %racket-version)))
@@ -589,7 +586,7 @@  (define-public racket
       racket-minimal ;; <-- TODO non-tethered layer
       (racket-vm-for-system)
       (simple-racket-origin
-       "2d" (base32 "1zzcz5qyjv7syi41vb8jkxjp1rqgj61zbsdrg0nlc4qy9qsafzgr")
+       "2d" (base32 "0fb5v6058ls08xw3zbmqyr2ym0psm119gl9ffgmhm9w8rs9i4dq7")
        '("2d" "2d-doc" "2d-lib"))
       (simple-racket-origin
        "algol60" (base32 "09kj6asypmc24n29w0izc9p0q8hpga2hpkchsypfwn5c8zpvihlx")
@@ -622,22 +619,22 @@  (define-public racket
        "data" (base32 "10iabgrk9alaggvksnyb0hdq7f1p30pq6pq2bcakvhzpxwiv1f55")
        '("data" "data-doc" "data-enumerate-lib" "data-lib"))
       (simple-racket-origin
-       "datalog" (base32 "0n5j5gnqh7g31mvgx19ggl18hirzbvq2r189lbngmnrmbc7b73fp")
+       "datalog" (base32 "0nf6cy4djpyhfvgpa6yn72apbz9s83gp0qg95pzjd0az4v6qwq1s")
        '(("datalog" ".")))
       (simple-racket-origin
        "db" (base32 "1n02ja0yj3mjjhmz0yv04yfhyvrsznbljn8bjviyfxnm4xf9rcc5")
        '("db" "db-doc" "db-lib"))
       (simple-racket-origin
-       "deinprogramm" (base32 "1is6fapgv6rxfjz47nh6qf3kh7y7sjdinakaxqffi46gf1al8prd")
+       "deinprogramm" (base32 "0g8flr1qg3bcyhdinqhs4w7dyisaqyailbxrjgd2a7zlqmdyicfr")
        '("deinprogramm" "deinprogramm-signature"))
       (simple-racket-origin
        "distributed-places" (base32 "1dajpkj9balqcpv6cdk9hwjz592h1vq8rrx5vncariiac4vbdpa0")
        '("distributed-places" "distributed-places-doc" "distributed-places-lib"))
       (simple-racket-origin
-       "draw" (base32 "1xgjfbh70hqw67z88iqqajg98d04qwbzn6im2wj47rs28jxlm9ly")
+       "draw" (base32 "1fpk85rs2crd63bxnmwj2pysisd62pxcqaip01si67dv1ri8ff92")
        '("draw" "draw-doc" "draw-lib"))
       (simple-racket-origin
-       "drracket" (base32 "0m3l4an3nq2ycd1h287s1az2v2zprjbzd8if2x7d5r71vaj4i00c")
+       "drracket" (base32 "0dipnz92c63zxys9z1kl5215rm7arc35g9r8bs8ivp96p75mljnz")
        '("drracket"
          "drracket-plugin-lib"
          "drracket-tool"
@@ -657,7 +654,7 @@  (define-public racket
        "errortrace" (base32 "14m7rhaxngj36070iw15am434hm438pfgmwjfsiqhsglz4pcxhip")
        '("errortrace" "errortrace-doc" "errortrace-lib"))
       (simple-racket-origin
-       "expeditor" (base32 "07djzxs6307l51mcsk3yr2g4g47ayxa3878g7sf5xhqdr4hd9vxf")
+       "expeditor" (base32 "0mjfwb4wzwsg5xj3k6cmik0va432n56rp5h7rxx1c2yy3prh1j7q")
        '("expeditor" "expeditor-doc" "expeditor-lib"))
       (simple-racket-origin
        "frtime" (base32 "0ydz2yn8vvv6z7brwlswcyx0f31a6y6d443i89rysfvd2xkhpfd5")
@@ -670,25 +667,14 @@  (define-public racket
       (simple-racket-origin
        "games" (base32 "0kpn3izlx1ccd0pj0dnvmnrhny51b85xy418a7psj70lz8j8415d")
        '(("games" ".")))
-      (racket-packages-origin
-       "gui" (origin
-               (method git-fetch)
-               (uri (git-reference
-                     (url "https://github.com/racket/gui")
-                     (commit %racket-commit)))
-               (sha256 (base32
-                        "1x33jgrx3r32k7hgwr591z3xqv1m2r5nc4km2fnxv0ak2xa0j3gj"))
-               (patches
-                ;; remove in Racket 8.5
-                ;; see https://github.com/racket/racket/issues/4133
-                (search-patches "racket-gui-tethered-launcher-backport.patch"))
-               (file-name (git-file-name "racket-gui" %racket-version)))
+      (simple-racket-origin
+       "gui" (base32 "0hqryw3md67j5z4d6bv5qx75w8z1vjxfixabf2xq9bj6k43yzzmi")
        '("gui" "gui-doc" "gui-lib" "tex-table"))
       (simple-racket-origin
        "gui-pkg-manager" (base32 "1ji9448d723nklqvycwdswj0ni28sabrncag14f9mx47did5myb5")
        '("gui-pkg-manager-lib"))
       (simple-racket-origin
-       "htdp" (base32 "0r4ykybcpr10y2db9rlza9pr0xh58nd7ac389mjcxp8g386hgihl")
+       "htdp" (base32 "199qchdq6db6m2n4j861hiy4nxd6hg1qva16lhhdbfj274qmcplg")
        '("htdp" "htdp-doc" "htdp-lib"))
       (simple-racket-origin
        "html" (base32 "18n1jnjgzfknc8nv8dppi85nb8q08gqdwkg6hfjk08x0p00anx2x")
@@ -756,7 +742,7 @@  (define-public racket
        "pconvert" (base32 "00czi0p399mmyrvxyrs5kniizpkqfxyz2ncxqi2jy79a7wk79pb1")
        '("pconvert-lib"))
       (simple-racket-origin
-       "pict" (base32 "0g1iwdr6qh1xb0crhj96830vjjnbds409xbpqn7j5sh0ksy6vr5x")
+       "pict" (base32 "0v7a3l77swsbh80mnb9rakdwgw7s66ji0mall7qcqfwyg1b4zmlv")
        '("pict" "pict-doc" "pict-lib"))
       (simple-racket-origin
        "pict-snip" (base32 "081nwiy4a0n4f7xws16hqbhf0j3kz5alizndi3nnyr3chm4kng6x")
@@ -771,7 +757,7 @@  (define-public racket
        "planet" (base32 "0r2yqrzrmdjjyr14k6hhlzc5kzrcx3583m1s02mhrcmpfw0s85w9")
        '("planet" "planet-doc" "planet-lib"))
       (simple-racket-origin
-       "plot" (base32 "07kq32si34ybcwz8idxxcrzssg8diyrp1nfgkcj0mmvr45321zm7")
+       "plot" (base32 "04871pspbm0q3bz5896sa3jw2rp9i6jf0b5aivrxfp56vxxd2ybb")
        '("plot" "plot-compat" "plot-doc" "plot-gui-lib" "plot-lib"))
       (simple-racket-origin
        "preprocessor" (base32 "1p5aid58ifnjy4xl0ysh85cq39k25661v975jrpk182z3k5621mg")
@@ -786,7 +772,7 @@  (define-public racket
                              (url "https://github.com/Metaxal/quickscript")
                              (commit %racket-commit)))
                        (sha256 (base32
-                                "100g3yqhbjdq06b6l6d72ywsw29awgy8crqg33wj7h12xq07nzcr"))
+                                "00sf5nw09aacd0l4a4cknnffvcs95p596im3blsdvfz5ck6jdwl8"))
                        (file-name (git-file-name "Metaxal-quickscript" %racket-version)))
        '(("quickscript" ".")))
       (simple-racket-origin
@@ -807,10 +793,10 @@  (define-public racket
                          (git-file-name "jeapostrophe-racket-cheat" %racket-version)))
        '(("racket-cheat" ".")))
       (simple-racket-origin
-       "racklog" (base32 "1rgrvwy3kr9b9w5cghsffiv3ly00yfvvzr5xaaw83g1w7yin0mnb")
+       "racklog" (base32 "0fbq0fpfb3l6h7h772dvkmlzlk2dnq5f8296xx1qxhhwypibqzr9")
        '(("racklog" ".")))
       (simple-racket-origin
-       "rackunit" (base32 "057z31rja6h3nabh5b2xgwfrzmlm6h1cv1qcgf3xfy4g2q5dqn5p")
+       "rackunit" (base32 "0vfwcddzrgrdv5awjka7m0jzqhqvfc5wlkih83a670y96496a83n")
        '("rackunit"
          "rackunit-doc"
          "rackunit-gui"
@@ -826,7 +812,7 @@  (define-public racket
        "realm" (base32 "0hxcgla08iack54j8v40fj51811chpy66ym2zq76zb52c7kzn0hi")
        '(("realm" ".")))
       (simple-racket-origin
-       "redex" (base32 "0vlgxbnbgrlihk1hh5zd6hsc4566ldi4q76f87z5vai54dxkwy2f")
+       "redex" (base32 "0a1fl5s80k3j3xh3lri8886ql443m7pmgv18y7whzlmsd7x8rdpr")
        '("redex"
          "redex-benchmark"
          "redex-doc"
@@ -841,7 +827,7 @@  (define-public racket
        "scheme-lib" (base32 "0pcf0y8rp4qyjhaz5ww5sr5diq0wpcdfrrnask7zapyklzx1jx8x")
        '(("scheme-lib" ".")))
       (simple-racket-origin
-       "scribble" (base32 "0rgvnsykrxkah6s5fw1vyp9lxsb4z9w6hgwk5j6wbwjp2gsfczbm")
+       "scribble" (base32 "0fbb7xgz95y90247hfc1a19v7ry8m6blvv4y8irdgzhjvik70zb3")
        '("scribble"
          "scribble-doc"
          "scribble-html-lib"
@@ -873,35 +859,24 @@  (define-public racket
        "snip" (base32 "01r9wc5xr3q3n4yyif6j0a37rgdzmpslxn05k13ksik73b3wj6hj")
        '("snip" "snip-lib"))
       (simple-racket-origin
-       "typed-racket" (base32 "1462kj9yswsxbnw71casylzlvhd7cxrml2v9j7rcsnn9hmrqx4vv")
+       "typed-racket" (base32 "05xlyjrx3m8xrrrw1xmfb1807qa5aqfl0zp9bdxwh2z7cfxaii09")
        '("source-syntax"
          "typed-racket"
          "typed-racket-compatibility"
          "typed-racket-doc"
          "typed-racket-lib"
          "typed-racket-more"))
-      (racket-packages-origin
-       "srfi" (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "https://github.com/racket/srfi")
-                      ;; Includes an FSDG fix: return to %racket-commit in 8.5.
-                      ;; See <https://github.com/racket/srfi/pull/15>.
-                      (commit "7243029b135741ce08ae30f877e2f49a2a460b22")))
-                (sha256 (base32
-                         "0aqbcdv2dfc2xnk0h6zfi56p7bpwqji8s88qds3d03hhh9k28gvn"))
-                ;; Use the relevant version for srfi-doc and srfi-lib,
-                ;; since we're using a newer commit than the v8.4 tag.
-                (file-name (git-file-name "racket-srfi" "1.1")))
+      (simple-racket-origin
+       "srfi" (base32 "0aqbcdv2dfc2xnk0h6zfi56p7bpwqji8s88qds3d03hhh9k28gvn")
        '("srfi" "srfi-doc" "srfi-lib" "srfi-lite-lib"))
       (simple-racket-origin
-       "string-constants" (base32 "1qizjq4n0hzdgdcjjpr94464gsywpsk2g9mnvwzqr7dcqbrsfvn6")
+       "string-constants" (base32 "1rjs0gyw9hsiglwxnimz272v9xj1gwjxrnzh4qbsxkvdaphvi38m")
        '("string-constants" "string-constants-doc" "string-constants-lib"))
       (simple-racket-origin
        "swindle" (base32 "164gdsphjzdl2vv7zxz7dfk9jwax8njpmim6sidm8qz8a8589y67")
        '(("swindle" ".")))
       (simple-racket-origin
-       "syntax-color" (base32 "1vf2fc3qvx8a1igi7swsg8gaqhx786sa0vqxd18xhbsidfgb5ywp")
+       "syntax-color" (base32 "1xf3rl8687c1nar4kkgkvyncwi0gl696rif0iqhffg730fk457gi")
        '("syntax-color" "syntax-color-doc" "syntax-color-lib"))
       (simple-racket-origin
        "trace" (base32 "070ihla5j796hdarn5wxdwn4xj0xnkm50shgh49jy994mribvhia")
@@ -910,13 +885,13 @@  (define-public racket
        "unix-socket" (base32 "02dfwas5ynbpyz74w9kwb4wgb37y5wys7svrlmir8k0n9ph9vq0y")
        '("unix-socket" "unix-socket-doc" "unix-socket-lib"))
       (simple-racket-origin
-       "web-server" (base32 "1zgb6jl7zx6258ljs8f3lvryrq5n5zpd71dqzr698m92kw3x2pkn")
+       "web-server" (base32 "1g4x79ym3mgxv4f3z3z84j12355pf44pjlzlb7f0h6r0i7p0cbjd")
        '("web-server" "web-server-doc" "web-server-lib"))
       (simple-racket-origin
        "wxme" (base32 "1qp5gr9gqsakiq3alw6m4yyv5vw4i3hp4y4nhq8vl2nkjmirvn0b")
        '("wxme" "wxme-lib"))
       (simple-racket-origin
-       "xrepl" (base32 "12zjgsy5zqm3fck3ihg4a70wj56s2cnnjyb4jlfi5nnsfqyrnxg3")
+       "xrepl" (base32 "19svg0jfs656bld5ikqipz3a5szk5k02zq5fh43209qw527dnfbk")
        '("xrepl" "xrepl-doc" "xrepl-lib"))))
     (build-system gnu-build-system)
     (arguments