summary refs log tree commit diff
path: root/gnu/packages/racket.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/racket.scm')
-rw-r--r--gnu/packages/racket.scm130
1 files changed, 67 insertions, 63 deletions
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index a4b7cda473..c28a25802c 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz>
-;;; Copyright © 2021 Philip McGrath <philip@philipmcgrath.com>
+;;; Copyright © 2021, 2022 Philip McGrath <philip@philipmcgrath.com>
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -172,9 +172,9 @@
           (display "# to placate ../configure")))))
 
 
-(define-public racket-minimal
+(define-public racket-minimal-bc-cgc
   (package
-    (name "racket-minimal")
+    (name "racket-minimal-bc-cgc")
     (version %racket-version)
     (source %racket-origin)
     (inputs
@@ -184,19 +184,14 @@
       sqlite
       bash-minimal ;; <- for `system`
       ncurses ;; <- for #%terminal
-      ;; only for CS
-      zlib
-      lz4))
-    (native-inputs
-     (list chez-scheme-for-racket-bootstrap-bootfiles
-           racket-minimal-bc-3m))
+      ;; only for BC variants:
+      libffi))
+    (native-inputs (list libtool)) ;; <- only for BC variants
     (build-system gnu-build-system)
     (arguments
      (list
       #:configure-flags
-      #~(cons* "--enable-csonly"
-               "--enable-libz"
-               "--enable-lz4"
+      #~(cons* "--enable-cgcdefault"
                #$(racket-vm-common-configure-flags))
       ;; Tests are in packages like racket-test-core and
       ;; main-distribution-test that aren't part of the main
@@ -210,17 +205,6 @@
                   (guix build utils))
       #:phases
       #~(modify-phases %standard-phases
-          (add-after 'unpack 'unpack-nanopass+stex
-            (lambda args
-              (with-directory-excursion "racket/src/ChezScheme"
-                #$(make-unpack-nanopass+stex))))
-          (add-after 'unpack-nanopass+stex 'unpack-bootfiles
-            (lambda* (#:key native-inputs inputs #:allow-other-keys)
-              (with-directory-excursion "racket/src/ChezScheme"
-                (copy-recursively
-                 (search-input-directory (or native-inputs inputs)
-                                         "lib/chez-scheme-bootfiles")
-                 "boot"))))
           (add-before 'configure 'initialize-config.rktd
             (lambda* (#:key inputs #:allow-other-keys)
               (define (write-racket-hash alist)
@@ -265,43 +249,37 @@
               ;; rmdir because we want an error if it isn't empty
               (rmdir (string-append #$output "/share/racket/pkgs")))))))
     (home-page "https://racket-lang.org")
-    (synopsis "Racket without bundled packages such as DrRacket")
-    (description
-     "Racket is a general-purpose programming language in the Scheme family,
-with a large set of libraries and a compiler based on Chez Scheme.  Racket is
-also a platform for language-oriented programming, from small domain-specific
-languages to complete language implementations.
+    (synopsis "Old Racket implementation used for bootstrapping")
+    (description "This variant of the Racket BC (``before Chez'' or
+``bytecode'') implementation is not recommended for general use.  It uses
+CGC (a ``Conservative Garbage Collector''), which was succeeded as default in
+PLT Scheme version 370 (which translates to 3.7 in the current versioning
+scheme) by the 3M variant, which in turn was succeeded in version 8.0 by the
+Racket CS implementation.
 
-The ``minimal Racket'' distribution includes just enough of Racket for you to
-use @command{raco pkg} to install more.  Bundled packages, such as the
-DrRacket IDE, are not included.")
+Racket BC [CGC] is primarily used for bootstrapping Racket BC [3M].  It may
+also be used for embedding applications without the annotations needed in C
+code to use the 3M garbage collector.")
     ;; https://download.racket-lang.org/license.html
     ;; The LGPL components are only used by Racket BC.
-    (license (list license:asl2.0 license:expat))))
+    (license (list license:lgpl3+ license:asl2.0 license:expat))
+    ;; Eventually, it may make sense for some vm packages to not be hidden,
+    ;; but this one is especially likely to remain hidden.
+    (properties `((hidden? . #t)))))
 
 (define-public racket-minimal-bc-3m
   (hidden-package
    (package
-     (inherit racket-minimal)
+     (inherit racket-minimal-bc-cgc)
      (name "racket-minimal-bc-3m")
-     (inputs
-      (modify-inputs (package-inputs racket-minimal)
-        (prepend libffi) ;; <- only for BC variants
-        (delete "zlib" "lz4")))
      (native-inputs
-      (list libtool
-            (if (%current-target-system)
-                racket-minimal
-                racket-minimal-bc-cgc)))
+      (modify-inputs (package-native-inputs racket-minimal-bc-cgc)
+        (prepend racket-minimal-bc-cgc)))
      (arguments
-      (substitute-keyword-arguments (package-arguments racket-minimal)
+      (substitute-keyword-arguments (package-arguments racket-minimal-bc-cgc)
         ((#:configure-flags _ '())
          #~(cons "--enable-bconly"
-                 #$(racket-vm-common-configure-flags)))
-        ((#:phases cs-phases)
-         #~(modify-phases #$cs-phases
-             (delete 'unpack-nanopass+stex)
-             (delete 'unpack-bootfiles)))))
+                 #$(racket-vm-common-configure-flags)))))
      (synopsis "Minimal Racket with the BC [3M] runtime system")
      (description "The Racket BC (``before Chez'' or ``bytecode'')
 implementation was the default before Racket 8.0.  It uses a compiler written
@@ -316,27 +294,53 @@ collector, 3M (``Moving Memory Manager'').")
      ;; The LGPL components are only used by Racket BC.
      (license (list license:lgpl3+ license:asl2.0 license:expat)))))
 
-(define-public racket-minimal-bc-cgc
+(define-public racket-minimal
   (package
     (inherit racket-minimal-bc-3m)
-    (name "racket-minimal-bc-cgc")
-    (native-inputs (list libtool))
+    (name "racket-minimal")
+    (inputs
+     (modify-inputs (package-inputs racket-minimal-bc-cgc)
+       (prepend zlib lz4)
+       (delete "libffi")))
+    (native-inputs
+     (modify-inputs (package-native-inputs racket-minimal-bc-cgc)
+       (delete "libtool")
+       (prepend chez-scheme-for-racket-bootstrap-bootfiles
+                racket-minimal-bc-3m)))
     (arguments
      (substitute-keyword-arguments (package-arguments racket-minimal-bc-3m)
+       ((#:phases bc-phases)
+        #~(modify-phases #$bc-phases
+            (add-after 'unpack 'unpack-nanopass+stex
+              (lambda args
+                (with-directory-excursion "racket/src/ChezScheme"
+                  #$(make-unpack-nanopass+stex))))
+            (add-after 'unpack-nanopass+stex 'unpack-bootfiles
+              (lambda* (#:key native-inputs inputs #:allow-other-keys)
+                (with-directory-excursion "racket/src/ChezScheme"
+                  (copy-recursively
+                   (search-input-directory (or native-inputs inputs)
+                                           "lib/chez-scheme-bootfiles")
+                   "boot"))))))
        ((#:configure-flags _ '())
-        #~(cons "--enable-cgcdefault"
-                #$(racket-vm-common-configure-flags)))))
-    (synopsis "Old Racket implementation used for bootstrapping")
-    (description "This variant of the Racket BC (``before Chez'' or
-``bytecode'') implementation is not recommended for general use.  It uses
-CGC (a ``Conservative Garbage Collector''), which was succeeded as default in
-PLT Scheme version 370 (which translates to 3.7 in the current versioning
-scheme) by the 3M variant, which in turn was succeeded in version 8.0 by the
-Racket CS implementation.
+        #~(cons* "--enable-csonly"
+                 "--enable-libz"
+                 "--enable-lz4"
+                 #$(racket-vm-common-configure-flags)))))
+    (synopsis "Racket without bundled packages such as DrRacket")
+    (description
+     "Racket is a general-purpose programming language in the Scheme family,
+with a large set of libraries and a compiler based on Chez Scheme.  Racket is
+also a platform for language-oriented programming, from small domain-specific
+languages to complete language implementations.
 
-Racket BC [CGC] is primarily used for bootstrapping Racket BC [3M].  It may
-also be used for embedding applications without the annotations needed in C
-code to use the 3M garbage collector.")))
+The ``minimal Racket'' distribution includes just enough of Racket for you to
+use @command{raco pkg} to install more.  Bundled packages, such as the
+DrRacket IDE, are not included.")
+    (properties `())
+    ;; https://download.racket-lang.org/license.html
+    ;; 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