summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-02-19 22:48:13 +0100
committerLudovic Courtès <ludo@gnu.org>2013-02-19 22:48:13 +0100
commitb8d2aa264de4ebff472698347588f36ed6d4a3e8 (patch)
tree9556f5c65f0a2cc0bc573a7209683115a115ada0
parent15b673ebe88cd98d3f49039a5da1a37bfc5f9b8e (diff)
daemon: Add `--listen'.
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_LISTEN): New macro. (options): Add `--listen'. (parse_opt): Handle it. * doc/guix.texi (Invoking guix-daemon): Mention it.
-rw-r--r--doc/guix.texi7
-rw-r--r--nix/nix-daemon/guix-daemon.cc19
2 files changed, 25 insertions, 1 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index f84b37686a..849ab06c4a 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -367,6 +367,13 @@ Do not keep build logs. By default they are kept under
Assume @var{system} as the current system type. By default it is the
architecture/kernel pair found at configure time, such as
@code{x86_64-linux}.
+
+@item --listen=@var{socket}
+Listen for connections on @var{socket}, the file name of a Unix-domain
+socket. The default socket is
+@file{@var{localstatedir}/daemon-socket/socket}. This option is only
+useful in exceptional circumstances, such as if you need to run several
+daemons on the same machine.
@end table
diff --git a/nix/nix-daemon/guix-daemon.cc b/nix/nix-daemon/guix-daemon.cc
index 604a26f0b1..1611840bd4 100644
--- a/nix/nix-daemon/guix-daemon.cc
+++ b/nix/nix-daemon/guix-daemon.cc
@@ -1,5 +1,5 @@
/* GNU Guix --- Functional package management for GNU
- Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
+ Copyright (C) 2012, 2013 Ludovic Courtès <ludo@gnu.org>
This file is part of GNU Guix.
@@ -64,6 +64,7 @@ builds derivations on behalf of its clients.";
#define GUIX_OPT_IMPERSONATE_LINUX_26 8
#define GUIX_OPT_DEBUG 9
#define GUIX_OPT_CHROOT_DIR 10
+#define GUIX_OPT_LISTEN 11
static const struct argp_option options[] =
{
@@ -103,6 +104,8 @@ static const struct argp_option options[] =
" (this option has no effect in this configuration)"
#endif
},
+ { "listen", GUIX_OPT_LISTEN, "SOCKET", 0,
+ "Listen for connections on SOCKET" },
{ "debug", GUIX_OPT_DEBUG, 0, 0,
"Produce debugging output" },
{ 0, 0, 0, 0, 0 }
@@ -138,6 +141,17 @@ parse_opt (int key, char *arg, struct argp_state *state)
case GUIX_OPT_LOSE_LOGS:
settings.keepLog = false;
break;
+ case GUIX_OPT_LISTEN:
+ try
+ {
+ settings.nixDaemonSocketFile = canonPath (arg);
+ }
+ catch (std::exception &e)
+ {
+ fprintf (stderr, "error: %s\n", e.what ());
+ exit (EXIT_FAILURE);
+ }
+ break;
case GUIX_OPT_DEBUG:
verbosity = lvlDebug;
break;
@@ -207,6 +221,9 @@ main (int argc, char *argv[])
}
#endif
+ printMsg (lvlDebug,
+ format ("listening on `%1%'") % settings.nixDaemonSocketFile);
+
run (nothing);
}
catch (std::exception &e)