about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2004-12-13T16·56+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2004-12-13T16·56+0000
commite3b051aeeb968528d918b6af6c1e1df0bd7de958 (patch)
tree19f659c9a99bc6bc9516a1ce6d50210c694f65b9
parent862f4c154e883611ba9dfefe921c87e6423075ea (diff)
* Include the size of the bzipped archive (necessary for computing the
  cheapest download path), as well as the hash of the contents of the
  path (necessary for checking patch applicability).

-rw-r--r--corepkgs/nar/nar.sh.in12
-rw-r--r--scripts/nix-push.in20
2 files changed, 23 insertions, 9 deletions
diff --git a/corepkgs/nar/nar.sh.in b/corepkgs/nar/nar.sh.in
index 11344f7fffbd..11598e6a98f0 100644
--- a/corepkgs/nar/nar.sh.in
+++ b/corepkgs/nar/nar.sh.in
@@ -6,10 +6,14 @@ export PATH=/bin:/usr/bin
 echo "packing $path into $out..."
 mkdir $out
 dst=$out/$(basename $path).nar.bz2
-@bindir@/nix-store --dump "$path" | @bzip2@ > $dst
+@bindir@/nix-store --dump "$path" > tmp
 
-if test "${PIPESTATUS[0]}" != "0"; then exit 1; fi
+@bzip2@ < tmp > $dst
 
-md5=$(md5sum -b $dst | cut -c1-32)
+narHash=$(md5sum -b tmp | cut -c1-32)
 if test $? != 0; then exit 1; fi
-echo $md5 > $out/md5
+echo $narHash > $out/nar-hash
+
+narbz2Hash=$(md5sum -b $dst | cut -c1-32)
+if test $? != 0; then exit 1; fi
+echo $narbz2Hash > $out/narbz2-hash
diff --git a/scripts/nix-push.in b/scripts/nix-push.in
index fc44d02c6cba..9f1d5d22b459 100644
--- a/scripts/nix-push.in
+++ b/scripts/nix-push.in
@@ -125,16 +125,26 @@ for (my $n = 0; $n < scalar @storepaths; $n++) {
     (-f $narfile) or die "narfile for $storepath not found";
     push @nararchives, $narfile;
 
-    open MD5, "$nardir/md5" or die "cannot open hash";
-    my $hash = <MD5>;
-    chomp $hash;
-    $hash =~ /^[0-9a-z]{32}$/ or die "invalid hash";
+    open MD5, "$nardir/narbz2-hash" or die "cannot open narbz2-hash";
+    my $narbz2Hash = <MD5>;
+    chomp $narbz2Hash;
+    $narbz2Hash =~ /^[0-9a-z]{32}$/ or die "invalid hash";
     close MD5;
 
+    open MD5, "$nardir/nar-hash" or die "cannot open nar-hash";
+    my $narHash = <MD5>;
+    chomp $narHash;
+    $narHash =~ /^[0-9a-z]{32}$/ or die "invalid hash";
+    close MD5;
+    
+    my $size = (stat $narfile)[7];
+
     print MANIFEST "{\n";
     print MANIFEST "  StorePath: $storepath\n";
     print MANIFEST "  NarURL: $archives_get_url/$narname\n";
-    print MANIFEST "  MD5: $hash\n";
+    print MANIFEST "  MD5: $narbz2Hash\n";
+    print MANIFEST "  NarHash: $narHash\n";
+    print MANIFEST "  Size: $size\n";
 
     if ($storepath =~ /\.store$/) {
         open PREDS, "@bindir@/nix-store --query --predecessors $storepath |" or die "cannot run nix";