nix-copy-closure: Fix --dry-run

This commit is contained in:
Eelco Dolstra 2014-07-10 17:44:18 +02:00
parent 43b64f5038
commit 7c3a5090bf

View file

@ -78,6 +78,13 @@ sub copyTo {
my @missing = grep { !$present{$_} } @closure; my @missing = grep { !$present{$_} } @closure;
return if !@missing; return if !@missing;
my $missingSize = 0;
$missingSize += (queryPathInfo($_, 1))[3] foreach @missing;
printf STDERR "copying %d missing paths (%.2f MiB) to $sshHost...\n",
scalar(@missing), $missingSize / (1024.0^2);
return if $dryRun;
# Send the "import paths" command. # Send the "import paths" command.
syswrite($to, pack("L<x4", 4)) or die; syswrite($to, pack("L<x4", 4)) or die;
writeString($compressor, $to); writeString($compressor, $to);
@ -85,11 +92,7 @@ sub copyTo {
if ($compressor || $progressViewer) { if ($compressor || $progressViewer) {
# Compute the size of the closure for the progress viewer. # Compute the size of the closure for the progress viewer.
if ($progressViewer) { $progressViewer = "$progressViewer -s $missingSize" if $progressViewer;
my $missingSize = 0;
$missingSize += (queryPathInfo($_, 1))[3] foreach @missing;
$progressViewer = "$progressViewer -s $missingSize";
}
# Start the compressor and/or progress viewer in between us # Start the compressor and/or progress viewer in between us
# and the remote host. # and the remote host.
@ -107,9 +110,6 @@ sub copyTo {
} }
readInt($from) == 1 or die "remote machine \`$sshHost' failed to import closure\n"; readInt($from) == 1 or die "remote machine \`$sshHost' failed to import closure\n";
# Shut down the server process.
waitpid $pid, 0;
} }