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>
This commit is contained in:
Philip McGrath 2021-03-01 19:43:18 -05:00 committed by Ludovic Courtès
parent b1248016e0
commit d2278beb10
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -398,22 +398,26 @@ (define-public scheme48
(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 @@ (define-public racket
(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 @@ (define-public racket
(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 @@ (define-public racket-minimal
(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 @@ (define-public racket-minimal
;; 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