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"])
u/packages/jupyter.scm, gnu/packages/kodi.scm, gnu/packages/language.scm, gnu/packages/lego.scm, gnu/packages/less.scm, gnu/packages/libusb.scm, gnu/packages/linux.scm, gnu/packages/lirc.scm, gnu/packages/lisp-xyz.scm, gnu/packages/llvm.scm, gnu/packages/logging.scm, gnu/packages/lolcode.scm, gnu/packages/lua.scm, gnu/packages/lxde.scm, gnu/packages/lxqt.scm, gnu/packages/machine-learning.scm, gnu/packages/mail.scm, gnu/packages/markup.scm, gnu/packages/maths.scm, gnu/packages/maven.scm, gnu/packages/mes.scm, gnu/packages/messaging.scm, gnu/packages/monitoring.scm, gnu/packages/mpd.scm, gnu/packages/music.scm, gnu/packages/networking.scm, gnu/packages/node-xyz.scm, gnu/packages/ocaml.scm, gnu/packages/ocr.scm, gnu/packages/onc-rpc.scm, gnu/packages/opencl.scm, gnu/packages/opencog.scm, gnu/packages/pantheon.scm, gnu/packages/password-utils.scm, gnu/packages/patchutils.scm, gnu/packages/pdf.scm, gnu/packages/perl6.scm, gnu/packages/phabricator.scm, gnu/packages/popt.scm, gnu/packages/printers.scm, gnu/packages/prolog.scm, gnu/packages/protobuf.scm, gnu/packages/pulseaudio.scm, gnu/packages/python-crypto.scm, gnu/packages/python-web.scm, gnu/packages/python-xyz.scm, gnu/packages/qt.scm, gnu/packages/radio.scm, gnu/packages/rails.scm, gnu/packages/rdf.scm, gnu/packages/rednotebook.scm, gnu/packages/rpc.scm, gnu/packages/rsync.scm, gnu/packages/ruby.scm, gnu/packages/rust.scm, gnu/packages/scheme.scm, gnu/packages/screen.scm, gnu/packages/security-token.scm, gnu/packages/selinux.scm, gnu/packages/serialization.scm, gnu/packages/shells.scm, gnu/packages/shellutils.scm, gnu/packages/simh.scm, gnu/packages/sml.scm, gnu/packages/ssh.scm, gnu/packages/statistics.scm, gnu/packages/stenography.scm, gnu/packages/sync.scm, gnu/packages/syncthing.scm, gnu/packages/synergy.scm, gnu/packages/telephony.scm, gnu/packages/terminals.scm, gnu/packages/tex.scm, gnu/packages/texinfo.scm, gnu/packages/text-editors.scm, gnu/packages/textutils.scm, gnu/packages/time.scm, gnu/packages/tmux.scm, gnu/packages/tor.scm, gnu/packages/toys.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/vim.scm, gnu/packages/virtualization.scm, gnu/packages/vlang.scm, gnu/packages/vnc.scm, gnu/packages/vpn.scm, gnu/packages/web-browsers.scm, gnu/packages/web.scm, gnu/packages/wireservice.scm, gnu/packages/wm.scm, gnu/packages/wxwidgets.scm, gnu/packages/xdisorg.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm, tests/lint.scm: Remove trailing ".git" from 'git-reference' URL. Ludovic Courtès 2020-07-05gnu: python-llvmlite: Use specific commit for llvm patch URLs....As this commit [1] appears to affect the patches, including the v0.30.0 tag (so the tag must have been changed). 1: https://github.com/numba/llvmlite/commit/cdd99deb32f9d48aadb0f7407fb8ad06f6a8ce6c * gnu/packages/llvm.scm (python-llvmlite)[inputs]: Use a specific commit for the patches. Christopher Baines 2020-07-03gnu: Add lld....* gnu/packages/llvm.scm (lld): New variable. Jakub Kądziołka 2020-07-03gnu: llvm-9: Backport patch to fix miscompilation for big-endian targets....* gnu/packages/llvm.scm (llvm-9)[source]: Add new patch. * gnu/packages/patches/llvm-9-fix-bitcast-miscompilation.patch: New file. * gnu/local.mk (dist_patch_DATA): Register new file. Jakub Kądziołka 2020-07-03gnu: llvm-9: Backport patches to fix miscompilations....* gnu/packages/llvm.scm (llvm-9)[source]: Add new patches. * gnu/packages/patches/llvm-9-fix-lpad-miscompilation.patch, gnu/packages/patches/llvm-9-fix-scev-miscompilation.patch: New files. * gnu/local.mk (dist_patch_DATA): Register new patches. Jakub Kądziołka 2020-05-28gnu: clang: Build 'clang-tools-extra'....* gnu/packages/llvm.scm (clang-from-llvm): Add #:tools-extra. Add 'output' field. In 'inputs', add TOOLS-EXTRA when it's given. In 'arguments', add 'add-tools-extra' and 'move-extra-tools' phases when TOOLS-EXTRA is given. Ludovic Courtès 2020-05-22gnu: llvm: Remove unused 'package-elisp-from-package' procedure....This private procedure had been unused since 3a3d4d9d545028cda846ae827a60249f7162d34e. * gnu/packages/llvm.scm (package-elisp-from-package): Remove. Ludovic Courtès 2020-05-02Merge branch 'master' into core-updatesMarius Bakke 2020-05-02gnu: llvm-for-extempore: Update to 3.8....* gnu/packages/llvm.scm (llvm-for-extempore): Update to 3.8. [source]: Use upstream patched source. * gnu/packages/patches/llvm-for-extempore.patch: Delete due to source being already patched. * gnu/local.mk (dist_patch_DATA): Remove it. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Giacomo Leidi 2020-04-24Merge branch 'master' into core-updatesMarius Bakke 2020-04-24gnu: llvm: Add 10.0.0....* gnu/packages/llvm.scm (llvm-10, clang-runtime-10, clang-10) (clang-toolchain-10, llvm-9, clang-runtime-9, clang-9) (clang-toolchain-9): New variables. (llvm, clang, clang-runtime, clang-toolchain): Redefine as aliases to the '-9' bindings. * gnu/packages/patches/clang-10.0-libc-search-path.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. Ludovic Courtès 2020-04-13Merge branch 'master' into core-updatesMarius Bakke 2020-04-12gnu: emacs-clang-format: Fix grammar of "allows to filter" to "filters"....* gnu/packages/llvm (emacs-clang-format): Fix grammar. Vagrant Cascadian 2020-03-26llvm: Add support for the Hurd....* gnu/packages/llvm.scm (system->llvm-target): Use X86 for i586 (i.e., the Hurd). Jan Nieuwenhuizen 2020-03-15gnu: libcxx: Hide GCC's C++ headers during the build process....* gnu/packages/llvm.scm (libcxx)[arguments]: New field. Marius Bakke 2020-03-15gnu: clang: Switch to 'C_INCLUDE_PATH' & co....* gnu/packages/llvm.scm (clang-from-llvm)[native-search-paths]: Remove "CPATH", and add "C_INCLUDE_PATH" and "CPLUS_INCLUDE_PATH". Marius Bakke 2020-03-05gnu: clang-runtime: Fix build with glibc 2.31....* gnu/packages/patches/clang-runtime-3.8-libsanitizer-mode-field.patch, gnu/packages/patches/clang-runtime-3.9-libsanitizer-mode-field.patch, gnu/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch: New files. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/llvm.scm (clang-runtime, clang-runtime-8, clang-runtime-7, clang-runtime-6, clang-runtime-3.9.1, clang-runtime-3.8, clang-runtime-3.7): Add the respective patches. Marius Bakke 2020-03-05gnu: clang-runtime: Adjust for CPLUS_INCLUDE_PATH changes....* gnu/packages/llvm.scm (clang-runtime-from-llvm)[arguments]: Add #:modules and #:phases. Marius Bakke 2020-03-04Merge branch 'master' into core-updatesMarius Bakke 2020-02-26gnu: clang: Move version conditionals out of the builder....* gnu/packages/llvm.scm (clang-from-llvm)[arguments]: Rewrite phase 'set-glibc-file-names' to use VERSION>=? from (guix utils) and splice in the relevant build code, instead of doing the comparison at build time. Marius Bakke 2020-02-26gnu: clang: Fix C++ search path handling on non-x86_64....* gnu/packages/llvm.scm (clang-from-llvm)[arguments]: Add phase 'add-missing-triplets'. Marius Bakke 2020-02-25gnu: clang-runtime-3.5: Fix build....* gnu/packages/llvm.scm (clang-runtime-3.5) [inputs]: Add libtirpc. [arguments]: Add phase to find rpc headers. Ricardo Wurmus 2020-02-24gnu: LLVM: Promote LLVM 9 to the default 'llvm' package....* gnu/packages/llvm.scm (llvm-8): Rename to ... (llvm): ... this. Update to 9.0.1. [license]: Change to ASL2.0. (clang-runtime-from-llvm)[license]: Inherit from LLVM. (clang-from-llvm)[license]: Conditionally choose license based on version. (llvm-9, clang-runtime-8, clang-8, clang-toolchain-8): New public variables. (llvm-7): Inherit from LLVM-8 (for the license change). (llvm-6): Inherit from LLVM-7. (llvm-3.9.1): Inherit from LLVM-6. (llvm-3.8): Inherit from LLVM-3.9.1. (llvm-3.7): Inherit from LLVM-3.8. (llvm-3.6): Inherit from LLVM-3.7. (llvm-3.5): Inherit from LLVM-3.6. (libcxx, libclc, libomp): Update to 9.0.1. Marius Bakke 2020-02-24gnu: clang: Use the correct CLANG-RUNTIME for versions 6 and 7....* gnu/packages/llvm.scm (clang-7): Use CLANG-RUNTIME-7. (clang-6): Use CLANG-RUNTIME-6. Marius Bakke 2020-02-24gnu: Reorganize llvm.scm....* gnu/packages/llvm.scm (libcxx, libclc, libomp, libcxx-6): Move package definitions below the various LLVM/Clang variants. Marius Bakke 2020-02-24gnu: clang@9: Update to 9.0.1....* gnu/packages/llvm.scm (llvm-9): Update to 9.0.1. clang-runtime-9, clang-9): Update hashes. Marius Bakke 2020-02-24gnu: llvm: Add helper procedure for constructing download URLs.......in preparation for LLVM 9.0.1 which is no longer hosted on llvm.org. * gnu/packages/llvm.scm (llvm-download-uri): New procedure. (llvm-8, clang-runtime-from-llvm, clang-from-llvm, libcxx, libomp, llvm-9, llvm-7, llvm-6, libcxx-6, llvm-3.9.1, llvm-3.8, llvm-3.7, llvm-3.6, llvm-3.5)[source](uri): Use it. Marius Bakke 2020-02-24gnu: clang@9: Fix search path handling....* gnu/packages/patches/clang-9.0-libc-search-path.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/llvm.scm (clang-9): Add #:patches. Marius Bakke 2020-02-03gnu: llvm@3: Do not inherit 'install-opt-viewer' phase....This is a follow-up to commit 50b61ec22306181c419a3bd4c35b3c001c604994. * gnu/packages/llvm.scm (llvm-3.9.1)[outputs, arguments]: New fields. (llvm-3.8, llvm-3.7, llvm-3.6, llvm-3.5): Inherit from LLVM-3.9.1. Marius Bakke 2019-12-31Merge remote-tracking branch 'master' into core-updates.Mathieu Othacehe 2019-12-23gnu: python-llvmlite: Update to 0.30.0....* gnu/packages/llvm.scm (python-llvmlite): Update to 0.30.0. [arguments]: Disable tests until dynamic loading of libm.so is fixed. Brett Gilio