diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2017-02-07 20:47:45 +0100 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2017-02-07 20:47:45 +0100 |
commit | 6f4682ad36c97355fbb7ba86a9ce265c22102055 (patch) | |
tree | 99b5fcd1f04f3ab95852e7ffea379b9bfbceeae8 /scripts | |
parent | caa5793b4a74049ee37dd88eb1c5b785456ce40d (diff) | |
parent | bfa41eb6714a7e7c3956389ee063e898bd1f37ff (diff) |
Merge branch 'nix-copy-closure-c++' of https://github.com/shlevy/nix
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/local.mk | 7 | ||||
-rwxr-xr-x | scripts/nix-copy-closure.in | 103 |
2 files changed, 1 insertions, 109 deletions
diff --git a/scripts/local.mk b/scripts/local.mk index 365d72086..9524baf81 100644 --- a/scripts/local.mk +++ b/scripts/local.mk @@ -1,8 +1,3 @@ -nix_bin_scripts := \ - $(d)/nix-copy-closure \ - -bin-scripts += $(nix_bin_scripts) - nix_noinst_scripts := \ $(d)/nix-http-export.cgi \ $(d)/nix-profile.sh \ @@ -14,4 +9,4 @@ profiledir = $(sysconfdir)/profile.d $(eval $(call install-file-as, $(d)/nix-profile.sh, $(profiledir)/nix.sh, 0644)) -clean-files += $(nix_bin_scripts) $(nix_noinst_scripts) +clean-files += $(nix_noinst_scripts) diff --git a/scripts/nix-copy-closure.in b/scripts/nix-copy-closure.in deleted file mode 100755 index af1d30919..000000000 --- a/scripts/nix-copy-closure.in +++ /dev/null @@ -1,103 +0,0 @@ -#! @perl@ -w @perlFlags@ - -use utf8; -use strict; -use Nix::SSH; -use Nix::Config; -use Nix::Store; -use Nix::CopyClosure; -use List::Util qw(sum); - -binmode STDERR, ":encoding(utf8)"; - -if (scalar @ARGV < 1) { - print STDERR <<EOF -Usage: nix-copy-closure [--from | --to] HOSTNAME [--gzip] [--bzip2] [--xz] PATHS... -EOF - ; - exit 1; -} - - -# Get the target host. -my $sshHost; -my $toMode = 1; -my $includeOutputs = 0; -my $dryRun = 0; -my $useSubstitutes = 0; -my $verbosity = 1; - - -# !!! Copied from nix-pack-closure, should put this in a module. -my @storePaths = (); - -while (@ARGV) { - my $arg = shift @ARGV; - - if ($arg eq "--help") { - exec "man nix-copy-closure" or die; - } - elsif ($arg eq "--gzip" || $arg eq "--bzip2" || $arg eq "--xz") { - warn "$0: ‘$arg’ is not implemented\n" if $arg ne "--gzip"; - push @globalSshOpts, "-C"; - } - elsif ($arg eq "--from") { - $toMode = 0; - } - elsif ($arg eq "--to") { - $toMode = 1; - } - elsif ($arg eq "--include-outputs") { - $includeOutputs = 1; - } - elsif ($arg eq "--show-progress") { - warn "$0: ‘$arg’ is not implemented\n"; - } - elsif ($arg eq "--dry-run") { - $dryRun = 1; - } - elsif ($arg eq "--use-substitutes" || $arg eq "-s") { - $useSubstitutes = 1; - } - elsif ($arg eq "-v") { - $verbosity++; - setVerbosity($verbosity); - } - elsif (!defined $sshHost) { - $sshHost = $arg; - } - else { - push @storePaths, $arg; - } -} - -die "$0: you did not specify a host name\n" unless defined $sshHost; - - -if ($toMode) { # Copy TO the remote machine. - Nix::CopyClosure::copyTo( - $sshHost, [ @storePaths ], - $includeOutputs, $dryRun, $useSubstitutes); -} - -else { # Copy FROM the remote machine. - - my ($from, $to) = connectToRemoteNix($sshHost, []); - - # Query the closure of the given store paths on the remote - # machine. Paths are assumed to be store paths; there is no - # resolution (following of symlinks). - syswrite($to, pack("L<x4L<x4", 7, $includeOutputs ? 1 : 0)) or die; - writeStrings(\@storePaths, $to); - my @missing = grep { !isValidPath($_) } readStrings($from); - - # Export the store paths on the remote machine and import them locally. - if (scalar @missing > 0) { - print STDERR "copying ", scalar @missing, " missing paths from ‘$sshHost’...\n"; - writeInt(5, $to); # == cmdExportPaths - writeInt(0, $to); # obsolete - writeStrings(\@missing, $to); - importPaths(fileno($from), 1); - } - -} |