aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip McGrath <philip@philipmcgrath.com>2021-03-01 19:43:18 -0500
committerLudovic Courtès <ludo@gnu.org>2021-03-05 12:49:28 +0100
commitd2278beb103871ea469dcc55deafe7d687c75149 (patch)
treec56c80dedb036c267bf66b7cc3c21990e1eb7c09
parentb1248016e0492e1897f4d1127ccb07736c9bb6a5 (diff)
downloadguix-d2278beb103871ea469dcc55deafe7d687c75149.tar.gz
guix-d2278beb103871ea469dcc55deafe7d687c75149.zip
gnu: racket: Update to 8.0.
* gnu/packages/scheme.scm (racket): Update to 8.0. [arguments]: Add #:configure-flags. Add 'patch-chez-configure' phase. [inputs]: Add "zlib", "zlib:static", "lz4", and "lz4:static". [synopsis, description]: Tweak. (racket-minimal): Update to 8.0. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r--gnu/packages/scheme.scm98
1 files changed, 71 insertions, 27 deletions
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 6c30ed8bf6..10be0aa28a 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -398,22 +398,26 @@ implementation techniques and as an expository tool.")
(define-public racket
(package
(name "racket")
- (version "7.9") ; note: remember to also update racket-minimal!
+ (version "8.0") ; note: remember to also update racket-minimal!
(source (origin
(method url-fetch)
- (uri (list (string-append "http://mirror.racket-lang.org/installers/"
- version "/racket-" version "-src.tgz")
+ (uri (list (string-append "https://mirror.racket-lang.org/installers/"
+ version "/racket-src.tgz")
+ ;; this mirror seems to have broken HTTPS:
(string-append
"http://mirror.informatik.uni-tuebingen.de/mirror/racket/"
- version "/racket-" version "-src.tgz")))
+ version "/racket-src.tgz")))
(sha256
(base32
- "0gmp2ahmfd97nn9bwpfx9lznjmjkd042slnrrbdmyh59cqh98y2m"))
+ "047wpjblfzmf1msz7snrp2c2h0zxyzlmbsqr9bwsyvz3frcg0888"))
(patches (search-patches
"racket-store-checksum-override.patch"))))
(build-system gnu-build-system)
(arguments
- '(#:phases
+ '(#:configure-flags
+ '("--enable-libz"
+ "--enable-liblz4")
+ #:phases
(modify-phases %standard-phases
(add-before 'configure 'pre-configure-minimal
(lambda* (#:key inputs #:allow-other-keys)
@@ -493,13 +497,45 @@ implementation techniques and as an expository tool.")
(lambda _
(substitute* "collects/racket/system.rkt"
(("/bin/sh") (which "sh")))
- #t)))
+ #t))
+ (add-after 'patch-/bin/sh 'patch-chez-configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (substitute* "src/cs/c/Makefile.in"
+ (("/bin/sh") (which "sh")))
+ ;; TODO: Racket CS uses a fork of Chez Scheme.
+ ;; Most of this is copy-pasted from the "chez.scm",
+ ;; but maybe there's a way to reuse more directly.
+ (with-directory-excursion "src/ChezScheme"
+ (substitute* (find-files "mats" "Mf-.*")
+ (("^[[:space:]]+(cc ) *") "\tgcc "))
+ (substitute*
+ (find-files "." (string-append
+ "("
+ "Mf-[a-zA-Z0-9.]+"
+ "|Makefile[a-zA-Z0-9.]*"
+ "|checkin"
+ "|stex\\.stex"
+ "|newrelease"
+ "|workarea"
+ "|unix\\.ms"
+ "|^6\\.ms"
+ ;;"|[a-zA-Z0-9.]+\\.ms" ; guile can't read
+ ")"))
+ (("/bin/rm") (which "rm"))
+ (("/bin/ln") (which "ln"))
+ (("/bin/cp") (which "cp"))
+ (("/bin/echo") (which "echo")))
+ (substitute* "makefiles/installsh"
+ (("/bin/true") (which "true")))))))
;; XXX: how to run them?
#:tests? #f))
(inputs
- `(("libffi" ,libffi)
- ;; Hardcode dynamically loaded libraries for better functionality.
+ `(;; Hardcode dynamically loaded libraries for better functionality.
;; sqlite and libraries for `racket/draw' are needed to build the doc.
+ ("zlib" ,zlib)
+ ("zlib:static" ,zlib "static")
+ ("lz4" ,lz4)
+ ("lz4:static" ,lz4 "static")
("cairo" ,cairo)
("fontconfig" ,fontconfig)
("glib" ,glib)
@@ -519,10 +555,14 @@ implementation techniques and as an expository tool.")
(home-page "https://racket-lang.org")
(synopsis "Implementation of Scheme and related languages")
(description
- "Racket is an implementation of the Scheme programming language (R5RS and
-R6RS) and related languages, such as Typed Racket. It features a compiler and
-a virtual machine with just-in-time native compilation, as well as a large set
-of libraries.")
+ "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.
+
+The main Racket distribution comes with many bundled packages, including
+the DrRacket IDE, libraries for GUI and web programming, and implementations
+of languages such as Typed Racket, R5RS and R6RS Scheme, and Datalog.")
;; https://download.racket-lang.org/license.html
(license (list lgpl3+ asl2.0 expat))))
@@ -533,14 +573,15 @@ of libraries.")
(version (package-version racket))
(source (origin
(method url-fetch)
- (uri (list (string-append "http://mirror.racket-lang.org/installers/"
- version "/racket-minimal-" version "-src.tgz")
+ (uri (list (string-append "https://mirror.racket-lang.org/installers/"
+ version "/racket-minimal-src.tgz")
+ ;; this mirror seems to have broken HTTPS:
(string-append
"http://mirror.informatik.uni-tuebingen.de/mirror/racket/"
- version "/racket-minimal-" version "-src.tgz")))
+ version "/racket-minimal-src.tgz")))
(sha256
(base32
- "0yc5zkpq1bavj64h67pllw6mfjhmdp65fgdpyqcaan3syy6b5cia"))
+ "0mwyffw4gcci8wmzxa3j28h03h0gsz55aard8qrk3lri8r2xyg21"))
(patches (search-patches
"racket-store-checksum-override.patch"))))
(synopsis "Racket without bundled packages such as Dr. Racket")
@@ -551,18 +592,21 @@ of libraries.")
;; Delete fix that applies to files not included in the minimal package.
(delete 'pre-configure)))))
(inputs
- `(("libffi" ,libffi)
- ("openssl" ,openssl)
- ("sqlite" ,sqlite)))
+ `(("openssl" ,openssl)
+ ("sqlite" ,sqlite)
+ ("zlib" ,zlib)
+ ("zlib:static" ,zlib "static")
+ ("lz4" ,lz4)
+ ("lz4:static" ,lz4 "static")))
(description
- "Racket is an implementation of the Scheme programming language (R5RS and
-R6RS) and related languages, such as Typed Racket. It features a compiler and
-a virtual machine with just-in-time native compilation, as well as a large set
-of libraries.
+ "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.
-In this minimal package, the essential package racket-libs is included, as
-well as libraries that live in collections. In particular, @command{raco} and
-the @code{pkg} library are still bundled.")))
+The ``minimal Racket'' distribution includes just enough of Racket for you to
+use @command{raco pkg} to install more. Bundled packages, such as the
+Dr. Racket IDE, are not included.")))
(define-public gambit-c
(package