Subject: [bug#53878] [PATCH v4 15/15] gnu: racket: Update to 8.4.

From: Liliana Marie Prikler <[email-masked]>
Date: Sun, 20 Feb 2022 11:16:04 +0100

Hi,

Am Sonntag, dem 20.02.2022 um 01:06 -0500 schrieb Philip McGrath:
> * gnu/packages/patches/racket-gui-tethered-launcher-backport.patch:
> New
> file.
> * gnu/local.mk (dist_patch_DATA): Add it.
> * gnu/packages/chez-and-racket-bootstrap.scm (racket-vm-for-system):
> New
> procedure.
> * gnu/packages/racket.scm (racket-minimal, racket): Update to 8.4.
> Rewrite to use 'racket-vm-for-system', label-less inputs, G-
> expressions,
> and Git origins for main-distribution packages.
> ---
>  gnu/local.mk                                  |    3 +-
>  gnu/packages/chez-and-racket-bootstrap.scm    |   15 +-
>  ...acket-gui-tethered-launcher-backport.patch |   26 +
>  gnu/packages/racket.scm                       | 1596 +++++++++++----
> --
>  4 files changed, 1118 insertions(+), 522 deletions(-)
>  create mode 100644 gnu/packages/patches/racket-gui-tethered-
> launcher-backport.patch
> 
> diff --git a/gnu/local.mk b/gnu/local.mk
> index 5fcbe3a391..2fb4440eee 100644
> --- a/gnu/local.mk
> +++ b/gnu/local.mk
> @@ -41,7 +41,7 @@
>  # Copyright © 2020 Vinicius Monego <[email-masked]>
>  # Copyright © 2021 Björn Höfling <[email-masked]>
>  # Copyright © 2021 Greg Hogan <[email-masked]>
> -# Copyright © 2021 Philip McGrath <[email-masked]>
> +# Copyright © 2021, 2022 Philip McGrath <[email-masked]>
>  # Copyright © 2021 Arun Isaac <[email-masked]>
>  # Copyright © 2021 Sharlatan Hellseher <[email-masked]>
>  # Copyright © 2021 Dmitry Polyakov <[email-masked]>
> @@ -1751,6 +1751,7 @@ dist_patch_DATA
> =                                         \
>    %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-and-racket-bootstrap.scm
> b/gnu/packages/chez-and-racket-bootstrap.scm
> index e837d49c63..b779099fb3 100644
> --- a/gnu/packages/chez-and-racket-bootstrap.scm
> +++ b/gnu/packages/chez-and-racket-bootstrap.scm
> @@ -46,7 +46,8 @@ (define-module (gnu packages chez-and-racket-
> bootstrap)
>    #:use-module (gnu packages xorg)
>    #:use-module ((guix licenses)
>                  #:prefix license:)
Small note, #:prefix license: should be on the same line as #:use-
module.

> -(define %racket-version "8.4")
> +(define %racket-version "8.4") ; MUST match "racket.scm"
> +;; The definition of %racket-version is duplicated to avoid an
> import cycle:
> +;; see <https://issues.guix.gnu.org/53878#93>.
>  (define %chez-scheme-for-racket-version "9.5.7.3")
> [...]
> +(define %racket-version "8.4") ; MUST match "chez-and-racket-
> bootstrap.scm"
> +;; The definition of %racket-version is duplicated to avoid an
> import cycle:
> +;; see <https://issues.guix.gnu.org/53878#93>.
> +(define %racket-commit
> +  (string-append "v" %racket-version))
That works, but it's not really nice.  I did send my mail w.r.t. making
the bootstrap packages procedures that take racket-version and origin
as arguments before reading this mail, but I think my comment still
applies mostly.  WDYT?

> +(define (extract-package-source origin spec)
> +  "Extract the source for a Racket package specified by SPEC from
> ORIGIN into
> +a new file-like object.  In the resulting file-like object, the
> package source
> +will be in the directory \"/share/racket/pkgs/NAME/\", where NAME is
> the Racket
> +name for the package.
> +
> +SPEC is a list of the form:
> +
> +  (NAME PATH)
> +
> +where PATH is the path to the package source relative to ORIGIN---
> possibly
> +`\".\"`.  As a special case, SPEC may also be given a string, which
> is
> +equivalent to:
> +
> +  (NAME NAME)
> +
> +Examples:
Would it make sense to use this procedure for our bootstrap packages
already?  (In particular for bootfiles or extracting chez-scheme from
the racket source).

Regarding the big racket package, the recipe currently looks a little
nicer in that it no longer overrides `build', but I think we could
still do a union-build with #:symlink copy-recursively if the full
racket is just racket plus a bunch of packages on top.  This would have
the benefit that we could declare each of them as a package.  Not sure
if this is something we ought to address here or in a separate patch
set, though.