diff --git a/corepkgs/nar/nar.sh.in b/corepkgs/nar/nar.sh.in index 11344f7fff..11598e6a98 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 fc44d02c6c..9f1d5d22b4 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 = ; - chomp $hash; - $hash =~ /^[0-9a-z]{32}$/ or die "invalid hash"; + open MD5, "$nardir/narbz2-hash" or die "cannot open narbz2-hash"; + my $narbz2Hash = ; + 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 = ; + 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";