aboutsummaryrefslogtreecommitdiff
path: root/src/libstore
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2019-06-17 08:43:45 +0200
committerEelco Dolstra <edolstra@gmail.com>2019-06-24 22:07:29 +0200
commit7b9c68766d513260d5262d5782b46384834cdb33 (patch)
tree85bdcc1602895a1fd72025ac3c36114f84af79d9 /src/libstore
parent78fa47a7f08a4cb6ee7061bf0bd86a40e1d6dc91 (diff)
Add '--no-net' convenience flag
This flag * Disables substituters. * Sets the tarball-ttl to infinity (ensuring e.g. that the flake registry and any downloaded flakes are considered current). * Disables retrying downloads and sets the connection timeout to the minimum. (So it doesn't completely disable downloads at the moment.) (cherry picked from commit 8ea842260b4fd93315d35c5ba94b1ff99ab391d8)
Diffstat (limited to 'src/libstore')
-rw-r--r--src/libstore/download.cc18
-rw-r--r--src/libstore/download.hh23
-rw-r--r--src/libstore/globals.hh2
-rw-r--r--src/libstore/http-binary-cache-store.cc1
4 files changed, 24 insertions, 20 deletions
diff --git a/src/libstore/download.cc b/src/libstore/download.cc
index 43d231e30..342a8aa21 100644
--- a/src/libstore/download.cc
+++ b/src/libstore/download.cc
@@ -29,23 +29,7 @@ using namespace std::string_literals;
namespace nix {
-struct DownloadSettings : Config
-{
- Setting<bool> enableHttp2{this, true, "http2",
- "Whether to enable HTTP/2 support."};
-
- Setting<std::string> userAgentSuffix{this, "", "user-agent-suffix",
- "String appended to the user agent in HTTP requests."};
-
- Setting<size_t> httpConnections{this, 25, "http-connections",
- "Number of parallel HTTP connections.",
- {"binary-caches-parallel-connections"}};
-
- Setting<unsigned long> connectTimeout{this, 0, "connect-timeout",
- "Timeout for connecting to servers during downloads. 0 means use curl's builtin default."};
-};
-
-static DownloadSettings downloadSettings;
+DownloadSettings downloadSettings;
static GlobalConfig::Register r1(&downloadSettings);
diff --git a/src/libstore/download.hh b/src/libstore/download.hh
index 752f91857..dae082ab9 100644
--- a/src/libstore/download.hh
+++ b/src/libstore/download.hh
@@ -9,13 +9,34 @@
namespace nix {
+struct DownloadSettings : Config
+{
+ Setting<bool> enableHttp2{this, true, "http2",
+ "Whether to enable HTTP/2 support."};
+
+ Setting<std::string> userAgentSuffix{this, "", "user-agent-suffix",
+ "String appended to the user agent in HTTP requests."};
+
+ Setting<size_t> httpConnections{this, 25, "http-connections",
+ "Number of parallel HTTP connections.",
+ {"binary-caches-parallel-connections"}};
+
+ Setting<unsigned long> connectTimeout{this, 0, "connect-timeout",
+ "Timeout for connecting to servers during downloads. 0 means use curl's builtin default."};
+
+ Setting<unsigned int> tries{this, 5, "download-attempts",
+ "How often Nix will attempt to download a file before giving up."};
+};
+
+extern DownloadSettings downloadSettings;
+
struct DownloadRequest
{
std::string uri;
std::string expectedETag;
bool verifyTLS = true;
bool head = false;
- size_t tries = 5;
+ size_t tries = downloadSettings.tries;
unsigned int baseRetryTimeMs = 250;
ActivityId parentAct;
bool decompress = true;
diff --git a/src/libstore/globals.hh b/src/libstore/globals.hh
index 53efc6a90..0af8215d1 100644
--- a/src/libstore/globals.hh
+++ b/src/libstore/globals.hh
@@ -255,7 +255,7 @@ public:
"Secret keys with which to sign local builds."};
Setting<unsigned int> tarballTtl{this, 60 * 60, "tarball-ttl",
- "How soon to expire files fetched by builtins.fetchTarball and builtins.fetchurl."};
+ "How long downloaded files are considered up-to-date."};
Setting<bool> requireSigs{this, true, "require-sigs",
"Whether to check that any non-content-addressed path added to the "
diff --git a/src/libstore/http-binary-cache-store.cc b/src/libstore/http-binary-cache-store.cc
index 5133dba57..5633b4355 100644
--- a/src/libstore/http-binary-cache-store.cc
+++ b/src/libstore/http-binary-cache-store.cc
@@ -85,7 +85,6 @@ protected:
try {
DownloadRequest request(cacheUri + "/" + path);
request.head = true;
- request.tries = 5;
getDownloader()->download(request);
return true;
} catch (DownloadError & e) {