summary refs log tree commit diff
path: root/gnu/packages/racket.scm
diff options
context:
space:
mode:
authorPhilip McGrath <philip@philipmcgrath.com>2022-02-27 16:28:58 -0500
committerLiliana Marie Prikler <liliana.prikler@gmail.com>2022-03-04 23:36:58 +0100
commit56cf53fb7b163eba1b76f8d95352920c09c48b3b (patch)
tree78977c26c7dc5798b96c533e67cfeaa151e800a4 /gnu/packages/racket.scm
parent0ff69fa1dd944706ad3835593cbea0af3fad3d17 (diff)
downloadguix-56cf53fb7b163eba1b76f8d95352920c09c48b3b.tar.gz
gnu: racket: Update to 8.4.
* gnu/packages/patches/racket-enable-scheme-backport.patch,
gnu/packages/patches/racket-gui-tethered-launcher-backport.patch: New
patches.
* gnu/local.mk (dist_patch_DATA): Add them.
* gnu/packages/racket.scm (%racket-version, %racket-commit)
(%racket-origin): New variables.
[patches]: Add "racket-enable-scheme-backport.patch".
(racket-minimal): Update to 8.4.
[version]: Use '%racket-version'.
[source]: Use '%racket-origin'.
[inputs]: Add 'ncurses'. Remove 'zlib:static' and 'lz4:static'.
(racket-minimal-bc-3m)[inputs]: Adjust accordingly.
(racket-bootstrap-chez-bootfiles)[version]: Use Chez Scheme's
'(scheme-fork-version-number)'.
(racket)[version]: Use '%racket-version'.
[native-inputs]: Use '%racket-origin'.
[source]: Update to 8.4.
<patches>: Use "racket-gui-tethered-launcher-backport.patch".
<snippet>: Remove "srfi-doc-nonfree".

Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
Diffstat (limited to 'gnu/packages/racket.scm')
-rw-r--r--gnu/packages/racket.scm98
1 files changed, 62 insertions, 36 deletions
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index ec9e836a4c..3911dc1ad8 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -43,6 +43,7 @@
   #:use-module (gnu packages libedit)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages xorg)
@@ -95,6 +96,41 @@
 ;;
 ;; Code:
 
+(define %racket-version "8.4")
+;; ^ Remember to update racket-bootstrap-chez-bootfiles!
+(define %racket-commit
+  (string-append "v" %racket-version))
+(define %racket-origin
+  (origin
+    (method git-fetch)
+    (uri (git-reference
+          (url "https://github.com/racket/racket")
+          (commit %racket-commit)))
+    (sha256
+     (base32 "1vpl66gdgc8rnldmn8rmb7ar9l057jqjvgpfn29k57i3c5skr8s6"))
+    (file-name (git-file-name "racket" %racket-version))
+    (patches (search-patches "racket-minimal-sh-via-rktio.patch"
+                             ;; Remove by Racket 8.5:
+                             "racket-enable-scheme-backport.patch"))
+    (modules '((guix build utils)))
+    (snippet
+     #~(begin
+         (use-modules (guix build utils))
+         ;; Unbundle Chez submodules.
+         (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
+           ;; without cyclic issues.
+           (for-each (lambda (dir)
+                       (when (directory-exists? dir)
+                         (delete-file-recursively dir)))
+                     '("stex"
+                       "nanopass"
+                       "lz4"
+                       "zlib")))
+         ;; Unbundle libffi.
+         (delete-file-recursively "racket/src/bc/foreign/libffi")))))
+
 (define cfg-flag:sh-for-rktio
   `(string-append "CPPFLAGS=-DGUIX_RKTIO_PATCH_BIN_SH="
                   (assoc-ref %build-inputs "sh")
@@ -128,41 +164,17 @@
 (define-public racket-minimal
   (package
     (name "racket-minimal")
-    (version "8.3")            ; note: remember to also update racket!
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/racket/racket")
-             (commit (string-append "v" version))))
-       (sha256
-        "1i1jnv1wb0kanfg47hniafx2vhwjc33qqx66lq7wkf5hbmgsyws3")
-       (file-name (git-file-name name version))
-       (patches (search-patches "racket-minimal-sh-via-rktio.patch"))
-       (modules '((guix build utils)))
-       (snippet
-        (with-imported-modules '((guix build utils))
-          #~(begin
-              ;; Unbundle Chez submodules.
-              (with-directory-excursion "racket/src/ChezScheme"
-                ;; Remove bundled libraries (copied from 'chez-scheme').
-                (for-each delete-file-recursively
-                          '("stex"
-                            "nanopass"
-                            "lz4"
-                            "zlib")))
-              ;; Unbundle libffi.
-              (delete-file-recursively "racket/src/bc/foreign/libffi"))))))
+    (version %racket-version)
+    (source %racket-origin)
     (inputs
      `(;; common to all racket-minimal variants:
        ("openssl" ,openssl)
        ("sqlite" ,sqlite)
-       ("sh" ,bash-minimal)
+       ("sh" ,bash-minimal) ;; <- for `system`
+       ("ncurses" ,ncurses) ;; <- for #%terminal
        ;; only for CS
        ("zlib" ,zlib)
-       ("zlib:static" ,zlib "static")
-       ("lz4" ,lz4)
-       ("lz4:static" ,lz4 "static")))
+       ("lz4" ,lz4)))
     (native-inputs
      `(("bootfiles" ,racket-bootstrap-chez-bootfiles)
        ,@(package-native-inputs racket-bootstrap-chez-bootfiles)))
@@ -263,9 +275,8 @@ DrRacket IDE, are not included.")
      (name "racket-minimal-bc-3m")
      (inputs
       (modify-inputs (package-inputs racket-minimal)
-        (delete "zlib" "zlib:static" "lz4" "lz4:static")
-        (prepend libffi ;; <- only for BC variants
-                 )))
+        (prepend libffi) ;; <- only for BC variants
+        (delete "zlib" "lz4")))
      (native-inputs
       `(("libtool" ,libtool)
         ("racket" ,(if (%current-target-system)
@@ -327,6 +338,11 @@ code to use the 3M garbage collector.")))
    (package
      (inherit racket-minimal)
      (name "racket-bootstrap-chez-bootfiles")
+     (version "9.5.7.3")
+     ;; The version should match `(scheme-fork-version-number)`.
+     ;; See racket/src/ChezScheme/s/cmacros.ss c. line 360.
+     ;; It will always be different than the upstream version!
+     ;; When updating, remember to also update %racket-version in racket.scm.
      (inputs `())
      (native-inputs
       `(("racket" ,(if (%current-target-system)
@@ -416,7 +432,7 @@ Chez Scheme.")
   (package
     (inherit racket-minimal)
     (name "racket")
-    (version (package-version racket-minimal)) ; needed for origin uri to work
+    (version %racket-version)
     (source
      (origin
        (method url-fetch)
@@ -425,7 +441,11 @@ Chez Scheme.")
                  %installer-mirrors))
        (sha256
         (base32
-         "0jdr0y7scvv2a3sq456ifrgq0yfsbiwavdf2m86zmrapp481mby4"))
+         "0dsv7br85nvh5gjfihznq9jb1dzas0f6gnv5qwc9zmb7yn75nrp5"))
+       (patches
+        ;; remove in Racket 8.5
+        ;; see https://github.com/racket/racket/issues/4133
+        (search-patches "racket-gui-tethered-launcher-backport.patch"))
        (snippet
         #~(begin
             (use-modules (guix build utils)
@@ -442,7 +462,13 @@ Chez Scheme.")
             (with-directory-excursion "share/pkgs"
               (for-each delete-file-recursively
                         '#+%main-repo-main-distribution-pkgs))
-            #t))))
+            ;; Minimal workaround for FSDG issue:
+            ;; see <https://github.com/racket/srfi/pull/15>.
+            ;; We will backport a better fix once we use Git
+            ;; origins for Racket packages.
+            (delete-file-recursively "share/pkgs/srfi-doc-nonfree")
+            (substitute* "share/pkgs/srfi/info.rkt"
+              (("\"srfi-doc-nonfree\"") ""))))))
     (inputs
      `(("cairo" ,cairo)
        ("fontconfig" ,fontconfig)
@@ -461,7 +487,7 @@ Chez Scheme.")
     (native-inputs
      `(("racket" ,racket-minimal)
        ("extend-layer" ,extend-layer)
-       ("main-repo" ,(package-source racket-minimal))))
+       ("main-repo" ,%racket-origin)))
     (arguments
      `(#:phases
        (modify-phases %standard-phases