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 (define-public racket
(package (package
(name "racket") (name "racket")
(version "7.9") ; note: remember to also update racket-minimal! (version "8.0") ; note: remember to also update racket-minimal!
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (list (string-append "http://mirror.racket-lang.org/installers/" (uri (list (string-append "https://mirror.racket-lang.org/installers/"
version "/racket-" version "-src.tgz") version "/racket-src.tgz")
;; this mirror seems to have broken HTTPS:
(string-append (string-append
"http://mirror.informatik.uni-tuebingen.de/mirror/racket/" "http://mirror.informatik.uni-tuebingen.de/mirror/racket/"
version "/racket-" version "-src.tgz"))) version "/racket-src.tgz")))
(sha256 (sha256
(base32 (base32
"0gmp2ahmfd97nn9bwpfx9lznjmjkd042slnrrbdmyh59cqh98y2m")) "047wpjblfzmf1msz7snrp2c2h0zxyzlmbsqr9bwsyvz3frcg0888"))
(patches (search-patches (patches (search-patches
"racket-store-checksum-override.patch")))) "racket-store-checksum-override.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases '(#:configure-flags
'("--enable-libz"
"--enable-liblz4")
#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-before 'configure 'pre-configure-minimal (add-before 'configure 'pre-configure-minimal
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
@ -493,13 +497,45 @@ (define-public racket
(lambda _ (lambda _
(substitute* "collects/racket/system.rkt" (substitute* "collects/racket/system.rkt"
(("/bin/sh") (which "sh"))) (("/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? ;; XXX: how to run them?
#:tests? #f)) #:tests? #f))
(inputs (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. ;; 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) ("cairo" ,cairo)
("fontconfig" ,fontconfig) ("fontconfig" ,fontconfig)
("glib" ,glib) ("glib" ,glib)
@ -519,10 +555,14 @@ (define-public racket
(home-page "https://racket-lang.org") (home-page "https://racket-lang.org")
(synopsis "Implementation of Scheme and related languages") (synopsis "Implementation of Scheme and related languages")
(description (description
"Racket is an implementation of the Scheme programming language (R5RS and "Racket is a general-purpose programming language in the Scheme family,
R6RS) and related languages, such as Typed Racket. It features a compiler and with a large set of libraries and a compiler based on Chez Scheme. Racket is
a virtual machine with just-in-time native compilation, as well as a large set also a platform for language-oriented programming, from small domain-specific
of libraries.") 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 ;; https://download.racket-lang.org/license.html
(license (list lgpl3+ asl2.0 expat)))) (license (list lgpl3+ asl2.0 expat))))
@ -533,14 +573,15 @@ (define-public racket-minimal
(version (package-version racket)) (version (package-version racket))
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (list (string-append "http://mirror.racket-lang.org/installers/" (uri (list (string-append "https://mirror.racket-lang.org/installers/"
version "/racket-minimal-" version "-src.tgz") version "/racket-minimal-src.tgz")
;; this mirror seems to have broken HTTPS:
(string-append (string-append
"http://mirror.informatik.uni-tuebingen.de/mirror/racket/" "http://mirror.informatik.uni-tuebingen.de/mirror/racket/"
version "/racket-minimal-" version "-src.tgz"))) version "/racket-minimal-src.tgz")))
(sha256 (sha256
(base32 (base32
"0yc5zkpq1bavj64h67pllw6mfjhmdp65fgdpyqcaan3syy6b5cia")) "0mwyffw4gcci8wmzxa3j28h03h0gsz55aard8qrk3lri8r2xyg21"))
(patches (search-patches (patches (search-patches
"racket-store-checksum-override.patch")))) "racket-store-checksum-override.patch"))))
(synopsis "Racket without bundled packages such as Dr. Racket") (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 fix that applies to files not included in the minimal package.
(delete 'pre-configure))))) (delete 'pre-configure)))))
(inputs (inputs
`(("libffi" ,libffi) `(("openssl" ,openssl)
("openssl" ,openssl) ("sqlite" ,sqlite)
("sqlite" ,sqlite))) ("zlib" ,zlib)
("zlib:static" ,zlib "static")
("lz4" ,lz4)
("lz4:static" ,lz4 "static")))
(description (description
"Racket is an implementation of the Scheme programming language (R5RS and "Racket is a general-purpose programming language in the Scheme family,
R6RS) and related languages, such as Typed Racket. It features a compiler and with a large set of libraries and a compiler based on Chez Scheme. Racket is
a virtual machine with just-in-time native compilation, as well as a large set also a platform for language-oriented programming, from small domain-specific
of libraries. languages to complete language implementations.
In this minimal package, the essential package racket-libs is included, as The ``minimal Racket'' distribution includes just enough of Racket for you to
well as libraries that live in collections. In particular, @command{raco} and use @command{raco pkg} to install more. Bundled packages, such as the
the @code{pkg} library are still bundled."))) Dr. Racket IDE, are not included.")))
(define-public gambit-c (define-public gambit-c
(package (package