summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--configure.ac3
-rw-r--r--m4/guix.m417
2 files changed, 20 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index e98251b21b..61cee965b7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -47,6 +47,9 @@ if test "x$GUILD" = "x"; then
    AC_MSG_ERROR(['guild' binary not found; please check your guile-2.x installation.])
 fi
 
+dnl Make sure we have a full-fledged Guile.
+GUIX_ASSERT_GUILE_FEATURES([regex posix socket net-db threads])
+
 AC_ARG_WITH([nix-prefix],
   [AS_HELP_STRING([--with-nix-prefix=DIR], [search for Nix in DIR])],
   [case "$withval" in
diff --git a/m4/guix.m4 b/m4/guix.m4
index 6cf1b01c90..4fdc409602 100644
--- a/m4/guix.m4
+++ b/m4/guix.m4
@@ -67,3 +67,20 @@ AC_DEFUN([GUIX_SYSTEM_TYPE], [
 
   AC_SUBST([guix_system])
 ])
+
+dnl GUIX_ASSERT_GUILE_FEATURES FEATURES
+dnl
+dnl Assert that FEATURES are provided by $GUILE.
+AC_DEFUN([GUIX_ASSERT_GUILE_FEATURES], [
+  for guix_guile_feature in $1
+  do
+    AC_MSG_CHECKING([whether $GUILE provides feature '$guix_guile_feature'])
+    if "$GUILE" -c "(exit (provided? '$guix_guile_feature))"
+    then
+      AC_MSG_RESULT([yes])
+    else
+      AC_MSG_RESULT([no])
+      AC_MSG_ERROR([$GUILE does not support feature '$guix_guile_feature', which is required.])
+    fi
+  done
+])