diff mbox series

[bug#53878,v5,10/22] gnu: racket: Move Chez bootfiles to (gnu packages chez).

Message ID 20220226130254.1301333-11-philip@philipmcgrath.com
State Accepted
Headers show
Series Update Racket to 8.4. Adjust Chez Scheme packages. | 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 Feb. 26, 2022, 1:02 p.m. UTC
* 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(-)

Comments

Liliana Marie Prikler Feb. 26, 2022, 2:31 p.m. UTC | #1
Am Samstag, dem 26.02.2022 um 08:02 -0500 schrieb Philip McGrath:
> ´ gnu/packages/chez.scm   | 62
> +++++++++++++++++++++++++++++++++++++++++
>  gnu/packages/racket.scm | 52 ----------------------------------
>  2 files changed, 62 insertions(+), 52 deletions(-)
You were the chosen one Philip!  The prophecy said you would reduce the
code size for racket chez, not add more to it!

Prequel memes aside, LGTM on the basis that we will probably be reusing
some bits in the later commits and also there's chez-scheme-for-system
to think about.

Cheers
diff mbox series

Patch

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 a7704f1afe..ba958b6101 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -442,58 +442,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 (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