Subject: [bug#53878] [PATCH v4 12/15] gnu: Add racket-vm-cs.

From: Philip McGrath <[email-masked]>
Date: Sun, 20 Feb 2022 01:06:07 -0500

* gnu/packages/chez-and-racket-bootstrap.scm (racket-vm-cs): New variable.
---
 gnu/packages/chez-and-racket-bootstrap.scm | 44 ++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/gnu/packages/chez-and-racket-bootstrap.scm b/gnu/packages/chez-and-racket-bootstrap.scm
index 25f1ff52f8..f8fc4c7ea1 100644
--- a/gnu/packages/chez-and-racket-bootstrap.scm
+++ b/gnu/packages/chez-and-racket-bootstrap.scm
@@ -515,6 +515,50 @@ (define-public racket-vm-bc
 
 This package is the normal implementation of Racket BC with a precise garbage
 collector, 3M (``Moving Memory Manager'').")))
+
+(define-public racket-vm-cs
+  (package
+    (inherit racket-vm-bc)
+    (name "racket-vm-cs")
+    (inputs
+     (modify-inputs (package-inputs racket-vm-cgc)
+       (prepend zlib lz4)
+       (delete "libffi")))
+    (native-inputs
+     (modify-inputs (package-native-inputs racket-vm-cgc)
+       (delete "libtool")
+       (prepend chez-scheme-for-racket
+                chez-nanopass-bootstrap
+                racket-vm-bc)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments racket-vm-cgc)
+       ((#:phases those-phases #~%standard-phases)
+        #~(modify-phases #$those-phases
+            (add-after 'unpack 'unpack-nanopass+stex
+              (lambda args
+                (with-directory-excursion "racket/src/ChezScheme"
+                  #$unpack-nanopass+stex)))))
+       ((#:configure-flags _ '())
+        #~(cons* "--enable-csonly"
+                 "--enable-libz"
+                 "--enable-lz4"
+                 (string-append "--enable-scheme="
+                                #$(this-package-native-input
+                                   "chez-scheme-for-racket")
+                                "/bin/scheme")
+                 #$(racket-vm-common-configure-flags)))))
+    (synopsis "Racket CS implementation")
+    (description "The Racket CS implementation, which uses ``Chez Scheme'' as
+its core compiler and runtime system, has been the default Racket VM
+implemetation since Racket 8.0.  It performs better than the Racket BC
+implementation for most programs.
+
+Using the Racket VM packages directly is not recommended: instead, install the
+@code{racket-minimal} or @code{racket} packages.")
+    ;; https://download.racket-lang.org/license.html
+    ;; The LGPL components are only used by Racket BC.
+    (license (list license:asl2.0 license:expat))))
+
 ;;
 ;; Chez Scheme:
 ;;
-- 
2.32.0