guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/02: build: Detect broken 'equal?' in Guile 2.2.1.


From: Ludovic Courtès
Subject: 02/02: build: Detect broken 'equal?' in Guile 2.2.1.
Date: Sat, 6 Jan 2018 08:47:13 -0500 (EST)

civodul pushed a commit to branch master
in repository guix.

commit 142182514b84ee233bc27e574df2ca2074291525
Author: Ludovic Courtès <address@hidden>
Date:   Sat Jan 6 14:45:01 2018 +0100

    build: Detect broken 'equal?' in Guile 2.2.1.
    
    Fixes <https://bugs.gnu.org/29903>.
    Reported by Mathieu Lirzin <address@hidden>.
    
    * m4/guix.m4 (GUIX_ASSERT_SYNTAX_OBJECT_EQUAL): New macro.
    * configure.ac: Use it.
---
 configure.ac |  4 ++++
 m4/guix.m4   | 22 +++++++++++++++++++++-
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index aa70f14..53efa4a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -113,6 +113,10 @@ AM_CONDITIONAL([HAVE_GUILE_JSON], [test 
"x$have_guile_json" = "xyes"])
 dnl Make sure we have a full-fledged Guile.
 GUIX_ASSERT_GUILE_FEATURES([regex posix socket net-db threads])
 
+dnl Make sure we don't suffer from the bug in 'equal?' wrt. syntax objects
+dnl found in 2.2.1.  See <https://bugs.gnu.org/29903>.
+GUIX_ASSERT_SYNTAX_OBJECT_EQUAL
+
 dnl Decompressors, for use by the substituter and other modules.
 AC_PATH_PROG([GZIP], [gzip])
 AC_PATH_PROG([BZIP2], [bzip2])
diff --git a/m4/guix.m4 b/m4/guix.m4
index add57f5..721285b 100644
--- a/m4/guix.m4
+++ b/m4/guix.m4
@@ -1,5 +1,5 @@
 dnl GNU Guix --- Functional package management for GNU
-dnl Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <address@hidden>
+dnl Copyright © 2012, 2013, 2014, 2015, 2016, 2018 Ludovic Courtès 
<address@hidden>
 dnl Copyright © 2014 Mark H Weaver <address@hidden>
 dnl Copyright © 2017 Efraim Flashner <address@hidden>
 dnl
@@ -153,6 +153,26 @@ AC_DEFUN([GUIX_CHECK_UNBUFFERED_CBIP], [
      fi])
 ])
 
+dnl GUIX_ASSERT_SYNTAX_OBJECT_EQUAL
+dnl
+dnl Guile 2.2.1 was a brown-paper-bag release where 'equal?' wouldn't work
+dnl for syntax objects, which broke gexps.  Unfortunately Fedora 25 provides 
it.
+dnl Reject it.
+AC_DEFUN([GUIX_ASSERT_SYNTAX_OBJECT_EQUAL], [
+  AC_CACHE_CHECK([whether 'equal?' works for syntax objects],
+    [ac_cv_guix_syntax_object_equal],
+    [if "$GUILE" -c '(exit (equal? (syntax x) (syntax x)))'
+     then
+       ac_cv_guix_syntax_object_equal=yes
+     else
+       ac_cv_guix_syntax_object_equal=no
+     fi])
+  if test "x$ac_cv_guix_syntax_object_equal" != xyes; then
+    # This bug was present in Guile 2.2.1 only.
+    AC_MSG_ERROR(['equal?' does not work for syntax object; upgrade to Guile 
2.2.2 or later.])
+  fi
+])
+
 dnl GUIX_CHECK_GUILE_SSH
 dnl
 dnl Check whether a recent-enough Guile-SSH is available.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]