~ruther/guix-local

6858f9d13217b14eeeacede9c42a279468242891 — Ludovic Courtès 13 years ago ea0ee75
daemon: Add `--no-substitutes'.

Suggested by Mark H. Weaver.

* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_NO_SUBSTITUTES): New macro.
  (options): Add `--no-substitutes'.
  (parse_opt): Add `GUIX_OPT_NO_SUBSTITUTES' case.
  (main): Leave `settings.substituters' empty when
  `settings.useSubstitutes' is false.
2 files changed, 22 insertions(+), 7 deletions(-)

M doc/guix.texi
M nix/nix-daemon/guix-daemon.cc
M doc/guix.texi => doc/guix.texi +4 -0
@@ 295,6 295,10 @@ The following command-line options are supported:
Take users from @var{group} to run build processes (@pxref{Setting Up
the Daemon, build users}).

@item --no-substitutes
Do not use substitutes for build products.  That is, always build things
locally instead of allowing downloads of pre-built binaries.

@item --cache-failures
Cache build failures.  By default, only successful builds are cached.


M nix/nix-daemon/guix-daemon.cc => nix/nix-daemon/guix-daemon.cc +18 -7
@@ 65,6 65,7 @@ builds derivations on behalf of its clients.";
#define GUIX_OPT_DEBUG 9
#define GUIX_OPT_CHROOT_DIR 10
#define GUIX_OPT_LISTEN 11
#define GUIX_OPT_NO_SUBSTITUTES 12

static const struct argp_option options[] =
  {


@@ 90,6 91,8 @@ static const struct argp_option options[] =
    },
    { "build-users-group", GUIX_OPT_BUILD_USERS_GROUP, "GROUP", 0,
      "Perform builds as a user of GROUP" },
    { "no-substitutes", GUIX_OPT_NO_SUBSTITUTES, 0, 0,
      "Do not use substitutes" },
    { "cache-failures", GUIX_OPT_CACHE_FAILURES, 0, 0,
      "Cache build failures" },
    { "lose-logs", GUIX_OPT_LOSE_LOGS, 0, 0,


@@ 152,6 155,9 @@ parse_opt (int key, char *arg, struct argp_state *state)
	  exit (EXIT_FAILURE);
	}
      break;
    case GUIX_OPT_NO_SUBSTITUTES:
      settings.useSubstitutes = false;
      break;
    case GUIX_OPT_DEBUG:
      verbosity = lvlDebug;
      break;


@@ 202,16 208,21 @@ main (int argc, char *argv[])

      /* Use our substituter by default.  */
      settings.substituters.clear ();
      string subs = getEnv ("NIX_SUBSTITUTERS", "default");
      if (subs == "default")
	settings.substituters.push_back (settings.nixLibexecDir
					 + "/guix/substitute-binary");
      else
	settings.substituters = tokenizeString<Strings> (subs, ":");

      settings.useSubstitutes = true;

      argp_parse (&argp, argc, argv, 0, 0, 0);

      if (settings.useSubstitutes)
	{
	  string subs = getEnv ("NIX_SUBSTITUTERS", "default");

	  if (subs == "default")
	    settings.substituters.push_back (settings.nixLibexecDir
					     + "/guix/substitute-binary");
	  else
	    settings.substituters = tokenizeString<Strings> (subs, ":");
	}

      if (geteuid () == 0 && settings.buildUsersGroup.empty ())
	fprintf (stderr, "warning: daemon is running as root, so "
		 "using `--build-users-group' is highly recommended\n");