WIP:afs-service-commit
[jackhill/guix/guix.git] / configure.ac
index e5daadb..adca374 100644 (file)
@@ -2,11 +2,13 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.68)
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.68)
-AC_INIT([GNU Guix], [0.12.0], [bug-guix@gnu.org], [guix],
-  [http://www.gnu.org/software/guix/])
+AC_INIT([GNU Guix],
+  [m4_esyscmd([build-aux/git-version-gen .tarball-version])],
+  [bug-guix@gnu.org], [guix],
+  [https://www.gnu.org/software/guix/])
 AC_CONFIG_AUX_DIR([build-aux])
 
 AC_CONFIG_AUX_DIR([build-aux])
 
-AM_INIT_AUTOMAKE([1.12 gnu silent-rules subdir-objects \
+AM_INIT_AUTOMAKE([1.14 gnu silent-rules subdir-objects \
  color-tests parallel-tests -Woverride -Wno-portability])
 
 # Enable silent rules by default.
  color-tests parallel-tests -Woverride -Wno-portability])
 
 # Enable silent rules by default.
@@ -24,6 +26,8 @@ AM_GNU_GETTEXT_VERSION([0.18.1])
 GUIX_SYSTEM_TYPE
 GUIX_ASSERT_SUPPORTED_SYSTEM
 
 GUIX_SYSTEM_TYPE
 GUIX_ASSERT_SUPPORTED_SYSTEM
 
+AM_CONDITIONAL([CROSS_COMPILING], [test "x$cross_compiling" = "xyes"])
+
 AC_ARG_WITH(store-dir,
   AC_HELP_STRING([--with-store-dir=PATH],
     [file name of the store (defaults to /gnu/store)]),
 AC_ARG_WITH(store-dir,
   AC_HELP_STRING([--with-store-dir=PATH],
     [file name of the store (defaults to /gnu/store)]),
@@ -45,12 +49,26 @@ AC_ARG_WITH([zsh-completion-dir],
   [zshcompletiondir='${datadir}/zsh/site-functions'])
 AC_SUBST([zshcompletiondir])
 
   [zshcompletiondir='${datadir}/zsh/site-functions'])
 AC_SUBST([zshcompletiondir])
 
+AC_ARG_WITH([fish-completion-dir],
+  AC_HELP_STRING([--with-fish-completion-dir=DIR],
+    [name of the Fish completion directory]),
+  [fishcompletiondir="$withval"],
+  [fishcompletiondir='${datadir}/fish/vendor_completions.d'])
+AC_SUBST([fishcompletiondir])
+
+AC_ARG_WITH([selinux-policy-dir],
+  AC_HELP_STRING([--with-selinux-policy-dir=DIR],
+    [name of the SELinux policy directory]),
+  [selinux_policydir="$withval"],
+  [selinux_policydir='${datadir}/selinux/'])
+AC_SUBST([selinux_policydir])
+
 dnl Better be verbose.
 AC_MSG_CHECKING([for the store directory])
 AC_MSG_RESULT([$storedir])
 
 AC_ARG_ENABLE([daemon],
 dnl Better be verbose.
 AC_MSG_CHECKING([for the store directory])
 AC_MSG_RESULT([$storedir])
 
 AC_ARG_ENABLE([daemon],
-  [AS_HELP_STRING([--disable-daemon], [build the Nix daemon (C++)])],
+  [AS_HELP_STRING([--disable-daemon], [do not build the Nix daemon (C++)])],
   [guix_build_daemon="$enableval"],
   [guix_build_daemon="yes"])
 
   [guix_build_daemon="$enableval"],
   [guix_build_daemon="yes"])
 
@@ -71,25 +89,27 @@ dnl We require pkg.m4 (from pkg-config) and guile.m4 (from Guile.)
 dnl Make sure they are available.
 m4_pattern_forbid([PKG_CHECK_MODULES])
 m4_pattern_forbid([GUILE_MODULE_AVAILABLE])
 dnl Make sure they are available.
 m4_pattern_forbid([PKG_CHECK_MODULES])
 m4_pattern_forbid([GUILE_MODULE_AVAILABLE])
-m4_pattern_forbid([^GUILE_P$])
+m4_pattern_forbid([^GUILE_P])
+m4_pattern_allow([^GUILE_PKG_ERRORS])
+m4_pattern_forbid([^GUIX_])
 
 
-dnl Search for 'guile' and 'guild'.  Prefer 2.0 until the 2.2 upgrade is
-dnl complete.  This macro defines 'GUILE_EFFECTIVE_VERSION'.
-GUILE_PKG([2.0 2.2])
+dnl Search for 'guile' and 'guild'.  This macro defines
+dnl 'GUILE_EFFECTIVE_VERSION'.
+GUILE_PKG([3.0 2.2])
 GUILE_PROGS
 if test "x$GUILD" = "x"; then
 GUILE_PROGS
 if test "x$GUILD" = "x"; then
-   AC_MSG_ERROR(['guild' binary not found; please check your guile-2.x installation.])
+   AC_MSG_ERROR(['guild' binary not found; please check your Guile installation.])
 fi
 
 fi
 
-if test "x$GUILE_EFFECTIVE_VERSION" = "x2.0"; then
-  PKG_CHECK_MODULES([GUILE], [guile-2.0 >= 2.0.7])
-else
-  AC_MSG_WARN([Guile $GUILE_EFFECTIVE_VERSION is not fully supported!])
+if test "x$GUILE_EFFECTIVE_VERSION" = "x2.2"; then
+  PKG_CHECK_MODULES([GUILE], [guile-2.2 >= 2.2.3])
 fi
 
 fi
 
-dnl Installation directory for .scm and .go files.
+dnl Installation directories for .scm and .go files.
 guilemoduledir="${datarootdir}/guile/site/$GUILE_EFFECTIVE_VERSION"
 guilemoduledir="${datarootdir}/guile/site/$GUILE_EFFECTIVE_VERSION"
+guileobjectdir="${libdir}/guile/$GUILE_EFFECTIVE_VERSION/site-ccache"
 AC_SUBST([guilemoduledir])
 AC_SUBST([guilemoduledir])
+AC_SUBST([guileobjectdir])
 
 dnl The GnuTLS bindings are necessary for substitutes over HTTPS and for 'guix
 dnl pull', among other things.
 
 dnl The GnuTLS bindings are necessary for substitutes over HTTPS and for 'guix
 dnl pull', among other things.
@@ -98,16 +118,60 @@ if test "x$have_gnutls" != "xyes"; then
   AC_MSG_ERROR([The Guile bindings of GnuTLS are missing; please install them.])
 fi
 
   AC_MSG_ERROR([The Guile bindings of GnuTLS are missing; please install them.])
 fi
 
-dnl Guile-JSON is used in various places.
-GUILE_MODULE_AVAILABLE([have_guile_json], [(json)])
-AM_CONDITIONAL([HAVE_GUILE_JSON], [test "x$have_guile_json" = "xyes"])
+dnl Check for Guile-Git.
+GUILE_MODULE_AVAILABLE([have_guile_git], [(git)])
+if test "x$have_guile_git" != "xyes"; then
+  AC_MSG_ERROR([Guile-Git is missing; please install it.])
+fi
+
+dnl Check for Guile-JSON.
+GUIX_CHECK_GUILE_JSON
+if test "x$guix_cv_have_recent_guile_json" != "xyes"; then
+  AC_MSG_ERROR([Guile-JSON is missing; please install it.])
+fi
+
+dnl Guile-Sqlite3 is used by the (guix store ...) modules.
+GUIX_CHECK_GUILE_SQLITE3
+if test "x$guix_cv_have_recent_guile_sqlite3" != "xyes"; then
+  AC_MSG_ERROR([A recent Guile-SQLite3 could not be found; please install it.])
+fi
+
+GUIX_CHECK_GUILE_GCRYPT
+if test "x$guix_cv_have_recent_guile_gcrypt" != "xyes"; then
+  AC_MSG_ERROR([A recent Guile-Gcrypt could not be found; please install it.])
+fi
+
+dnl Check for Guile-zlib.
+GUILE_MODULE_AVAILABLE([have_guile_zlib], [(zlib)])
+if test "x$have_guile_zlib" != "xyes"; then
+  AC_MSG_ERROR([Guile-zlib is missing; please install it.])
+fi
+
+dnl Check for Guile-lzlib.
+GUILE_MODULE_AVAILABLE([have_guile_lzlib], [(lzlib)])
+if test "x$have_guile_lzlib" != "xyes"; then
+  AC_MSG_ERROR([Guile-lzlib is missing; please install it.])
+fi
+
+dnl Guile-newt is used by the graphical installer.
+GUILE_MODULE_AVAILABLE([have_guile_newt], [(newt)])
+
+AC_ARG_ENABLE([installer],
+    AS_HELP_STRING([--enable-installer], [Build the graphical installer sources.]))
+
+AS_IF([test "x$enable_installer" = "xyes"], [
+if test "x$have_guile_newt" != "xyes"; then
+  AC_MSG_ERROR([Guile-newt could not be found; please install it.])
+fi
+])
+
+AM_CONDITIONAL([ENABLE_INSTALLER],
+  [test "x$enable_installer" = "xyes"])
 
 dnl Make sure we have a full-fledged Guile.
 GUIX_ASSERT_GUILE_FEATURES([regex posix socket net-db threads])
 
 
 dnl Make sure we have a full-fledged Guile.
 GUIX_ASSERT_GUILE_FEATURES([regex posix socket net-db threads])
 
-dnl Check whether (srfi srfi-37) works, and provide our own if it doesn't.
-GUIX_CHECK_SRFI_37
-AM_CONDITIONAL([INSTALL_SRFI_37], [test "x$ac_cv_guix_srfi_37_broken" = xyes])
+AC_PROG_SED
 
 dnl Decompressors, for use by the substituter and other modules.
 AC_PATH_PROG([GZIP], [gzip])
 
 dnl Decompressors, for use by the substituter and other modules.
 AC_PATH_PROG([GZIP], [gzip])
@@ -130,18 +194,6 @@ AC_ARG_WITH([nix-prefix],
    esac],
   [])
 
    esac],
   [])
 
-AC_PATH_PROG([NIX_INSTANTIATE], [nix-instantiate])
-AC_PATH_PROG([NIX_HASH], [nix-hash])
-if test "x$guix_build_daemon$NIX_INSTANTIATE$NIX_HASH" = "xno"; then
-   AC_MSG_ERROR([Nix programs not found; please install Nix or use `--with-nix-prefix'.])
-fi
-
-if test "x$NIX_INSTANTIATE" = "x"; then
-   # This program is an optional dependency, so we just want it to be
-   # taken from $PATH if it's not available right now.
-   NIX_INSTANTIATE="nix-instantiate"
-fi
-
 AC_ARG_WITH([nixpkgs],
   [AS_HELP_STRING([--with-nixpkgs=DIR],
     [search for Nixpkgs in DIR (for testing purposes only)])],
 AC_ARG_WITH([nixpkgs],
   [AS_HELP_STRING([--with-nixpkgs=DIR],
     [search for Nixpkgs in DIR (for testing purposes only)])],
@@ -159,7 +211,6 @@ else
    AC_MSG_RESULT([not found])
 fi
 
    AC_MSG_RESULT([not found])
 fi
 
-LIBGCRYPT="libgcrypt"
 LIBGCRYPT_LIBDIR="no"
 LIBGCRYPT_PREFIX="no"
 
 LIBGCRYPT_LIBDIR="no"
 LIBGCRYPT_PREFIX="no"
 
@@ -169,7 +220,6 @@ AC_ARG_WITH([libgcrypt-prefix],
     yes|no)
       ;;
     *)
     yes|no)
       ;;
     *)
-      LIBGCRYPT="$withval/lib/libgcrypt"
       LIBGCRYPT_PREFIX="$withval"
       LIBGCRYPT_LIBDIR="$withval/lib"
       ;;
       LIBGCRYPT_PREFIX="$withval"
       LIBGCRYPT_LIBDIR="$withval/lib"
       ;;
@@ -180,49 +230,24 @@ AC_ARG_WITH([libgcrypt-libdir],
      [search for GNU libgcrypt's shared library in DIR])],
   [case "$withval" in
     yes|no)
      [search for GNU libgcrypt's shared library in DIR])],
   [case "$withval" in
     yes|no)
-      LIBGCRYPT="libgcrypt"
       LIBGCRYPT_LIBDIR="no"
       ;;
     *)
       LIBGCRYPT_LIBDIR="no"
       ;;
     *)
-      LIBGCRYPT="$withval/libgcrypt"
       LIBGCRYPT_LIBDIR="$withval"
       ;;
    esac])
 
 dnl If none of the --with-libgcrypt-* options was used, try to determine the
       LIBGCRYPT_LIBDIR="$withval"
       ;;
    esac])
 
 dnl If none of the --with-libgcrypt-* options was used, try to determine the
-dnl absolute file name of libgcrypt.so.
+dnl the library directory.
 case "x$LIBGCRYPT_PREFIX$LIBGCRYPT_LIBDIR" in
   xnono)
     GUIX_LIBGCRYPT_LIBDIR([LIBGCRYPT_LIBDIR])
 case "x$LIBGCRYPT_PREFIX$LIBGCRYPT_LIBDIR" in
   xnono)
     GUIX_LIBGCRYPT_LIBDIR([LIBGCRYPT_LIBDIR])
-    if test "x$LIBGCRYPT_LIBDIR" != x; then
-      LIBGCRYPT="$LIBGCRYPT_LIBDIR/libgcrypt"
-    else
-      dnl 'config-daemon.ac' expects "no" in this case.
-      LIBGCRYPT_LIBDIR="no"
-    fi
     ;;
 esac
 
     ;;
 esac
 
-dnl Library name suitable for `dynamic-link'.
-AC_MSG_CHECKING([for libgcrypt shared library name])
-AC_MSG_RESULT([$LIBGCRYPT])
-AC_SUBST([LIBGCRYPT])
 AC_SUBST([LIBGCRYPT_PREFIX])
 AC_SUBST([LIBGCRYPT_LIBDIR])
 
 AC_SUBST([LIBGCRYPT_PREFIX])
 AC_SUBST([LIBGCRYPT_LIBDIR])
 
-GUIX_ASSERT_LIBGCRYPT_USABLE
-
-dnl Library name of zlib suitable for 'dynamic-link'.
-GUIX_LIBZ_LIBDIR([libz_libdir])
-if test "x$libz_libdir" = "x"; then
-  LIBZ="libz"
-else
-  LIBZ="$libz_libdir/libz"
-fi
-AC_MSG_CHECKING([for zlib's shared library name])
-AC_MSG_RESULT([$LIBZ])
-AC_SUBST([LIBZ])
-
 dnl Check for Guile-SSH, for the (guix ssh) module.
 GUIX_CHECK_GUILE_SSH
 AM_CONDITIONAL([HAVE_GUILE_SSH],
 dnl Check for Guile-SSH, for the (guix ssh) module.
 GUIX_CHECK_GUILE_SSH
 AM_CONDITIONAL([HAVE_GUILE_SSH],
@@ -239,9 +264,9 @@ AM_MISSING_PROG([DOT], [dot])
 dnl Manual pages.
 AM_MISSING_PROG([HELP2MAN], [help2man])
 
 dnl Manual pages.
 AM_MISSING_PROG([HELP2MAN], [help2man])
 
-dnl Emacs (optional), for 'etc/indent-package.el'.
-AC_PATH_PROG([EMACS], [emacs], [/usr/bin/emacs])
-AC_SUBST([EMACS])
+dnl Documentation translation.
+AM_MISSING_PROG([PO4A_TRANSLATE], [po4a-translate])
+AM_MISSING_PROG([PO4A_UPDATEPO], [po4a-updatepo])
 
 case "$storedir" in
   /gnu/store)
 
 case "$storedir" in
   /gnu/store)
@@ -255,12 +280,12 @@ esac
 AC_CONFIG_FILES([Makefile
                  po/guix/Makefile.in
                  po/packages/Makefile.in
 AC_CONFIG_FILES([Makefile
                  po/guix/Makefile.in
                  po/packages/Makefile.in
-                guix/config.scm])
+                 etc/guix-daemon.cil
+                 guix/config.scm])
 
 
-AC_CONFIG_FILES([scripts/guix], [chmod +x scripts/guix])
+AC_CONFIG_FILES([etc/committer.scm], [chmod +x etc/committer.scm])
 AC_CONFIG_FILES([test-env:build-aux/test-env.in], [chmod +x test-env])
 AC_CONFIG_FILES([pre-inst-env:build-aux/pre-inst-env.in],
   [chmod +x pre-inst-env])
 AC_CONFIG_FILES([test-env:build-aux/test-env.in], [chmod +x test-env])
 AC_CONFIG_FILES([pre-inst-env:build-aux/pre-inst-env.in],
   [chmod +x pre-inst-env])
-AC_CONFIG_FILES([etc/indent-code.el], [chmod +x etc/indent-code.el])
 
 AC_OUTPUT
 
 AC_OUTPUT