diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-07-21T21·34+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-07-21T21·34+0000 |
commit | c7bdb76fe461e2335caeea01c16b39a2784fa506 (patch) | |
tree | 9202fd4f800c63ce16298bce068b654d77ed126c /scripts/nix-push.in | |
parent | d5ee6f8700c7225a4ce34f6d92aae0d57bee3355 (diff) |
* Syntax fixes.
* When pushing, put the hash in the file name so that the client can verify (proof-carrying file names?).
Diffstat (limited to 'scripts/nix-push.in')
-rw-r--r-- | scripts/nix-push.in | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/scripts/nix-push.in b/scripts/nix-push.in index bb25019e8d35..4a6426fe0aed 100644 --- a/scripts/nix-push.in +++ b/scripts/nix-push.in @@ -8,17 +8,28 @@ foreach my $id (@ARGV) { # Get all paths referenced by the normalisation of the given # fstate expression. - system "nix -ih $id"; - if ($?) { die "`nix -ih' failed"; } + system "nix --install $id"; + if ($?) { die "`nix --install' failed"; } + my @paths; - open PATHS, "nix -qrh $id 2> /dev/null |" or die "nix -qrh"; + + open PATHS, "nix --query --refs $id 2> /dev/null |" or die "nix -qr"; while (<PATHS>) { chomp; - next unless /^\//; + die "bad: $_" unless /^\//; push @paths, $_; } close PATHS; + # Also add all normal forms that are contained in these paths. + open PATHS, "nix --query --generators --path @paths |" or die "nix -qg"; + while (<PATHS>) { + chomp; + die "bad: $_" unless /^\//; + push @paths, $_; + } + close PATHS; + # For each path, create a Fix expression that turns the path into # a Nix archive. foreach my $path (@paths) { @@ -38,7 +49,6 @@ foreach my $id (@ARGV) { my $fixexpr = "App(IncludeFix(\"nar/nar.fix\"), " . "[ (\"path\", Slice([\"$pathid\"], [(\"$path\", \"$pathid\", [])]))" . - ", (\"name\", \"$name\")" . "])"; my $fixfile = "/tmp/nix-push-tmp.fix"; @@ -53,13 +63,13 @@ foreach my $id (@ARGV) { die unless $nid =~ /^([0-9a-z]{32})$/; # Realise the Nix expression. - system "nix -ih $nid"; - if ($?) { die "`nix -ih' failed"; } - my $npath = `nix -qph $nid 2> /dev/null`; - $? and die "creating Nix archive"; + system "nix --install $nid"; + if ($?) { die "`nix --install' failed"; } + my $npath = `nix --query --list $nid 2> /dev/null`; + $? and die "`nix --query --list' failed"; chomp $npath; - push @pushlist, $npath; + push @pushlist, "$npath/*"; print "$path -> $npath\n"; } |