diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2009-03-28T21·10+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2009-03-28T21·10+0000 |
commit | 47706e3924cf592a4e0085eb2e45f0e84b67f933 (patch) | |
tree | a8774f45ed36fa8798f81470ed8ce07736e91253 /scripts/nix-copy-closure.in | |
parent | 6e946c8e72e0fd2baa58cab484a34debd2ae906d (diff) |
* nix-copy-closure: compute the closure in one call to nix-store,
which is much faster.
Diffstat (limited to 'scripts/nix-copy-closure.in')
-rw-r--r-- | scripts/nix-copy-closure.in | 34 |
1 files changed, 9 insertions, 25 deletions
diff --git a/scripts/nix-copy-closure.in b/scripts/nix-copy-closure.in index 688bec72824d..4f31953b922a 100644 --- a/scripts/nix-copy-closure.in +++ b/scripts/nix-copy-closure.in @@ -55,30 +55,18 @@ while (@ARGV) { if ($toMode) { # Copy TO the remote machine. my @allStorePaths; - my %storePathsSeen; - foreach my $storePath (@storePaths) { - # $arg might be a symlink to the store, so resolve it. - my $storePath2 = (`$binDir/nix-store --query --resolve '$storePath'` - or die "cannot resolve `$storePath'"); - chomp $storePath2; - - # Get the closure of this path. - my $pid = open(READ, - "$binDir/nix-store --query --requisites '$storePath2'|") or die; + # Get the closure of this path. + my $pid = open(READ, "$binDir/nix-store --query --requisites @storePaths|") or die; - while (<READ>) { - chomp; - die "bad: $_" unless /^\//; - if (!defined $storePathsSeen{$_}) { - push @allStorePaths, $_; - $storePathsSeen{$_} = 1; - } - } - - close READ or die "nix-store failed: $?"; + while (<READ>) { + chomp; + die "bad: $_" unless /^\//; + push @allStorePaths, $_; } + close READ or die "nix-store failed: $?"; + # Ask the remote host which paths are invalid. open(READ, "ssh @sshOpts $sshHost nix-store --check-validity --print-invalid @allStorePaths|"); @@ -111,15 +99,11 @@ else { # Copy FROM the remote machine. "ssh @sshOpts $sshHost nix-store --query --requisites @storePaths|") or die; my @allStorePaths; - my %storePathsSeen; while (<READ>) { chomp; die "bad: $_" unless /^\//; - if (!defined $storePathsSeen{$_}) { - push @allStorePaths, $_; - $storePathsSeen{$_} = 1; - } + push @allStorePaths, $_; } close READ or die "nix-store on remote machine `$sshHost' failed: $?"; |