* 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..." echo "packing $path into $out..."
mkdir $out mkdir $out
dst=$out/$(basename $path).nar.bz2 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 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"; (-f $narfile) or die "narfile for $storepath not found";
push @nararchives, $narfile; push @nararchives, $narfile;
open MD5, "$nardir/md5" or die "cannot open hash"; open MD5, "$nardir/narbz2-hash" or die "cannot open narbz2-hash";
my $hash = <MD5>; my $narbz2Hash = <MD5>;
chomp $hash; chomp $narbz2Hash;
$hash =~ /^[0-9a-z]{32}$/ or die "invalid hash"; $narbz2Hash =~ /^[0-9a-z]{32}$/ or die "invalid hash";
close MD5; 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 "{\n";
print MANIFEST " StorePath: $storepath\n"; print MANIFEST " StorePath: $storepath\n";
print MANIFEST " NarURL: $archives_get_url/$narname\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$/) { if ($storepath =~ /\.store$/) {
open PREDS, "@bindir@/nix-store --query --predecessors $storepath |" or die "cannot run nix"; open PREDS, "@bindir@/nix-store --query --predecessors $storepath |" or die "cannot run nix";