aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/download-from-binary-cache.pl.in16
-rw-r--r--tests/binary-cache.sh4
2 files changed, 15 insertions, 5 deletions
diff --git a/scripts/download-from-binary-cache.pl.in b/scripts/download-from-binary-cache.pl.in
index 03c331a63..68414ea63 100644
--- a/scripts/download-from-binary-cache.pl.in
+++ b/scripts/download-from-binary-cache.pl.in
@@ -27,6 +27,8 @@ my $didExpiration = 0;
my $debug = ($ENV{"NIX_DEBUG_SUBST"} // "") eq 1;
open(STDERR, ">>/dev/tty") if $debug;
+my $cacheFileURLs = ($ENV{"_NIX_CACHE_FILE_URLS"} // "") eq 1; # for testing
+
my ($dbh, $queryCache, $insertNAR, $queryNAR, $insertNARExistence, $queryNARExistence, $expireNARExistence);
my $curlm = WWW::Curl::Multi->new;
@@ -267,6 +269,12 @@ sub getAvailableCaches {
}
+sub shouldCache {
+ my ($url) = @_;
+ return $cacheFileURLs || $url !~ /^file:/;
+}
+
+
sub processNARInfo {
my ($storePath, $cache, $request) = @_;
@@ -276,7 +284,7 @@ sub processNARInfo {
($request->{result} != 0 ? "Curl error $request->{result}" : "HTTP status $request->{httpStatus}") . ")\n";
} else {
$insertNARExistence->execute($cache->{id}, basename($storePath), 0, time())
- unless $request->{url} =~ /^file:/;
+ if shouldCache $request->{url};
}
return undef;
}
@@ -289,7 +297,7 @@ sub processNARInfo {
$cache->{id}, basename($storePath), $narInfo->{url}, $narInfo->{compression},
$narInfo->{fileHash}, $narInfo->{fileSize}, $narInfo->{narHash}, $narInfo->{narSize},
join(" ", @{$narInfo->{refs}}), $narInfo->{deriver}, $narInfo->{system}, time())
- unless $request->{url} =~ /^file:/;
+ if shouldCache $request->{url};
return $narInfo;
}
@@ -455,12 +463,12 @@ sub printSubstitutablePaths {
($request->{result} != 0 ? "Curl error $request->{result}" : "HTTP status $request->{httpStatus}") . ")\n";
} else {
$insertNARExistence->execute($cache->{id}, basename($request->{storePath}), 0, time())
- unless $request->{url} =~ /^file:/;
+ if shouldCache $request->{url};
}
push @left2, $request->{storePath};
} else {
$insertNARExistence->execute($cache->{id}, basename($request->{storePath}), 1, time())
- unless $request->{url} =~ /^file:/;
+ if shouldCache $request->{url};
print "$request->{storePath}\n";
}
}
diff --git a/tests/binary-cache.sh b/tests/binary-cache.sh
index 2e38a9d93..b02456220 100644
--- a/tests/binary-cache.sh
+++ b/tests/binary-cache.sh
@@ -5,7 +5,7 @@ clearManifests
# Create the binary cache.
cacheDir=$TEST_ROOT/binary-cache
-rm -rf $cacheDir
+rm -rf "$cacheDir"
outPath=$(nix-build dependencies.nix --no-out-link)
@@ -17,6 +17,8 @@ nix-push --dest $cacheDir $outPath
clearStore
rm -f $NIX_STATE_DIR/binary-cache*
+export _NIX_CACHE_FILE_URLS=1
+
nix-env --option binary-caches "file://$cacheDir" -f dependencies.nix -qas \* | grep -- "---"
nix-store --option binary-caches "file://$cacheDir" -r $outPath