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.
This commit is contained in:
Ludovic Courtès 2013-02-19 22:48:13 +01:00
parent 15b673ebe8
commit b8d2aa264d
2 changed files with 25 additions and 1 deletions

@ -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

@ -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)