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])
dnl GNU Guix --- Functional package management for GNU
-dnl Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+dnl Copyright © 2012, 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
dnl Copyright © 2014 Mark H Weaver <mhw@netris.org>
dnl Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
dnl
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.