From b8d2aa264de4ebff472698347588f36ed6d4a3e8 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 19 Feb 2013 22:48:13 +0100 Subject: 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. --- doc/guix.texi | 7 +++++++ nix/nix-daemon/guix-daemon.cc | 19 ++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) 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 + Copyright (C) 2012, 2013 Ludovic Courtès 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) -- cgit 1.4.1