Subject: [bug#53878] [PATCH v7 11/24] gnu: racket: Move Chez bootfiles to (gnu packages chez).

From: Philip McGrath <[email-masked]>
Date: Sun, 27 Feb 2022 16:29:07 -0500

* gnu/packages/racket.scm (chez-scheme-for-racket-bootstrap-bootfiles):
Move to ...
* gnu/packages/chez.scm (chez-scheme-for-racket-bootstrap-bootfiles):
... this new variable.
[source]: Avoid problematic cycle with "racket.scm".
[arguments]<#:phases>: Likewise.
---
 gnu/packages/chez.scm   | 62 +++++++++++++++++++++++++++++++++++++++++
 gnu/packages/racket.scm | 52 ----------------------------------
 2 files changed, 62 insertions(+), 52 deletions(-)

diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index 47904e7b4e..046bb3dcdc 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -31,12 +31,14 @@ (define-module (gnu packages chez)
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix gexp)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages netpbm)
+  #:use-module (gnu packages racket)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages image)
@@ -260,6 +262,66 @@ (define* (stex-make #:optional (suffix ""))
 and 32-bit PowerPC architectures.")
     (license asl2.0)))
 
+(define-public chez-scheme-for-racket-bootstrap-bootfiles
+  (package
+    (name "chez-scheme-for-racket-bootstrap-bootfiles")
+    (version "9.5.7.3")
+    ;; 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!
+    ;; When updating, remember to also update %racket-version in racket.scm.
+    (source #f) ; avoid problematic cycle with racket.scm
+    (inputs `())
+    (native-inputs (list racket-vm-bc))
+    (build-system copy-build-system)
+    ;; TODO: cross compilation
+    (arguments
+     (list
+      #:install-plan
+      #~`(("boot/" "lib/chez-scheme-bootfiles"))
+      #:phases
+      #~(let ((unpack (assoc-ref %standard-phases 'unpack)))
+          (modify-phases %standard-phases
+            (replace 'unpack
+              (lambda args
+                (unpack #:source #$(or (package-source this-package)
+                                       (package-source racket-vm-bc)))))
+            (add-after 'unpack 'chdir
+              (lambda args
+                (chdir "racket/src/ChezScheme")))
+            (add-after 'chdir 'unpack-nanopass+stex
+              (lambda args
+                (copy-recursively
+                 #$nanopass
+                 "nanopass"
+                 #:keep-mtime? #t)))
+            (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.)
+
+The Racket package @code{cs-bootstrap} (part of the main Racket Git
+repository) implements enough of a Chez Scheme simulation to load the Chez
+Scheme compiler purely from source into Racket and apply the compiler to
+itself, thus bootstrapping Chez Scheme.  Bootstrapping takes about 10 times as
+long as using an existing Chez Scheme, but @code{cs-bootstrap} supports Racket
+7.1 and later, including the Racket BC variant.
+
+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.")
+    (license (list asl2.0))))
+
 (define-public chez-srfi
   (package
     (name "chez-srfi")
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index d3d3eb2bbd..a853e520f5 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -445,58 +445,6 @@ (define-public racket-vm-cs
     ;; The LGPL components are only used by Racket BC.
     (license (list license:asl2.0 license:expat))))
 
-(define-public chez-scheme-for-racket-bootstrap-bootfiles
-  (package
-    (name "chez-scheme-for-racket-bootstrap-bootfiles")
-    (version "9.5.7.3")
-    ;; 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!
-    ;; When updating, remember to also update %racket-version in racket.scm.
-    (source %racket-origin)
-    (inputs `())
-    (native-inputs (list racket-vm-bc))
-    (build-system copy-build-system)
-    ;; TODO: cross compilation
-    (arguments
-     (list
-      #:install-plan
-      #~`(("boot/" "lib/chez-scheme-bootfiles"))
-      #:phases
-      #~(modify-phases %standard-phases
-          (add-after 'unpack 'chdir
-            (lambda args
-              (chdir "racket/src/ChezScheme")))
-          (add-after 'chdir 'unpack-nanopass+stex
-            (lambda args
-              #$(make-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.)
-
-The Racket package @code{cs-bootstrap} (part of the main Racket Git
-repository) implements enough of a Chez Scheme simulation to load the Chez
-Scheme compiler purely from source into Racket and apply the compiler to
-itself, thus bootstrapping Chez Scheme.  Bootstrapping takes about 10 times as
-long as using an existing Chez Scheme, but @code{cs-bootstrap} supports Racket
-7.1 and later, including the Racket BC variant.
-
-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.")
-    (license (list license:asl2.0))))
-
 (define (racket-packages-origin name origin specs)
   "Extract from ORIGIN the sources for the Racket packages specified by SPECS,
 a non-empty list of package specifications.  In the resulting file-like
-- 
2.32.0