Author: eelco
Date: Wed Nov 17 17:41:59 2010
New Revision: 24747
URL: https://svn.nixos.org/websvn/nix/?rev=24747&sc=1
Log:
* When checking whether a patch is applicable, for efficiency, use
`nix-store -q --hash' to get the hash of the base path rather than
`nix-hash'. However, only do this for estimating the size of a
download, not for the actual substitution, because sometimes the
contents of store paths are modified (which they shouldn't, of
course).
Modified:
nix/branches/sqlite/scripts/download-using-manifests.pl.in
Modified: nix/branches/sqlite/scripts/download-using-manifests.pl.in
==============================================================================
--- nix/branches/sqlite/scripts/download-using-manifests.pl.in Wed Nov 17
17:32:25 2010 (r24746)
+++ nix/branches/sqlite/scripts/download-using-manifests.pl.in Wed Nov 17
17:41:59 2010 (r24747)
@@ -51,6 +51,7 @@
# given path.
sub computeSmallestDownload {
my $targetPath = shift;
+ my $fast = shift;
# Build a graph of all store paths that might contribute to the
# construction of $targetPath, and the special node "start". The
@@ -110,8 +111,11 @@
my ($baseHashAlgo, $baseHash) = parseHash
$patch->{baseHash};
my $format = "--base32";
$format = "" if $baseHashAlgo eq "md5";
- my $hash = `$binDir/nix-hash --type '$baseHashAlgo'
$format "$patch->{basePath}"`;
+ my $hash = $fast && $baseHashAlgo eq "sha256"
+ ? `$binDir/nix-store -q --hash "$patch->{basePath}"`
+ : `$binDir/nix-hash --type '$baseHashAlgo' $format
"$patch->{basePath}"`;
chomp $hash;
+ $hash =~ s/.*://;
next if $hash ne $baseHash;
}
push @queue, $patch->{basePath};
@@ -203,7 +207,7 @@
print scalar @references, "\n";
print "$_\n" foreach @references;
- my @path = computeSmallestDownload $storePath;
+ my @path = computeSmallestDownload $storePath, 1;
my $downloadSize = 0;
while (scalar @path > 0) {
@@ -269,7 +273,7 @@
# Compute the shortest path.
-my @path = computeSmallestDownload $targetPath;
+my @path = computeSmallestDownload $targetPath, 0;
die "don't know how to produce $targetPath\n" if scalar @path == 0;
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits