diff options
-rw-r--r-- | gnu/local.mk | 1 | ||||
-rw-r--r-- | gnu/packages/guile-xyz.scm | 5 | ||||
-rw-r--r-- | gnu/packages/guile.scm | 11 | ||||
-rw-r--r-- | gnu/packages/patches/guile-3.0.7-psyntax-nil.patch | 63 |
4 files changed, 4 insertions, 76 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index e423732e35..a706409516 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1239,7 +1239,6 @@ dist_patch_DATA = \ %D%/packages/patches/guile-3.0-relocatable.patch \ %D%/packages/patches/guile-linux-syscalls.patch \ %D%/packages/patches/guile-3.0-linux-syscalls.patch \ - %D%/packages/patches/guile-3.0.7-psyntax-nil.patch \ %D%/packages/patches/guile-fibers-destroy-peer-schedulers.patch \ %D%/packages/patches/guile-fibers-wait-for-io-readiness.patch \ %D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \ diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index 6e1bbb71e9..b75687cd3c 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -5011,7 +5011,10 @@ HTTP handler to implement a HTTP GraphQL endpoint.") libtool gnu-gettext pkg-config - guile-3.0-for-lokke)) + + ;; Use Guile >= 3.0.8 to work around + ;; <https://bugs.gnu.org/49305>. + guile-3.0-latest)) (inputs (list pcre2)) (synopsis "Clojure implementation in Guile") diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index cad5b91b9e..f74a389da5 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -405,17 +405,6 @@ without requiring the source code to be rewritten.") ;; its multi-stage build process for cross-module inlining. ((#:parallel-build? _ #f) #t))))) -(define-public guile-3.0-for-lokke - ;; Work around a bug in 3.0.7 regarding #nil handling by psyntax: - ;; <https://bugs.gnu.org/49305>. TODO: Replace by 3.0.8 when it's out. - (hidden-package - (package/inherit guile-3.0 - (version (string-append (package-version guile-3.0) ".1")) - (source (origin - (inherit (package-source guile-3.0)) - (patches (cons (search-patch "guile-3.0.7-psyntax-nil.patch") - (origin-patches (package-source guile-3.0))))))))) - (define-public guile-3.0/fixed ;; A package of Guile that's rarely changed. It is the one used in the ;; `base' module, and thus changing it entails a full rebuild. diff --git a/gnu/packages/patches/guile-3.0.7-psyntax-nil.patch b/gnu/packages/patches/guile-3.0.7-psyntax-nil.patch deleted file mode 100644 index 7a24e6e9ef..0000000000 --- a/gnu/packages/patches/guile-3.0.7-psyntax-nil.patch +++ /dev/null @@ -1,63 +0,0 @@ -commit d79a226359d28f4a1dc5df136e5544d699903a96 -Author: Rob Browning <rlb@defaultvalue.org> -Date: Sat Jul 3 14:01:12 2021 -0500 - - Fix crash on #nil in syntaxes - - In 3.0.7 (after 0cc799185576712d69f11fc794454f2f5447bef7 "Ensure - that (syntax ()) results in ("), the use of #nil in syntax-rules - expansions like this: - - (define-syntax foo - (syntax-rules () - ((_ x) (eq? #nil x)))) - - (foo #t) - - could cause a crash that looks like this: - - ice-9/psyntax.scm:2795:12: In procedure syntax-violation: - Syntax error: - unknown location: unexpected syntax in form () - - To fix it, add another special case (the commit mentioned above - special-cased the empty list) to preserve #nil - - * module/ice-9/psyntax.scm (gen-syntax): Preserve #nil. - * test-suite/tests/syntax.test: Test #nil in syntax expansions. - - Closes: 49305 - -diff --git a/module/ice-9/psyntax.scm b/module/ice-9/psyntax.scm -index 663d9275a..bd4bd6723 100644 ---- a/module/ice-9/psyntax.scm -+++ b/module/ice-9/psyntax.scm -@@ -2157,6 +2157,7 @@ - (lambda () - (gen-syntax src #'(e1 e2 ...) r maps ellipsis? mod)) - (lambda (e maps) (values (gen-vector e) maps)))) -+ (x (eq? (syntax->datum #'x) #nil) (values '(quote #nil) maps)) - (() (values '(quote ()) maps)) - (_ (values `(quote ,e) maps)))))) - -diff --git a/test-suite/tests/syntax.test b/test-suite/tests/syntax.test -index a2999ac43..510e7104d 100644 ---- a/test-suite/tests/syntax.test -+++ b/test-suite/tests/syntax.test -@@ -1684,6 +1684,16 @@ - (hash interpreted most-positive-fixnum) - (hash compiled most-positive-fixnum)))) - -+(with-test-prefix "#nil in syntaxes" -+ (pass-if-equal "does not crash" -+ 42 -+ (let () -+ (define-syntax foo -+ (syntax-rules () -+ ;; In 3.0.7 this would crash with -+ ;; unknown location: unexpected syntax in form () -+ ((_ x) (when (eq? x #nil) 42)))) -+ (foo #nil)))) - - ;;; Local Variables: - ;;; eval: (put 'pass-if-syntax-error 'scheme-indent-function 1) |