summaryrefslogtreecommitdiff
path: root/gnu/packages/racket.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/racket.scm')
-rw-r--r--gnu/packages/racket.scm143
1 files changed, 74 insertions, 69 deletions
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index 5c863f1afd..2b20353159 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2013-2016, 2018, 2020-2022 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, 2022, 2023 Philip McGrath <philip@philipmcgrath.com>
+;;; Copyright © 2021-2024 Philip McGrath <philip@philipmcgrath.com>
;;; Copyright © 2021 jgart <jgart@dismail.de>
;;;
;;; This file is part of GNU Guix.
@@ -72,6 +72,7 @@
;; ├── bc/
;; ├── cs/
;; ├── ChezScheme/
+;; ├── rktboot/
;; ├── zuo/
;; └── ...
;;
@@ -105,7 +106,9 @@
;; 'distro-build' package to assemble custom Racket distributions. (Again,
;; the makefile just delegates to Zuo.) It is not part of Racket source
;; distributions: the root of a source distribution is basically 'racket/src'
-;; with some extra package sources and configuration added.
+;; with some extra package sources and configuration added. In fact, the
+;; top-level 'Makefile' and the 'distro-build' package are what create Racket
+;; source distributions.
;;
;; A ''minimal Racket'' installation includes two packages: 'base', which is a
;; sort of bridge between the current ``built-in'' collections and the package
@@ -147,14 +150,12 @@
;; - Racket BC [3M] needs an existing Racket to run "xform",
;; which transforms its own C source code to add additional annotations
;; for the precise garbage collector.
-;; - Racket CS needs (bootfiles for) Racket's fork of Chez Scheme.
-;; It also needs an existing Racket to compile Racket-implemented
+;; - Racket CS needs (boot files for) the corresponding version of Chez
+;; Scheme. It also needs an existing Racket to compile Racket-implemented
;; parts of the runtime system to R6RS libraries.
-;; - Chez Scheme also needs bootfiles for itself, but Racket can simulate
-;; enough of Chez Scheme to load Racket's fork of the Chez Scheme compiler
-;; purely from source into Racket and apply the compiler to itself,
-;; producing the needed bootfiles (albeit very slowly).
-;; Any variant of Racket since version 7.1 can run the simulation.
+;; - Chez Scheme also needs boot files for itself, but Racket BC can
+;; bootstrap these using the code in "racket/src/rktboot/".
+;; See the commentary in "chez.scm" for further details
;;
;; So, we build CGC to build 3M to build bootfiles and CS.
;;
@@ -162,6 +163,14 @@
;; often use "BC" to mean "3M", consistent with `(banner)` and the
;; suffixes used on executables when more than one variant co-exists.)
;;
+;; Since the pre-releases for Chez Scheme 10.0.0, all of Racket's changes have
+;; been merged upstream, and development will be kept in sync going
+;; forward. However, there is no plan to align the Chez Scheme and Racket
+;; release cycles. For the near fulture, a given released version of Racket
+;; will continue to depend on a specific pre-release version of Chez Scheme as
+;; part of Racket CS's "ABI". See upstream discussion at
+;; <https://racket.discourse.group/t/2739/3>.
+;;
;; One remaining bootstrapping limitation is that Racket's reader, module
;; system, and macro expander are implemented in Racket. For Racket CS,
;; they are compiled to R6RS libraries as discussed above. This note from the
@@ -187,12 +196,12 @@
;; Zuo is notably *not* a problem for bootstrapping. The implementation is a
;; single hand-written C file designed to build with just `cc -o zuo zuo.c`,
;; even with very old or limited compilers. (We use the Autoconf support for
-;; convienience.)
+;; convienience.) As of Zuo 1.8, Zuo has tagged releases in its own repository
+;; independent of the Racket release cycle.
;;
;; CODE:
-(define %racket-version "8.11.1") ; Remember to update chez-scheme-for-racket!
-(define %zuo-version "1.7") ; defined in racket/src/zuo/zuo.c
+(define %racket-version "8.12") ; Remember to update chez-scheme-for-racket!
(define %racket-commit
(string-append "v" %racket-version))
(define %racket-origin
@@ -202,17 +211,16 @@
(url "https://github.com/racket/racket")
(commit %racket-commit)))
(sha256
- (base32 "1iny1mn1lw07lj6h704ch5g2q1nsf0h88dgwqrlxhf8pwj4i76gl"))
+ (base32 "1f52yadmrsd2ddry47s68kxig185a58n19j23458wkck19nawjz5"))
(file-name (git-file-name "racket" %racket-version))
(patches (search-patches "racket-chez-scheme-bin-sh.patch"
- "racket-backport-8.11-layered-docs.patch"
- "racket-rktio-bin-sh.patch"
- "racket-zuo-bin-sh.patch"))
+ "racket-backport-8.12-chez-configure.patch"
+ "racket-rktio-bin-sh.patch"))
(modules '((guix build utils)))
(snippet
#~(begin
(use-modules (guix build utils))
- ;; Unbundle Chez submodules.
+ ;; Unbundle Chez submodules and boot files.
(with-directory-excursion "racket/src/ChezScheme"
;; TODO: consider putting this in a (guix ...) or (guix build ...)
;; module so it can be shared with the upstream Chez Scheme origin
@@ -220,39 +228,41 @@
(for-each (lambda (dir)
(when (directory-exists? dir)
(delete-file-recursively dir)))
- '("stex"
- "nanopass"
+ '("boot"
"lz4"
- "zlib")))
+ "nanopass"
+ "stex"
+ "zlib"
+ "zuo")))
+ ;; Unbundle Zuo.
+ (delete-file-recursively "racket/src/zuo")
;; Unbundle libffi.
(delete-file-recursively "racket/src/bc/foreign/libffi")))))
(define-public zuo
- (let ((revision #f))
- (package
- (name "zuo")
- (version (string-append %zuo-version
- "-racket"
- %racket-version
- (if revision "-guix" "")
- (or revision "")))
- (source %racket-origin)
- (outputs '("out" "debug"))
- (build-system gnu-build-system)
- (arguments
- (list
- #:out-of-source? #t
- #:phases
- #~(modify-phases %standard-phases
- (add-after 'unpack 'chdir
- (lambda args
- (chdir "racket/src/zuo"))))))
- (home-page "https://github.com/racket/zuo")
- ;; ^ This is downstream of https://github.com/racket/racket,
- ;; but it's designed to be a friendly landing place
- (synopsis "Tiny Racket for build scripts")
- (description "Zuo is a tiny Racket with primitives for dealing
+ (package
+ (name "zuo")
+ (version "1.9") ; defined in racket/src/zuo/zuo.c or the following
+ #;(displayln (~a (hash-ref (runtime-env) 'version) "."
+ (hash-ref (runtime-env) 'minor-version)))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/racket/zuo")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32 "0zasir33nx1qi1ciz9dn6h8k39i443lr6apw5d1i6mjmhpzxmdhp"))
+ (file-name (git-file-name name version))
+ (patches (search-patches "zuo-bin-sh.patch"))))
+ (outputs '("out" "debug"))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:out-of-source? #t))
+ (home-page "https://github.com/racket/zuo")
+ (synopsis "Tiny Racket for build scripts")
+ (description "Zuo is a tiny Racket with primitives for dealing
with files and running processes. It comes with a @command{make}-like
embedded DSL, which is used to build Racket itself.
@@ -261,7 +271,7 @@ Zuo is a Racket variant in the sense that program files start with
and expansion of the file content. That's how the @command{make}-like DSL is
defined, and even the base Zuo language is defined by layers of @code{#lang}s.
One of the early layers implements macros.")
- (license (list license:asl2.0 license:expat)))))
+ (license (list license:asl2.0 license:expat))))
(define racket-vm-common-configure-flags
@@ -431,7 +441,7 @@ collector, 3M (``Moving Memory Manager'').")
(inputs
(let ((inputs (modify-inputs (package-inputs racket-vm-cgc)
(prepend zlib lz4))))
- (if (racket-cs-native-supported-system?)
+ (if (nix-system->native-chez-machine-type)
(modify-inputs inputs
(delete "libffi"))
inputs)))
@@ -449,10 +459,8 @@ collector, 3M (``Moving Memory Manager'').")
(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)))))
+ (add-after 'unpack 'unpack-nanopass
+ #$unpack-nanopass)))
((#:configure-flags _ '())
#~(cons* "--enable-csonly"
"--enable-libz"
@@ -461,7 +469,7 @@ collector, 3M (``Moving Memory Manager'').")
#+(this-package-native-input
"chez-scheme-for-racket")
"/bin/scheme")
- #$@(if (racket-cs-native-supported-system?)
+ #$@(if (nix-system->native-chez-machine-type)
#~()
#~(#$(string-append "--enable-mach="
(nix-system->pbarch-machine-type))
@@ -701,7 +709,7 @@ DrRacket IDE, are not included.")
"contract-profile" (base32 "1xm2z8g0dpv5d9h2sg680vx1a8ix9gbsdpxxb8qv1w7akp73paj3")
'(("contract-profile" ".")))
(simple-racket-origin
- "data" (base32 "1pml8g3zgvnaiqb659psh99m70v96m6nh9zash2vfgir46j4rjnh")
+ "data" (base32 "01sinnsnjiazvkj83k84izdnp38pd2aglbrs14mrdkwajgmpampk")
'("data" "data-doc" "data-enumerate-lib" "data-lib"))
(simple-racket-origin
"datalog" (base32 "0nf6cy4djpyhfvgpa6yn72apbz9s83gp0qg95pzjd0az4v6qwq1s")
@@ -710,7 +718,7 @@ DrRacket IDE, are not included.")
"db" (base32 "0xx0k8yw2vb9b4vk2dwjfbpixnmriqsv7kpv3fvfxbwyg42y0db5")
'("db" "db-doc" "db-lib"))
(simple-racket-origin
- "deinprogramm" (base32 "0ijngjyg2i528a4xv20db4adirvx5rj4m86fd70l33lgwv53w3s0")
+ "deinprogramm" (base32 "0f41sh90i4mml95x2gcmfvl2rc7m77vjbagmgjx270ng7xvz16lj")
'("deinprogramm" "deinprogramm-signature"))
(simple-racket-origin
"distributed-places" (base32 "1dajpkj9balqcpv6cdk9hwjz592h1vq8rrx5vncariiac4vbdpa0")
@@ -719,7 +727,7 @@ DrRacket IDE, are not included.")
"draw" (base32 "1h7mckay8yjcgmj3r0jkf1csn430gn43n8jl1l956q9gcprlmncl")
'("draw" "draw-doc" "draw-lib"))
(simple-racket-origin
- "drracket" (base32 "00ay3pwl648wq8nnaap665c38clr39k0g1wslh2wclar32wjpgdc")
+ "drracket" (base32 "17bdbvsf5l8z96bwzg1q75gg70c6svbhw0g1k239fsjd3mivmki4")
'("drracket"
"drracket-plugin-lib"
"drracket-tool"
@@ -753,13 +761,13 @@ DrRacket IDE, are not included.")
"games" (base32 "13z7fnbr48s98lmfxc0nbfhbqkd4hphymy2r63hqm783xzn6ylzi")
'(("games" ".")))
(simple-racket-origin
- "gui" (base32 "10mlajn5xqgdwi7gf9lgszfv609pjp8m24lm97b8xh6fmjlkqi4b")
+ "gui" (base32 "08kzyscqc8hgc1f8q0bhibl44fkq8iiyz12f8bqdhqkcz8nx44sw")
'("gui" "gui-doc" "gui-lib" "tex-table"))
(simple-racket-origin
"gui-pkg-manager" (base32 "1ji9448d723nklqvycwdswj0ni28sabrncag14f9mx47did5myb5")
'("gui-pkg-manager-lib"))
(simple-racket-origin
- "htdp" (base32 "04p2xp4hnnsnmrmvw05fg4fv18k3g2rz5gmgs89sc6g8y886m6zz")
+ "htdp" (base32 "13d8xsvs60d7797w93g14dbdm98bixgy65akayij256pyiwnqwdc")
'("htdp" "htdp-doc" "htdp-lib"))
(simple-racket-origin
"html" (base32 "18n1jnjgzfknc8nv8dppi85nb8q08gqdwkg6hfjk08x0p00anx2x")
@@ -801,7 +809,7 @@ DrRacket IDE, are not included.")
(url "https://github.com/RenaissanceBug/racket-cookies")
(commit %racket-commit)))
(sha256 (base32
- "05lnml9nszcq72k8bi4iwdyplp2iv23ywb2gmrs2hr8837fqi65y"))
+ "1zr31y1gqa3kkrwlf9bnw08nzij00x1l70qhfbpz0239bksn4mmb"))
(file-name
(git-file-name "RenaissanceBug-racket-cookies" %racket-version)))
'("net-cookies" "net-cookies-doc" "net-cookies-lib"))
@@ -827,7 +835,7 @@ DrRacket IDE, are not included.")
"pconvert" (base32 "00czi0p399mmyrvxyrs5kniizpkqfxyz2ncxqi2jy79a7wk79pb1")
'("pconvert-lib"))
(simple-racket-origin
- "pict" (base32 "1vsn91r167wssaflzz080nsrcf0jfhl2a48zcj9hvdb77arbj8kc")
+ "pict" (base32 "1ghds5by8i0k2djbig82xqp2ssy3nvdwm45l8ibsr99y0ay6z7gv")
'("pict" "pict-doc" "pict-lib"))
(simple-racket-origin
"pict-snip" (base32 "081nwiy4a0n4f7xws16hqbhf0j3kz5alizndi3nnyr3chm4kng6x")
@@ -842,7 +850,7 @@ DrRacket IDE, are not included.")
"planet" (base32 "0r2yqrzrmdjjyr14k6hhlzc5kzrcx3583m1s02mhrcmpfw0s85w9")
'("planet" "planet-doc" "planet-lib"))
(simple-racket-origin
- "plot" (base32 "17fhsymy884xr4jqk585rm5kwdgkgz0635916gh5y0fsnp5pir70")
+ "plot" (base32 "0jq9a366g7b2c9vp6yvpqikvklgyd6p4xj6v224g99yj8cgip40b")
'("plot" "plot-compat" "plot-doc" "plot-gui-lib" "plot-lib"))
(simple-racket-origin
"preprocessor" (base32 "1p5aid58ifnjy4xl0ysh85cq39k25661v975jrpk182z3k5621mg")
@@ -856,11 +864,8 @@ DrRacket IDE, are not included.")
(uri (git-reference
(url "https://github.com/Metaxal/quickscript")
(commit %racket-commit)))
- (snippet
- ;; See https://github.com/Metaxal/quickscript/issues/73
- #~(delete-file "register.rkt"))
(sha256 (base32
- "0v27qknghfi0058vk8xwwlwqgqwdsxxmprrmag64cyygdz95sxym"))
+ "1ahznb9rhgaixd3fqn0pxighw4zbflwqc84r2yvn5nsfbp0mrq9b"))
(file-name (git-file-name "Metaxal-quickscript" %racket-version)))
'(("quickscript" ".")))
(simple-racket-origin
@@ -884,7 +889,7 @@ DrRacket IDE, are not included.")
"racklog" (base32 "0fr8xij0sssfnmwn6dfdi4jj3l62f2yj3jrjljv13kaycrfls032")
'(("racklog" ".")))
(simple-racket-origin
- "rackunit" (base32 "0axcy8283qqmcrhwwn0q0sfjznc8gkwbx06j41anayi5v9xp4698")
+ "rackunit" (base32 "06kpl51alm7akgmmh110ya28zgmx3as0szykfv2gwqmf7xcms1b7")
'("rackunit"
"rackunit-doc"
"rackunit-gui"
@@ -900,7 +905,7 @@ DrRacket IDE, are not included.")
"realm" (base32 "0rlvwyd6rpyl0zda4a5p8dp346fvqzc8555dgfnrhliymkxb6x4g")
'(("realm" ".")))
(simple-racket-origin
- "redex" (base32 "016m2fvfxjnx7l0ai6jlcmz4s8xipbq9k58fq7109akj9mvczgp9")
+ "redex" (base32 "1mwnxbfk2vbalndlq0996rzdi3a2z48m5xnb1ywzlsvnydrnkrk2")
'("redex"
"redex-benchmark"
"redex-doc"
@@ -915,7 +920,7 @@ DrRacket IDE, are not included.")
"scheme-lib" (base32 "0pcf0y8rp4qyjhaz5ww5sr5diq0wpcdfrrnask7zapyklzx1jx8x")
'(("scheme-lib" ".")))
(simple-racket-origin
- "scribble" (base32 "0igcjgmpzbzzn1jfpa4jq18lqyhr6dsdwnbv6zv87x8cib9rwqrh")
+ "scribble" (base32 "0rk5q9r9fw826ag0npk5cwkzkapj2p243wwm9gn2l7j7cr6z1rvb")
'("scribble"
"scribble-doc"
"scribble-html-lib"
@@ -947,7 +952,7 @@ DrRacket IDE, are not included.")
"snip" (base32 "1b90ccqilnyszbphms3svm3c7dbk7870ifybjjipss5srb32mj2d")
'("snip" "snip-lib"))
(simple-racket-origin
- "typed-racket" (base32 "17mz7zqrialxfzkynj7h3kfhawdd6cgs24ns437gz087g2pmwi1x")
+ "typed-racket" (base32 "0vdsyr0qhpvac6h8mfdy6vqrsqsfa7kpg39n3h637hccxyfxv63f")
'("source-syntax"
"typed-racket"
"typed-racket-compatibility"
@@ -958,7 +963,7 @@ DrRacket IDE, are not included.")
"srfi" (base32 "1l3nr3a8mlp505aaxlyp4i8jfijmpyl9h1wwv8hzm4kzzjv4sl8p")
'("srfi" "srfi-doc" "srfi-lib" "srfi-lite-lib"))
(simple-racket-origin
- "string-constants" (base32 "1djbjhsimikk18dkrajrlgjhlqfyvna4nz64ha4wjcaj5cfgcvdx")
+ "string-constants" (base32 "0225f1wmq1n9f2x1pg50fssdnd4bpc11q1jgsykwf4ik4fnaa520")
'("string-constants" "string-constants-doc" "string-constants-lib"))
(simple-racket-origin
"swindle" (base32 "1q8vdxpzczzwdw2mys2caab45yvadmqkixsr29k8pl03n8dsg8j9")
@@ -973,7 +978,7 @@ DrRacket IDE, are not included.")
"unix-socket" (base32 "02dfwas5ynbpyz74w9kwb4wgb37y5wys7svrlmir8k0n9ph9vq0y")
'("unix-socket" "unix-socket-doc" "unix-socket-lib"))
(simple-racket-origin
- "web-server" (base32 "0vhw1hwdcv1ham086dy0nkl4r0a5qvsimw8048zjakvax7q4shsg")
+ "web-server" (base32 "1i4sxmcgj00ml7czsbyx1433hgf091n1p54xyal2f1fsskx5fg0y")
'("web-server" "web-server-doc" "web-server-lib"))
(simple-racket-origin
"wxme" (base32 "1qp5gr9gqsakiq3alw6m4yyv5vw4i3hp4y4nhq8vl2nkjmirvn0b")