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"])
/span>Vagrant Cascadian 2020-04-10gnu: akonadi: Shorten file name of patch....This ensures we stay below the POSIX tar file name length limit. * gnu/packages/patches/akonadi-Revert-Make-installation-properly-relo.patch: Rename to... * gnu/packages/patches/akonadi-not-relocatable.patch: ... this. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/kde-pim.scm (akonadi): Likewise. Ludovic Courtès 2020-03-28gnu: KOrganizer: Fix typo in description....* gnu/packages/kde-pim.scm (korganizer)[description]: clanedaring -> calendaring. Marius Bakke 2020-03-19gnu: Add korganizer....* gnu/packages/kde-pim.scm (korganizer): New variable. Hartmut Goebel 2020-03-19gnu: Add kincidenceeditor....* gnu/packages/kde-pim.scm (kincidenceeditor): New variable. Hartmut Goebel 2020-03-19gnu: Add keventviews....* gnu/package/kde-pim.scm (keventviews): New variable. Hartmut Goebel 2020-03-19gnu: Add kcalendarsupport....* gnu/packages/kde-pim.scm (kcalendarsupport): New variable. Hartmut Goebel 2020-03-19gnu: Add kmail....* gnu/packages/kde-pim.scm (kmail): New variable. * gnu/packages/patches/kmail-Fix-missing-link-libraries.patch: New file. * gnu/local.mk: Add it. Hartmut Goebel 2020-03-19gnu: Add knotes....* gnu/packages/kde-pim.scm (knotes): NEw variable. Hartmut Goebel 2020-03-19gnu: Add kaddressbook....* gnu/packages/kde-pim.scm (kaddressbook): New variable. Hartmut Goebel 2020-03-19gnu: Add kdepim-runtime....* gnu/packages/kde-pim.scm (kdepim-runtime): New variable. * gnu/packages/patches/kdepim-runtime-Fix-missing-link-libraries.patch: New file. * gnu/local.mk: Add it. Hartmut Goebel 2020-03-19gnu: Add kdav....This is in kde-pim.scm since it explicitly offers the "KPimKDAV". * gnu/package/kde-pim.scm (kdav): New variable. Hartmut Goebel 2020-03-19gnu: Add kblog....* gnu/packages/kde-pim.scm (kblog): New variable. Hartmut Goebel 2020-03-19gnu: Add kmailcommon....* gnu/packages/kde-pim.scm (kmailcommon): New variable. Hartmut Goebel 2020-03-19gnu: Add kmessagelib....* gnu/packages/kde-pim.scm (kmessagelib): New variable. Hartmut Goebel 2020-03-19gnu: Add libksieve....* gnu/packages/kde-pim.scm (libksieve): New variable. * gnu/packages/patches/libksieve-Fix-missing-link-libraries.patch: New file. * gnu/local.mk: Add it. Hartmut Goebel 2020-03-08gnu: Reword and extend descriptions for some KDE packages....* gnu/packages/kde-multimedia.scm (libkcompatdisc)[description]: Extend. * gnu/packages/kde-pim.scm (akonadi-search, kalarmcal, kdemailimporter, kdepim-apps-libs, kidentitymanagement, kldap, kmailtransport, kmbox, kmime, kontactinterface, kpimtextedit)[description]: Reword and extend. (ktnef, kpimcommon, libkdepim)[synopsis, description]: Reword and extend. (kmailtransport)[synopsis]: Fix space. * gnu/packages/kde-systemtools.scm (khelpcenter)[description]: Extend. Hartmut Goebel 2020-03-06gnu: akonadi: Rename patch to fix guix lint warning about patch filename size....* gnu/packages/patches/akonadi-Revert-Make-installation-properly-relocatabl.patch: Rename to ... * gnu/packages/patches/akonadi-Revert-Make-installation-properly-relo.patch: ... this. * gnu/packages/kde-pim (akonadi) Update accordingly. * gnu/local.mk: Update accordingly. Vagrant Cascadian 2020-02-03gnu: Add kdepim-apps-libs....* gnu/packages/kde-pim.scm (kdepim-apps-libs): New variable. Hartmut Goebel 2020-02-03gnu: Add kpimcommon....* gnu/packages/kde-pim.scm (kpimcommon): New variable. Hartmut Goebel 2020-02-03gnu: Add kmailimporter....* gnu/packages/kde-pim.scm (kmailimporter): New variable. Hartmut Goebel 2020-02-03gnu: Add libkdepim....* gnu/packages/kde-pim.scm (libkdepim): New variable. Hartmut Goebel 2020-02-03gnu: Add kgpg....* gnu/packages/kde-utils.scm (kgpg): New variable. Hartmut Goebel 2020-02-03gnu: Add kleopatra....* gnu/packages/kde-utils.scm (kleopatra): New variable. Hartmut Goebel 2020-02-03gnu: Add libkleo....* gnu/packages/kde-pim.scm (libkleo): New variable. Hartmut Goebel 2020-02-03gnu: Add akonadi-calendar....* gnu/packages/kde-pim.scm (akonadi-calendar): New variable. Hartmut Goebel 2020-02-03gnu: Add kmailtransport....* gnu/packages/kde-pim.scm (kmailtransport): New variable. Hartmut Goebel 2020-02-03gnu: Add libkgapi....* gnu/packages/kde-pim.scm (libkgapi): New variable. Hartmut Goebel 2020-02-03gnu: Add kontactinterface....* gnu/packages/kde-pim.scm (kontactinterface): New variable. Hartmut Goebel 2020-02-03gnu: Add ksmtp....* gnu/packages/kde-pim.scm (ksmtp): New variable. Hartmut Goebel 2020-02-03gnu: Add akonadi-contacts....* gnu/packages/kde-pim.scm (akonadi-contacts): New variable. Hartmut Goebel 2020-02-03gnu: Add akonadi-search....* gnu/packages/kde-pim.scm (akonadi-search): New variable. Hartmut Goebel 2020-02-03gnu: Add akonadi-notes....* gnu/packages/kde-pim.scm (akonadi-notes): New variable. Hartmut Goebel 2020-02-03gnu: Add akonadi-mime....* gnu/packages/kde-pim.scm (akonadi-mime): New variable. Hartmut Goebel 2020-02-03gnu: Add kalarmcal....* gnu/packages/kde-pim.scm (kalarmcal): New variable. Hartmut Goebel 2020-02-03gnu: Add ktnef....* gnu/packages/kde-pim.scm (ktnef): New variable. Hartmut Goebel 2020-02-03gnu: Add kldap....* gnu/packages/kde-pim.scm (kldap): New variable. Hartmut Goebel 2020-02-03gnu: Add kimap....* gnu/packages/kde-pim.scm (kimap): New variable. Hartmut Goebel 2020-02-03gnu: Add kidentitymanagement....* gnu/packages/kde-pim.scm (kidentitymanagement): New variable. Hartmut Goebel 2020-02-03gnu: Add kpimtextedit....* gnu/packages/kde-pim.scm (kpimtextedit): New variable. Hartmut Goebel 2020-02-03gnu: Add kcalutils....* gnu/packages/kde-pim.scm (kcalutils): New variable. Hartmut Goebel 2020-02-03gnu: Add kmbox....* gnu/packages/kde-pim.scm (kmbox): New variable. Hartmut Goebel 2020-02-03gnu: Add kmime....* gnu/packages/kde-pim.scm (kmime): New variable. Hartmut Goebel 2020-02-03gnu: Add akonadi....* gnu/packages/kde-pim.scm, gnu/packages/patches/akonadi-paths.patch, gnu/packages/patches/akonadi-Revert-Make-installation-properly-relocatabl.patch gnu/packages/patches/akonadi-timestamps.patch: New files. * gnu/local.mk (MODULES): Add kde-pim.scm. (dist_patch): Add the patches. Hartmut Goebel