aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2017-02-07 20:47:45 +0100
committerEelco Dolstra <edolstra@gmail.com>2017-02-07 20:47:45 +0100
commit6f4682ad36c97355fbb7ba86a9ce265c22102055 (patch)
tree99b5fcd1f04f3ab95852e7ffea379b9bfbceeae8 /scripts
parentcaa5793b4a74049ee37dd88eb1c5b785456ce40d (diff)
parentbfa41eb6714a7e7c3956389ee063e898bd1f37ff (diff)
Merge branch 'nix-copy-closure-c++' of https://github.com/shlevy/nix
Diffstat (limited to 'scripts')
-rw-r--r--scripts/local.mk7
-rwxr-xr-xscripts/nix-copy-closure.in103
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);
- }
-
-}