diff options
author | Renzo Carbonara <gnuk0001@gmail.com> | 2018-01-09T21·40+0100 |
---|---|---|
committer | Renzo Carbonara <gnuk0001@gmail.com> | 2018-01-09T21·40+0100 |
commit | b0328c244dd15da9e45f4e95d900c81fe0c47dda (patch) | |
tree | 2105096d5bbc526e1cf61884ede031fa85e5d30c | |
parent | 3cd0704387eb10c4104ba06309ed38a6670b5660 (diff) |
nix.conf: builders-use-substitutes
Fixes #937
-rw-r--r-- | doc/manual/command-ref/conf-file.xml | 14 | ||||
-rw-r--r-- | src/build-remote/build-remote.cc | 6 | ||||
-rw-r--r-- | src/libstore/globals.hh | 5 |
3 files changed, 23 insertions, 2 deletions
diff --git a/doc/manual/command-ref/conf-file.xml b/doc/manual/command-ref/conf-file.xml index 87f05fb1c704..2ddca991f19c 100644 --- a/doc/manual/command-ref/conf-file.xml +++ b/doc/manual/command-ref/conf-file.xml @@ -321,6 +321,20 @@ false</literal>.</para> </varlistentry> + <varlistentry><term><literal>builders-use-substitutes</literal></term> + + <listitem><para>If set to <literal>true</literal>, Nix will instruct + remote build machines to use their own binary substitutes if available. In + practical terms, this means that remote hosts will fetch as many build + dependencies as possible from their own substitutes (e.g, from + <literal>cache.nixos.org</literal>), instead of waiting for this host to + upload them all. This can drastically reduce build times if the network + connection between this computer and the remote build host is slow. Defaults + to <literal>false</literal>.</para></listitem> + + </varlistentry> + + <varlistentry><term><literal>fallback</literal></term> <listitem><para>If set to <literal>true</literal>, Nix will fall diff --git a/src/build-remote/build-remote.cc b/src/build-remote/build-remote.cc index 445006b327fd..df579729af29 100644 --- a/src/build-remote/build-remote.cc +++ b/src/build-remote/build-remote.cc @@ -218,9 +218,11 @@ connected: signal(SIGALRM, old); } + auto substitute = settings.buildersUseSubstitutes ? Substitute : NoSubstitute; + { Activity act(*logger, lvlTalkative, actUnknown, fmt("copying dependencies to '%s'", storeUri)); - copyPaths(store, ref<Store>(sshStore), inputs, NoRepair, NoCheckSigs); + copyPaths(store, ref<Store>(sshStore), inputs, NoRepair, NoCheckSigs, substitute); } uploadLock = -1; @@ -240,7 +242,7 @@ connected: if (!missing.empty()) { Activity act(*logger, lvlTalkative, actUnknown, fmt("copying outputs from '%s'", storeUri)); setenv("NIX_HELD_LOCKS", concatStringsSep(" ", missing).c_str(), 1); /* FIXME: ugly */ - copyPaths(ref<Store>(sshStore), store, missing, NoRepair, NoCheckSigs); + copyPaths(ref<Store>(sshStore), store, missing, NoRepair, NoCheckSigs, substitute); } return; diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh index ae4b78a018e0..af72f7b1e35d 100644 --- a/src/libstore/globals.hh +++ b/src/libstore/globals.hh @@ -138,6 +138,11 @@ public: Setting<std::string> builders{this, "@" + nixConfDir + "/machines", "builders", "A semicolon-separated list of build machines, in the format of nix.machines."}; + Setting<bool> buildersUseSubstitutes{this, false, "builders-use-substitutes", + "Whether build machines should use their own substitutes for obtaining " + "build dependencies if possible, rather than waiting for this host to " + "upload them."}; + Setting<off_t> reservedSize{this, 8 * 1024 * 1024, "gc-reserved-space", "Amount of reserved disk space for the garbage collector."}; |