aboutsummaryrefslogtreecommitdiff
dnl -*- Autoconf -*- fragment for the C++ daemon.

AC_MSG_CHECKING([whether to build daemon])
AC_MSG_RESULT([$guix_build_daemon])

dnl C++ environment.  This macro must be used unconditionnaly.
AC_PROG_CXX
AM_PROG_AR
AC_LANG([C++])

if test "x$guix_build_daemon" = "xyes"; then

  GUIX_ASSERT_CXX11

  AC_PROG_RANLIB
  AC_CONFIG_HEADERS([nix/config.h])

  dnl Use 64-bit file system calls so that we can support files > 2 GiB.
  AC_SYS_LARGEFILE

  dnl Look for zlib, a required dependency.
  AC_CHECK_LIB([z], [gzdopen], [true],
    [AC_MSG_ERROR([Guix requires zlib.  See http://www.zlib.net/.])])
  AC_CHECK_HEADERS([zlib.h], [true],
    [AC_MSG_ERROR([Guix requires zlib.  See http://www.zlib.net/.])])

  dnl Look for libbz2, an optional dependency.
  AC_CHECK_LIB([bz2], [BZ2_bzWriteOpen], [HAVE_LIBBZ2=yes], [HAVE_LIBBZ2=no])
  if test "x$HAVE_LIBBZ2" = xyes; then
    AC_CHECK_HEADERS([bzlib.h])
    HAVE_LIBBZ2="$ac_cv_header_bzlib_h"
  fi

  dnl Look for SQLite, a required dependency.
  PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= 3.6.19])

  AC_DEFINE_UNQUOTED([SYSTEM], ["$guix_system"],
    [Guix host system type--i.e., platform and OS kernel tuple.])

  case "$LIBGCRYPT_PREFIX" in
    no)
      LIBGCRYPT_CPPFLAGS=""
      ;;
    *)
      LIBGCRYPT_CPPFLAGS="-I$LIBGCRYPT_PREFIX/include"
      ;;
  esac

  case "$LIBGCRYPT_LIBDIR" in
    no | "")
      ;;
    *)
      LIBGCRYPT_LDFLAGS="-L$LIBGCRYPT_LIBDIR"
      ;;
  esac

  LIBGCRYPT_LIBS="-lgcrypt"
  AC_SUBST([LIBGCRYPT_CPPFLAGS])
  AC_SUBST([LIBGCRYPT_LDFLAGS])
  AC_SUBST([LIBGCRYPT_LIBS])

  save_CPPFLAGS="$CPPFLAGS"
  save_LDFLAGS="$LDFLAGS"
  save_LIBS="$LIBS"
  CPPFLAGS="$CPPFLAGS $LIBGCRYPT_CPPFLAGS"
  LDFLAGS="$LDFLAGS $LIBGCRYPT_LDFLAGS"
  LIBS="$LIBS $LIBGCRYPT_LIBS"

  have_gcrypt=yes
  AC_CHECK_LIB([gcrypt], [gcry_md_open], [:], [have_gcrypt=no])
  AC_CHECK_HEADER([gcrypt.h], [:], [have_gcrypt=no])
  if test "x$have_gcrypt" != "xyes"; then
    AC_MSG_ERROR([GNU libgcrypt not found; please install it.])
  fi
  CPPFLAGS="$save_CPPFLAGS"
  LDFLAGS="$save_LDFLAGS"
  LIBS="$save_LIBS"

  dnl Chroot support.
  AC_CHECK_FUNCS([chroot unshare])
  AC_CHECK_HEADERS([sched.h sys/param.h sys/mount.h sys/syscall.h])

  if test "x$ac_cv_func_chroot" != "xyes"; then
    AC_MSG_ERROR(['chroot' function missing, bailing out])
  fi

  dnl lutimes and lchown: used when canonicalizing store items.
  dnl posix_fallocate: used when extracting archives.
  dnl vfork: to speed up spawning of helper programs.
  dnl   `--> now disabled because of unpredictable behavior:
  dnl        see <http://lists.gnu.org/archive/html/guix-devel/2014-05/msg00036.html>
  dnl        and Nix commit f794465c (Nov. 2012).
  dnl sched_setaffinity: to improve RPC locality.
  dnl statvfs: to detect disk-full conditions.
  dnl strsignal: for error reporting.
  dnl statx: fine-grain 'stat' call, new in glibc 2.28.
  AC_CHECK_FUNCS([lutimes lchown posix_fallocate sched_setaffinity \
     statvfs nanosleep strsignal statx])

  dnl Check for <locale>.
  AC_LANG_PUSH(C++)
  AC_CHECK_HEADERS([locale])
  AC_LANG_POP(C++)


  dnl Check whether we have the `personality' syscall, which allows us
  dnl to do i686-linux builds on x86_64-linux machines.
  AC_CHECK_HEADERS([sys/personality.h])

  dnl Determine the appropriate default list of substitute URLs (GnuTLS
  dnl is required so we can default to 'https'.)
  GUIX_SUBSTITUTE_URLS="https://bordeaux.guix.gnu.org https://ci.guix.gnu.org"

  AC_MSG_CHECKING([for default substitute URLs])
  AC_MSG_RESULT([$GUIX_SUBSTITUTE_URLS])
  AC_SUBST([GUIX_SUBSTITUTE_URLS])

  AC_DEFINE_UNQUOTED([GUIX_SUBSTITUTE_URLS], ["$GUIX_SUBSTITUTE_URLS"],
    [Default list of substitute URLs used by 'guix-daemon'.])

  dnl Check for Guile-SSH, which is required by 'guix offload'.
  GUIX_CHECK_GUILE_SSH

  case "x$guix_cv_have_recent_guile_ssh" in
    xyes)
      guix_build_daemon_offload="yes"
      AC_DEFINE([HAVE_DAEMON_OFFLOAD_HOOK], [1],
	[Define if the daemon's 'offload' build hook is being built (requires Guile-SSH).])
      ;;
    *)
      guix_build_daemon_offload="no"
      ;;
  esac

  dnl Temporary directory used to store the daemon's data.
  GUIX_TEST_ROOT_DIRECTORY
  GUIX_TEST_ROOT="$ac_cv_guix_test_root"
  AC_SUBST([GUIX_TEST_ROOT])

  GUIX_CHECK_LOCALSTATEDIR
fi

AM_CONDITIONAL([HAVE_LIBBZ2], [test "x$HAVE_LIBBZ2" = "xyes"])
AM_CONDITIONAL([BUILD_DAEMON], [test "x$guix_build_daemon" = "xyes"])
AM_CONDITIONAL([BUILD_DAEMON_OFFLOAD],			\
  [test "x$guix_build_daemon" = "xyes"			\
   && test "x$guix_build_daemon_offload" = "xyes"])
'>...* gnu/packages/openldap.scm (openldap): Update to 2.4.44. [replacement]: Remove field. (openldap-2.4.44): Remove variable. Leo Famulari 2016-04-24gnu: openldap: Update to 2.4.44 [fixes CVE-2015-6908]....* gnu/packages/openldap.scm (openldap)[replacement]: New field. (openldap-2.4.44): New variable. Leo Famulari 2015-09-13gnu: openldap: Update to 2.4.42....* gnu/packages/openldap.scm (openldap): Update to 2.4.42. 宋文武 2015-07-05gnu: Move content of openssl module into tls module....* gnu/packages/openssl.scm (openssl, perl-net-ssleay): Move to... * gnu/packages/tls.scm: ...here. * gnu/packages/openssl.scm: Delete file. * gnu-system.am (GNU_SYSTEM_MODULES): Unregister deleted file. * gnu/packages/{admin.scm, bittorrent.scm, certs.scm, ci.scm, cyrus-sasl.scm, databases.scm, dns.scm, ebook.scm, enlightenment.scm, gnunet.scm, libreoffice.scm, links.scm, mail.scm, messaging.scm, networking.scm, ntp.scm, openldap.scm, package-management.scm, pdf.scm, python.scm, qt.scm, rdesktop.scm, rdf.scm, ruby.scm, ssh.scm, synergy.scm, tor.scm, version-control.scm, video.scm, vpn.scm, w3m.scm, web.scm, weechat.scm, xiph.scm}: Adapt module import. Andreas Enge 2015-05-29gnu: openldap: Update list of source URLs....* gnu/packages/openldap.scm (openldap)[source]: Remove former URI (domain name vanished) and add an up-to-date list of URLs. Reported by Alexander Vorobiev <alexander.vorobiev@gmail.com>. Ludovic Courtès 2015-04-14gnu: openldap: Update to 2.4.40....* gnu/packages/openldap.scm (openldap): Update to 2.4.40. 宋文武 2015-01-07gnu: Make libtool and libltdl completely separate....* gnu/packages/autotools.scm (libtool)[outputs]: Remove. [arguments]: Remove 'if' around arguments. Add #:configure-flags. * gnu/packages/apr.scm (apr)[inputs]: Change libtool to libltdl. * gnu/packages/fontutils.scm (libuninameslist)[native-inputs]: Remove "libtool-bin". * gnu/packages/global.scm (global): Change libtool to libltdl. * gnu/packages/gnunet.scm (libextractor, gnunet): Likewise. * gnu/packages/graphviz.scm (graphviz): Likewise. * gnu/packages/libcanberra.scm (libcanberra): Likewise. * gnu/packages/libevent.scm (libuv)[native-inputs]: Remove "bin" part for libtool. * gnu/packages/mail.scm (mailutils): Change libtool to libltdl. (libetpan): Remove "bin" part for libtool. * gnu/packages/mp3.scm (libmp3splt): Change libtool to libltdl. * gnu/packages/openldap.scm (openldap): Remove "bin" part of libtool. Move it from 'inputs' to 'native-inputs'. * gnu/packages/photo.scm (libgphoto2): Change libtool to libltdl. * gnu/packages/pulseaudio.scm (pulseaudio): Likewise. * gnu/packages/ssh.scm (guile-ssh): Remove "bin" part of libtool. * gnu/packages/web.scm (libpsl): Likewise. * gnu/packages/weechat.scm (weechat): Move libtool to 'native-inputs' and add libltdl to 'inputs'. Ludovic Courtès