From 49e6291a7a257f89f01644423f1b685778b8862a Mon Sep 17 00:00:00 2001
From: Ludovic Courtès <ludo@gnu.org>
Date: Thu, 23 Jan 2014 23:48:34 +0100
Subject: Add 'guix offload' as a daemon build hook.

* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_NO_BUILD_HOOK): New macro.
  (options): Add '--no-build-hook'.
  (parse_opt): Handle it.
  (main)[HAVE_DAEMON_OFFLOAD_HOOK]: Set 'useBuildHook' by default.
  Set $NIX_BUILD_HOOK to our offload hook unless otherwise specified.
  [!HAVE_DAEMON_OFFLOAD_HOOK]: Clear 'useBuildHook'.
* pre-inst-env.in: Set and export NIX_BUILD_HOOK.
* nix/scripts/offload.in, guix/scripts/offload.scm: New files.
* guix/ui.scm (show-guix-help)[internal?]: Add "offload".
* config-daemon.ac: Call 'GUIX_CHECK_UNBUFFERED_CBIP'.
  Instantiate 'nix/scripts/offload'.  Set 'BUILD_DAEMON_OFFLOAD'
  conditional, and optionally define 'HAVE_DEAMON_OFFLOAD_HOOK' cpp
  macro.
* daemon.am (nodist_pkglibexec_SCRIPTS)[BUILD_DAEMON_OFFLOAD]: Add it.
* Makefile.am (MODULES)[BUILD_DAEMON_OFFLOAD]: Add
  'guix/scripts/offload.scm'.
  (EXTRA_DIST)[!BUILD_DAEMON_OFFLOAD]: Likewise.
* m4/guix.m4 (GUIX_CHECK_UNBUFFERED_CBIP): New macro.
* doc/guix.texi (Setting Up the Daemon): Move most of the body to...
  (Build Environment Setup): ... this.  New subsection.
  (Daemon Offload Setup): New subsection.
---
 m4/guix.m4 | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

(limited to 'm4')

diff --git a/m4/guix.m4 b/m4/guix.m4
index a98378db79..19e041a72c 100644
--- a/m4/guix.m4
+++ b/m4/guix.m4
@@ -1,5 +1,5 @@
 dnl GNU Guix --- Functional package management for GNU
-dnl Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+dnl Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 dnl
 dnl This file is part of GNU Guix.
 dnl
@@ -134,3 +134,20 @@ AC_DEFUN([GUIX_CHECK_SRFI_37], [
        ac_cv_guix_srfi_37_broken=yes
      fi])
 ])
+
+dnl GUIX_CHECK_UNBUFFERED_CBIP
+dnl
+dnl Check whether 'setbvuf' works on custom binary input ports (CBIPs), as is
+dnl the case starting with Guile 2.0.10.
+AC_DEFUN([GUIX_CHECK_UNBUFFERED_CBIP], [
+  AC_CACHE_CHECK([whether Guile's custom binary input ports support 'setvbuf'],
+    [ac_cv_guix_cbips_support_setvbuf],
+    [if "$GUILE" -c "(use-modules (rnrs io ports))			\
+       (let ((p (make-custom-binary-input-port \"cbip\" pk #f #f #f)))	\
+         (setvbuf p _IONBF))" >&5 2>&1
+     then
+       ac_cv_guix_cbips_support_setvbuf=yes
+     else
+       ac_cv_guix_cbips_support_setvbuf=no
+     fi])
+])
-- 
cgit v1.2.3