Subject: [bug#53878] [PATCH v2 00/15] Update Racket to 8.4. Adjust Chez Scheme packages.

From: Philip McGrath <[email-masked]>
Date: Thu, 17 Feb 2022 15:50:33 -0500

Hi,

Here is a v2!

Liliana, I tried using a function to generate the bootfile packages as you
suggested, but I didn't like the result---though it is very possible I still
didn't properly understand what you had in mind. I hope what I've done in this
version addresses the concerns you raised about inverted inheritance and such
anyway: if you'd like to compare the two, in the repository
at <https://gitlab.com/philip1/guix-patches> I've tagged this series as
`guix-issue-53878-v2` and the alternate as
`guix-issue-53878-v2-bootfiles-proc`. I'll also include the diff below.

Other than that, I hope I've addressed all your comments.

> diff --git a/gnu/packages/chez-and-racket-bootstrap.scm b/gnu/packages/chez-and-racket-bootstrap.scm
> index 3e90a15d94..cbdddb1e98 100644
> --- a/gnu/packages/chez-and-racket-bootstrap.scm
> +++ b/gnu/packages/chez-and-racket-bootstrap.scm
> @@ -720,21 +720,18 @@ (define* (stex-make #:optional (suffix ""))
>  and 32-bit PowerPC architectures.")
>      (license license:asl2.0)))
>  
> -(define (bootfiles-for-chez chez)
> -  (package/inherit chez
> -    (outputs '("out"))
> +(define-public chez-scheme-bootstrap-bootfiles
> +  (package
> +    (inherit chez-scheme)
> +    (name "chez-scheme-bootstrap-bootfiles")
>      (inputs '())
>      (native-inputs '())
> +    (outputs '("out"))
>      (build-system copy-build-system)
>      ;; TODO: cross compilation
>      (arguments
>       (list #:install-plan
> -           #~`(("boot/" "lib/chez-scheme-bootfiles"))))))
> -
> -(define-public chez-scheme-bootstrap-bootfiles
> -  (package
> -    (inherit (bootfiles-for-chez chez-scheme))
> -    (name "chez-scheme-bootstrap-bootfiles")
> +           #~`(("boot/" "lib/chez-scheme-bootfiles"))))
>      (supported-systems
>       ;; Upstream only distributes pre-built bootfiles for
>       ;; arm32le and t?(i3|a6)(le|nt|osx)
> @@ -822,28 +819,34 @@ (define-public chez-scheme-for-racket
>      (license license:asl2.0)))
>  
>  (define-public chez-scheme-for-racket-bootstrap-bootfiles
> -  (let ((chez (bootfiles-for-chez chez-scheme-for-racket)))
> -    (package
> -      (inherit (bootfiles-for-chez chez))
> -      (name "chez-scheme-for-racket-bootstrap-bootfiles")
> -      (native-inputs (list chez-nanopass-bootstrap racket-vm-bc))
> -      (arguments
> -       (substitute-keyword-arguments (package-arguments chez)
> -         ((#:phases those-phases #~%standard-phases)
> -          #~(modify-phases #$those-phases
> -              (add-after 'unpack 'chdir
> -                (lambda args
> -                  (chdir "racket/src/ChezScheme")))
> -              (add-after 'chdir 'unpack-nanopass+stex
> -                (lambda args
> -                  #$unpack-nanopass+stex))
> -              (add-before 'install 'build
> -                (lambda* (#:key native-inputs inputs #:allow-other-keys)
> -                  (invoke (search-input-file (or native-inputs inputs)
> -                                             "/opt/racket-vm/bin/racket")
> -                          "rktboot/main.rkt")))))))
> -      (synopsis "Chez Scheme bootfiles bootstrapped by Racket")
> -      (description "Chez Scheme is a self-hosting compiler: building it
> +  (package
> +    (inherit chez-scheme-bootstrap-bootfiles)
> +    (name "chez-scheme-for-racket-bootstrap-bootfiles")
> +    (version (package-version chez-scheme-for-racket))
> +    (source (package-source chez-scheme-for-racket))
> +    (native-inputs (list chez-nanopass-bootstrap racket-vm-bc))
> +    (arguments
> +     (substitute-keyword-arguments
> +         (package-arguments chez-scheme-bootstrap-bootfiles)
> +       ((#:phases those-phases #~%standard-phases)
> +        #~(modify-phases #$those-phases
> +            (add-after 'unpack 'chdir
> +              (lambda args
> +                (chdir "racket/src/ChezScheme")))
> +            (add-after 'chdir 'unpack-nanopass+stex
> +              (lambda args
> +                #$unpack-nanopass+stex))
> +            (add-before 'install 'build
> +              (lambda* (#:key native-inputs inputs #:allow-other-keys)
> +                (invoke (search-input-file (or native-inputs inputs)
> +                                           "/opt/racket-vm/bin/racket")
> +                        "rktboot/main.rkt")))))))
> +    (home-page "https://github.com/racket/ChezScheme")
> +    ;; ^ This is downstream of https://github.com/racket/racket,
> +    ;; but it's designed to be a friendly landing place for people
> +    ;; who want a ChezScheme-shaped repositroy.
> +    (synopsis "Chez Scheme bootfiles bootstrapped by Racket")
> +    (description "Chez Scheme is a self-hosting compiler: building it
>  requires ``bootfiles'' containing the Scheme-implemented portions compiled for
>  the current platform.  (Chez can then cross-compile bootfiles for all other
>  supported platforms.)
> @@ -857,7 +860,7 @@ (define-public chez-scheme-for-racket-bootstrap-bootfiles
>  
>  Note that the generated bootfiles are specific to Racket's fork of Chez
>  Scheme, and @code{cs-bootstrap} does not currently support building upstream
> -Chez Scheme."))))
> +Chez Scheme.")))
>  
>  ;;
>  ;; Chez's bootstrap dependencies:

 -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    | 1070 ++++++++++++
 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                       | 1553 +++++++++++------
 8 files changed, 2813 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

-- 
2.32.0