Subject: [PATCH v5 00/22] Update Racket to 8.4. Adjust Chez Scheme packages.

From: Philip McGrath <[email-masked]>
Date: Sat, 26 Feb 2022 08:02:32 -0500

Hi,

I've been ruminating for a while on Liliana's comment
from <https://issues.guix.gnu.org/53878#118>:

On Wednesday, February 23, 2022 3:31:34 PM EST Liliana Marie Prikler wrote:
> [...] there are some things that still
> don't feel right for me – for instance the fact, that seemingly
> unrelated modules now have to pull in racket bootstrap sounds like a
> recipe for trouble.  The final patch in the series also still does too
> much for me to wrap my head around, which makes it difficult to audit.
> 
> Therefore, one question I have w.r.t. updating Racket is whether we
> could theoretically bump the version while keeping the old bootstrap,
> and then adjust the bootstrap by adding all the packages you've made.
> It does seem to be an all or nothing deal when doing the bootstrap
> first, but that need not necessarily hold for bootstrap second.
> 
> Also, accepting for a moment that we might have to move chez-scheme and
> other important things into chez-scheme-and-racket-bootstrap (even
> though I'm not really content with it), I still wonder if we could
> introduce chez-scheme-for-system first (defined as simply chez-scheme
> initially) and adjust the callers, then move chez-scheme while keeping
> the function in chez.scm and finally do the magic with making it either
> chez or racket.
> 

It struck me that the core of the dependency cycle (at least, from one
perspective) is that 'chez-scheme-for-racket' wants to 'inherit' from
'chez-scheme' but use '%racket-origin' for its 'source', and neither of those
are thunked fields.

I realized that, if we just pass the origin some other way than as the
'source' field, we can avoid adding the "chez-and-racket-bootstrap.scm" file
altogether: patch v5 10/22 does the core of that.

I also managed to split up the update to Racket 8.4 (patch v4 15/15) into a
number of smaller steps (or, more precisely, rewrite it now that I knew what
the end result would be). I now have the 'racket-minimal*' packages gradually
evolve into the corresponding 'racket-vm-*' packages (rather than adding the
'racket-vm-*' stack in parallel), then split the new 'racket-minimal' package
out of 'racket'. Hopefully this might be somewhat easier to review. The
downside is there are now 22 patches, rather than 15.

So, here is v5!

 -Philip

P.S.: I've also posted this series
at <https://gitlab.com/philip1/guix-patches/-/tags/guix-issue-53878-v5>.

Philip McGrath (22):
  gnu: Use license prefix in (gnu packages racket).
  gnu: racket: Update to 8.4.
  gnu: racket: Use Git origins for Racket packages.
  gnu: racket-minimal: Use new package style.
  gnu: racket-minimal: Don't configure non-existant catalogs.
  gnu: racket-minimal: Change inheritance to follow bootstrapping.
  gnu: racket-minimal: Add "debug" output.
  gnu: make-installation-layer.rkt: Adjust indentation.
  gnu: racket-minimal: Separate from the Racket VM.
  gnu: racket: Move Chez bootfiles to (gnu packages chez).
  gnu: chez: Add utilities for Chez machine types.
  gnu: racket: Add 'racket-vm-for-system'.
  gnu: chez-scheme: Use "lib/chez-scheme" for search path.
  gnu: chez-scheme: Use shared zlib and lz4.
  gnu: chez-scheme: Use new package style.
  gnu: Add stex.
  gnu: Add chez-nanopass.
  gnu: chez-scheme: Explicitly package bootstrap bootfiles.
  gnu: chez-mit: Support chez-scheme-for-racket.
  gnu: Add chez-scheme-for-racket.
  gnu: chez: Add 'chez-scheme-for-system'.
  gnu: racket-vm-cs: Build with "--enable-scheme".

 gnu/local.mk                                  |    4 +-
 gnu/packages/chez.scm                         | 1264 +++++++----
 gnu/packages/emacs-xyz.scm                    |    2 +-
 gnu/packages/loko.scm                         |    2 +-
 .../racket-enable-scheme-backport.patch       |  465 ++++
 ...acket-gui-tethered-launcher-backport.patch |   26 +
 gnu/packages/racket.scm                       | 1866 ++++++++++++-----
 7 files changed, 2774 insertions(+), 855 deletions(-)
 create mode 100644 gnu/packages/patches/racket-enable-scheme-backport.patch
 create mode 100644 gnu/packages/patches/racket-gui-tethered-launcher-backport.patch

-- 
2.32.0