[PATCH 1/4] gnu: racket: Move to (gnu packages racket).

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Philip McGrath
Owner
unassigned
Submitted by
Philip McGrath
Severity
normal
P
P
Philip McGrath wrote on 16 Apr 2021 23:08
(address . guix-patches@gnu.org)(name . Philip McGrath)(address . philip@philipmcgrath.com)
20210416210822.21536-1-philip@philipmcgrath.com
* gnu/packages/scheme.scm (racket,racket-minimal): Move to ...
* gnu/packages/racket.scm: ... this new file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/racket.scm (racket)[synopsis]: Tweak.
---
This package series does some internal reorganization of the `racket` and
`racket-minimal` packages in anticipation of the upcoming Racket 8.1 release.
The most important change is making `racket-minimal` the base package
with `racket` as the variant, rather than vice versa. Following Racket's
actual organization this way provides the right basis for further improvements
(e.g. changing `racket` to use `racket-minimal` as an input), though those
improvements should be easier after the 8.1 release.

gnu/local.mk | 1 +
gnu/packages/racket.scm | 242 ++++++++++++++++++++++++++++++++++++++++
gnu/packages/scheme.scm | 194 --------------------------------
3 files changed, 243 insertions(+), 194 deletions(-)
create mode 100644 gnu/packages/racket.scm

Toggle diff (432 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 50b11a8ca2..92ec4b4589 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -471,6 +471,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/toys.scm \
%D%/packages/tryton.scm \
%D%/packages/qt.scm \
+ %D%/packages/racket.scm \
%D%/packages/radio.scm \
%D%/packages/ragel.scm \
%D%/packages/rails.scm \
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
new file mode 100644
index 0000000000..925a6391f5
--- /dev/null
+++ b/gnu/packages/racket.scm
@@ -0,0 +1,242 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2020 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>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages racket)
+ #:use-module ((guix licenses)
+ #:select (asl2.0 expat lgpl3+))
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix utils)
+ #:use-module (guix gexp)
+ #:use-module (guix build-system gnu)
+ #:use-module (srfi srfi-1)
+ #:use-module (ice-9 match)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages bash)
+ #:use-module ((gnu packages chez)
+ #:select (chez-scheme))
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages databases)
+ #:use-module (gnu packages fontutils)
+ #:use-module (gnu packages gl)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages image)
+ #:use-module (gnu packages libedit)
+ #:use-module (gnu packages multiprecision)
+ #:use-module (gnu packages sqlite)
+ #:use-module (gnu packages tls)
+ #:use-module (gnu packages xorg))
+
+(define-public racket
+ (package
+ (name "racket")
+ (version "8.0") ; note: remember to also update racket-minimal!
+ (source (origin
+ (method url-fetch)
+ (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-src.tgz")))
+ (sha256
+ (base32
+ "047wpjblfzmf1msz7snrp2c2h0zxyzlmbsqr9bwsyvz3frcg0888"))
+ (patches (search-patches
+ "racket-sh-via-rktio.patch"
+ ;; TODO: If we're no longer patching Racket source
+ ;; files with store paths, we may also fix the
+ ;; issue that necessitated the following patch:
+ "racket-store-checksum-override.patch"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ `(,(string-append "CPPFLAGS=-DGUIX_RKTIO_PATCH_BIN_SH="
+ (assoc-ref %build-inputs "sh")
+ "/bin/sh")
+ "--enable-libz"
+ "--enable-liblz4")
+ #:modules
+ ((guix build gnu-build-system)
+ (guix build utils)
+ (srfi srfi-1))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack '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"))))
+ #t))
+ (add-before 'configure 'pre-configure-minimal
+ (lambda* (#:key inputs #:allow-other-keys)
+ (chdir "src")
+ #t))
+ (add-after 'build 'patch-config.rktd-lib-search-dirs
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; We do this between the `build` and `install` phases
+ ;; so that we have racket to read and write the hash table,
+ ;; but it comes before `raco setup`, when foreign libraries
+ ;; are needed to build the documentation.
+ (define out (assoc-ref outputs "out"))
+ (apply invoke
+ "./cs/c/racketcs"
+ "-e"
+ ,(format #f
+ "~s"
+ '(let* ((args
+ (vector->list
+ (current-command-line-arguments)))
+ (file (car args))
+ (extra-lib-search-dirs (cdr args)))
+ (write-to-file
+ (hash-update
+ (file->value file)
+ 'lib-search-dirs
+ (lambda (dirs)
+ (append dirs extra-lib-search-dirs))
+ null)
+ #:exists 'truncate/replace
+ file)))
+ "--"
+ "../etc/config.rktd"
+ (filter-map (lambda (lib)
+ (cond
+ ((assoc-ref inputs lib)
+ => (lambda (pth)
+ (string-append pth "/lib")))
+ (else
+ #f)))
+ '("cairo"
+ "fontconfig"
+ "glib"
+ "glu"
+ "gmp"
+ "gtk+"
+ "libjpeg"
+ "libpng"
+ "libx11"
+ "mesa"
+ "mpfr"
+ "openssl"
+ "pango"
+ "sqlite"
+ "unixodbc"
+ "libedit")))
+ #t)))
+ ;; XXX: how to run them?
+ #:tests? #f))
+ (inputs
+ `(;; sqlite and libraries for `racket/draw' are needed to build the doc.
+ ("sh" ,bash-minimal)
+ ("zlib" ,zlib)
+ ("zlib:static" ,zlib "static")
+ ("lz4" ,lz4)
+ ("lz4:static" ,lz4 "static")
+ ("cairo" ,cairo)
+ ("fontconfig" ,fontconfig)
+ ("glib" ,glib)
+ ("glu" ,glu)
+ ("gmp" ,gmp)
+ ("gtk+" ,gtk+) ; propagates gdk-pixbuf+svg
+ ("libjpeg" ,libjpeg-turbo)
+ ("libpng" ,libpng)
+ ("libx11" ,libx11)
+ ("mesa" ,mesa)
+ ("mpfr" ,mpfr)
+ ("openssl" ,openssl)
+ ("pango" ,pango)
+ ("sqlite" ,sqlite)
+ ("unixodbc" ,unixodbc)
+ ("libedit" ,libedit)))
+ (home-page "https://racket-lang.org")
+ (synopsis "A programmable programming language in the Scheme family")
+ (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.
+
+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, Algol 60, and Datalog.")
+ ;; https://download.racket-lang.org/license.html
+ (license (list lgpl3+ asl2.0 expat))))
+
+(define-public racket-minimal
+ (package
+ (inherit racket)
+ (name "racket-minimal")
+ (version (package-version racket))
+ (source
+ (origin
+ (inherit (package-source racket))
+ (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-src.tgz")))
+ (sha256 "0mwyffw4gcci8wmzxa3j28h03h0gsz55aard8qrk3lri8r2xyg21")))
+ (synopsis "Racket without bundled packages such as DrRacket")
+ (inputs
+ `(("openssl" ,openssl)
+ ("sqlite" ,sqlite)
+ ("sh" ,bash-minimal)
+ ("zlib" ,zlib)
+ ("zlib:static" ,zlib "static")
+ ("lz4" ,lz4)
+ ("lz4:static" ,lz4 "static")))
+ (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.
+
+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.")))
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index b5d526bfc3..23de98fb2e 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -397,200 +397,6 @@ implementation techniques and as an expository tool.")
;; Most files are BSD-3; see COPYING for the few exceptions.
(license bsd-3)))
-(define-public racket
- (package
- (name "racket")
- (version "8.0") ; note: remember to also update racket-minimal!
- (source (origin
- (method url-fetch)
- (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-src.tgz")))
- (sha256
- (base32
- "047wpjblfzmf1msz7snrp2c2h0zxyzlmbsqr9bwsyvz3frcg0888"))
- (patches (search-patches
- "racket-sh-via-rktio.patch"
- ;; TODO: If we're no longer patching Racket source
- ;; files with store paths, we may also fix the
- ;; issue that necessitated the following patch:
- "racket-store-checksum-override.patch"))))
- (build-system gnu-build-system)
- (arguments
- `(#:configure-flags
- `(,(string-append "CPPFLAGS=-DGUIX_RKTIO_PATCH_BIN_SH="
- (assoc-ref %build-inputs "sh")
- "/bin/sh")
- "--enable-libz"
- "--enable-liblz4")
- #:modules
- ((guix build gnu-build-system)
- (guix build utils)
- (srfi srfi-1))
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack '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"))))
- #t))
- (add-before 'configure 'pre-configure-minimal
- (lambda* (#:key inputs #:allow-other-keys)
- (chdir "src")
- #t))
- (add-after 'build 'patch-config.rktd-lib-search-dirs
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; We do this between the `build` and `install` phases
- ;; so that we have racket to read and write the hash table,
- ;; but it comes before `raco setup`, when foreign libraries
- ;; are needed to build the documentation.
- (define out (assoc-ref outputs "out"))
- (apply invoke
- "./cs/c/racketcs"
- "-e"
- ,(format #f
- "~s"
- '(let* ((args
- (vector->list
- (current-command-line-arguments)))
- (file (car args))
- (extra-lib-search-dirs (cdr args)))
- (write-to-file
- (hash-update
- (file->value file)
- 'lib-search-dirs
- (lambda (dirs)
- (append dirs extra-lib-search-dirs))
- null)
- #:exists 'truncate/replace
- file)))
- "--"
- "../etc/config.rktd"
- (filter-map (lambda (lib)
- (cond
- ((assoc-ref inputs lib)
- => (lambda (pth)
- (string-append pth "/lib")))
- (else
- #f)))
- '("cairo"
- "fontconfig"
- "glib"
- "glu"
- "gmp"
- "gtk+"
- "libjpeg"
- "libpng"
- "libx11"
- "mesa"
- "mpfr"
- "openssl"
- "pango"
- "sqlite"
- "unixodbc"
- "libedit")))
- #t)))
- ;; XXX: how to run them?
- #:tests? #f))
- (inputs
- `(;; sqlite and libraries for `racket/draw' are needed to build the doc.
- ("sh" ,bash-minimal)
- ("zlib" ,zlib)
- ("zlib:static" ,zlib "static")
- ("lz4" ,lz4)
- ("lz4:static" ,lz4 "static")
- ("cairo" ,cairo)
- ("fontconfig" ,fontconfig)
- ("glib" ,glib)
- ("glu" ,glu)
- ("gmp" ,gmp)
- ("gtk+" ,gtk+) ; propagates gdk-pixbuf+svg
- ("libjpeg" ,libjpeg-turbo)
- ("libpng" ,libpng)
- ("libx11" ,libx11)
- ("mesa" ,mesa)
- ("mpfr" ,mpfr)
- ("openssl" ,openssl)
- ("pango" ,pango)
- ("sqlite" ,sqlite)
- ("unixodbc" ,unixodbc)
- ("libedit" ,libedit)))
- (home-page "https://racket-lang.org")
- (synopsis "Implementation of Scheme and related languages")
- (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.
-
-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))))
-
-(define-public racket-minimal
- (package
- (inherit racket)
- (name "racket
This message was truncated. Download the full message here.
P
P
Philip McGrath wrote on 16 Apr 2021 23:11
[PATCH 2/4] gnu: racket: Remove obsolete patch.
(address . 47829@debbugs.gnu.org)(name . Philip McGrath)(address . philip@philipmcgrath.com)
20210416211139.21825-1-philip@philipmcgrath.com
* gnu/packages/racket.scm (racket)[source](patches): Remove
"racket-store-checksum-override.patch", which is no longer needed since
we stopped injecting store paths into Racket files in commit 834aa48:
* gnu/packages/patches/racket-store-checksum-override.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
gnu/local.mk | 1 -
.../racket-store-checksum-override.patch | 42 -------------------
gnu/packages/racket.scm | 6 +--
3 files changed, 1 insertion(+), 48 deletions(-)
delete mode 100644 gnu/packages/patches/racket-store-checksum-override.patch

Toggle diff (80 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 92ec4b4589..26c93885ef 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1642,7 +1642,6 @@ dist_patch_DATA = \
%D%/packages/patches/rpcbind-CVE-2017-8779.patch \
%D%/packages/patches/rtags-separate-rct.patch \
%D%/packages/patches/racket-sh-via-rktio.patch \
- %D%/packages/patches/racket-store-checksum-override.patch \
%D%/packages/patches/remake-impure-dirs.patch \
%D%/packages/patches/retroarch-LIBRETRO_DIRECTORY.patch \
%D%/packages/patches/rnp-add-version.cmake.patch \
diff --git a/gnu/packages/patches/racket-store-checksum-override.patch b/gnu/packages/patches/racket-store-checksum-override.patch
deleted file mode 100644
index 6c4ebcf022..0000000000
--- a/gnu/packages/patches/racket-store-checksum-override.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-Racket uses checksums to test if it needs to recompile its source
-files to bytecode. If Racket is updated by grafting, the source and
-bytecode files get updated, but the checksum stays the same. Since
-the checksum no longer matches the source file, Racket tries to
-regenerate the bytecode and write it to the store, causing errors
-because the store is immutable. This patch makes Racket ignore
-checksums for files in the store.
-
-See <https://debbugs.gnu.org/30680> for details.
-
----
---- a/collects/compiler/private/cm-minimal.rkt
-+++ b/collects/compiler/private/cm-minimal.rkt
-@@ -6,6 +6,7 @@
- racket/list
- racket/path
- racket/promise
-+ racket/string
- file/sha1
- setup/cross-system
- compiler/compilation-path
-@@ -268,7 +269,8 @@
- (trace-printf "newer src... ~a > ~a" path-time path-zo-time)
- (maybe-compile-zo deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen
- #:trying-sha1? sha1-only?)]
-- [(different-source-sha1-and-dep-recorded path deps)
-+ [(and (not (store-reference? path))
-+ (different-source-sha1-and-dep-recorded path deps))
- => (lambda (difference)
- (trace-printf "different src hash ~a for ~a..." difference path)
- (maybe-compile-zo deps path->mode roots path orig-path read-src-syntax up-to-date collection-cache new-seen
-@@ -1012,5 +1014,9 @@
- #f
- (list src-hash recorded-hash)))
-
-+(define (store-reference? path)
-+ (let ([store-prefix (or (getenv "NIX_STORE") "/gnu/store")])
-+ (string-prefix? (path->string path) store-prefix)))
-+
- ;; Make sure `recompile-from` is machine-independent so that
- ;; recompilation makes sense.
- ;; The compilation lock must is held for the source of `recompile-from`.
\ No newline at end of file
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index 925a6391f5..6cb72e592c 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -63,11 +63,7 @@
(base32
"047wpjblfzmf1msz7snrp2c2h0zxyzlmbsqr9bwsyvz3frcg0888"))
(patches (search-patches
- "racket-sh-via-rktio.patch"
- ;; TODO: If we're no longer patching Racket source
- ;; files with store paths, we may also fix the
- ;; issue that necessitated the following patch:
- "racket-store-checksum-override.patch"))))
+ "racket-sh-via-rktio.patch"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
--
2.25.1
P
P
Philip McGrath wrote on 16 Apr 2021 23:11
[PATCH 3/4] gnu: racket: Racket inherits racket-minimal, not vice versa.
(address . 47829@debbugs.gnu.org)(name . Philip McGrath)(address . philip@philipmcgrath.com)
20210416211139.21825-2-philip@philipmcgrath.com
By design, the `racket` package is equivalent to 'racket-minimal'
plus 'raco pkg install -i main-distribution'.
This switch brings the Guix packages a small step closer to that goal.

* gnu/packages/racket.scm (racket-minimal, racket): Change
'racket-minimal' to be the base package and 'racket' to inherit
from it. Move 'version', 'patches', 'home-page', 'build-system',
'arguments', and 'license' to 'racket-minimal'.
* gnu/packages/racket.scm (racket)[inputs]: Rather than copy and
pasting, use '(package-inputs racket-minimal)'.
---
gnu/packages/racket.scm | 123 ++++++++++++++++++++--------------------
1 file changed, 60 insertions(+), 63 deletions(-)

Toggle diff (160 lines)
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index 6cb72e592c..73e00240de 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -47,23 +47,32 @@
#:use-module (gnu packages tls)
#:use-module (gnu packages xorg))
-(define-public racket
+(define-public racket-minimal
(package
- (name "racket")
- (version "8.0") ; note: remember to also update racket-minimal!
- (source (origin
- (method url-fetch)
- (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-src.tgz")))
- (sha256
- (base32
- "047wpjblfzmf1msz7snrp2c2h0zxyzlmbsqr9bwsyvz3frcg0888"))
- (patches (search-patches
- "racket-sh-via-rktio.patch"))))
+ (name "racket-minimal")
+ (version "8.0") ; note: remember to also update racket!
+ (source
+ (origin
+ (method url-fetch)
+ (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-src.tgz")))
+ (sha256 "0mwyffw4gcci8wmzxa3j28h03h0gsz55aard8qrk3lri8r2xyg21")
+ (patches (search-patches
+ "racket-sh-via-rktio.patch"))))
+ (home-page "https://racket-lang.org")
+ (synopsis "Racket without bundled packages such as DrRacket")
+ (inputs
+ `(("openssl" ,openssl)
+ ("sqlite" ,sqlite)
+ ("sh" ,bash-minimal)
+ ("zlib" ,zlib)
+ ("zlib:static" ,zlib "static")
+ ("lz4" ,lz4)
+ ("lz4:static" ,lz4 "static")))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@@ -164,15 +173,41 @@
"unixodbc"
"libedit")))
#t)))
- ;; XXX: how to run them?
+ ;; Tests are in packages like racket-test-core and
+ ;; main-distribution-test that aren't part of the main distribution.
#:tests? #f))
+ (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.
+
+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.")
+ ;; https://download.racket-lang.org/license.html
+ (license (list lgpl3+ asl2.0 expat))))
+
+
+(define-public racket
+ (package/inherit
+ racket-minimal
+ (name "racket")
+ (version (package-version racket-minimal)) ; needed for origin uri to work
+ (source
+ (origin
+ (inherit (package-source racket-minimal))
+ (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-src.tgz")))
+ (sha256
+ (base32
+ "047wpjblfzmf1msz7snrp2c2h0zxyzlmbsqr9bwsyvz3frcg0888"))))
(inputs
`(;; sqlite and libraries for `racket/draw' are needed to build the doc.
- ("sh" ,bash-minimal)
- ("zlib" ,zlib)
- ("zlib:static" ,zlib "static")
- ("lz4" ,lz4)
- ("lz4:static" ,lz4 "static")
("cairo" ,cairo)
("fontconfig" ,fontconfig)
("glib" ,glib)
@@ -184,12 +219,10 @@
("libx11" ,libx11)
("mesa" ,mesa)
("mpfr" ,mpfr)
- ("openssl" ,openssl)
("pango" ,pango)
- ("sqlite" ,sqlite)
("unixodbc" ,unixodbc)
- ("libedit" ,libedit)))
- (home-page "https://racket-lang.org")
+ ("libedit" ,libedit)
+ ,@(package-inputs racket-minimal)))
(synopsis "A programmable programming language in the Scheme family")
(description
"Racket is a general-purpose programming language in the Scheme family,
@@ -199,40 +232,4 @@ 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, Algol 60, and Datalog.")
- ;; https://download.racket-lang.org/license.html
- (license (list lgpl3+ asl2.0 expat))))
-
-(define-public racket-minimal
- (package
- (inherit racket)
- (name "racket-minimal")
- (version (package-version racket))
- (source
- (origin
- (inherit (package-source racket))
- (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-src.tgz")))
- (sha256 "0mwyffw4gcci8wmzxa3j28h03h0gsz55aard8qrk3lri8r2xyg21")))
- (synopsis "Racket without bundled packages such as DrRacket")
- (inputs
- `(("openssl" ,openssl)
- ("sqlite" ,sqlite)
- ("sh" ,bash-minimal)
- ("zlib" ,zlib)
- ("zlib:static" ,zlib "static")
- ("lz4" ,lz4)
- ("lz4:static" ,lz4 "static")))
- (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.
-
-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.")))
+languages such as Typed Racket, R5RS and R6RS Scheme, Algol 60, and Datalog.")))
--
2.25.1
P
P
Philip McGrath wrote on 16 Apr 2021 23:11
[PATCH 4/4] gnu: racket: Add aditional mirrors.
(address . 47829@debbugs.gnu.org)(name . Philip McGrath)(address . philip@philipmcgrath.com)
20210416211139.21825-3-philip@philipmcgrath.com
* gnu/packages/racket.scm (racket-minimal, racket)[source](uri): Lift
base urls into a new internal variable, '%installer-mirrors'.
Add mirrors at the University of Utah, Northwestern University,
the University of Waterloo, and Vrije Universiteit Brussel (Infogroep).
---
gnu/packages/racket.scm | 34 ++++++++++++++++++++++------------
1 file changed, 22 insertions(+), 12 deletions(-)

Toggle diff (61 lines)
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index 73e00240de..f2bbf28564 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -47,6 +47,22 @@
#:use-module (gnu packages tls)
#:use-module (gnu packages xorg))
+
+(define %installer-mirrors
+ ;; Source:
+ ;; https://github.com/racket/racket-lang-org/blob/master/download/data.rkt#L58
+ ;; Matthew Flatt says: "note that many are commented out"
+ ;; INVARIANT: End with a trailing "/"!
+ '("https://mirror.racket-lang.org/installers/"
+ "https://www.cs.utah.edu/plt/installers/"
+ "https://plt.cs.northwestern.edu/racket-mirror/"
+ "https://mirror.csclub.uwaterloo.ca/racket/racket-installers/"
+ ;; Universität Tübingen is using a self-signed HTTPS certificate:
+ "http://mirror.informatik.uni-tuebingen.de/mirror/racket/"
+ "https://racket.infogroep.be/"
+ ))
+
+
(define-public racket-minimal
(package
(name "racket-minimal")
@@ -54,12 +70,9 @@
(source
(origin
(method url-fetch)
- (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-src.tgz")))
+ (uri (map (lambda (base)
+ (string-append base version "/racket-minimal-src.tgz"))
+ %installer-mirrors))
(sha256 "0mwyffw4gcci8wmzxa3j28h03h0gsz55aard8qrk3lri8r2xyg21")
(patches (search-patches
"racket-sh-via-rktio.patch"))))
@@ -197,12 +210,9 @@ DrRacket IDE, are not included.")
(source
(origin
(inherit (package-source racket-minimal))
- (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-src.tgz")))
+ (uri (map (lambda (base)
+ (string-append base version "/racket-src.tgz"))
+ %installer-mirrors))
(sha256
(base32
"047wpjblfzmf1msz7snrp2c2h0zxyzlmbsqr9bwsyvz3frcg0888"))))
--
2.25.1
L
L
Ludovic Courtès wrote on 5 May 2021 16:12
Re: bug#47829: [PATCH 1/4] gnu: racket: Move to (gnu packages racket).
(name . Philip McGrath)(address . philip@philipmcgrath.com)(address . 47829-done@debbugs.gnu.org)
878s4tjmm3.fsf_-_@gnu.org
Hi Philip,

Applied all four patches. Thank you, and sorry for the delay!

Ludo’.
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 47829@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 47829
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch