* 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).
This commit is contained in:
Eelco Dolstra 2004-12-13 16:56:18 +00:00
parent 862f4c154e
commit e3b051aeeb
2 changed files with 23 additions and 9 deletions

View File

@ -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

View File

@ -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";