summary refs log tree commit diff
path: root/scripts
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2005-03-14 15:09:53 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2005-03-14 15:09:53 +0000
commit8eff18cd4321f6282e3880da09010ccc9242962e (patch)
tree179ffe1cd9d27b43e6cd2ce60e348d5f116d609c /scripts
parent1562dfe9bad119e58296f35c1982fc539a97ac30 (diff)
downloadguix-8eff18cd4321f6282e3880da09010ccc9242962e.tar.gz
* Set NAR name to content hash; previous nix-push names were not
  unique.
* Drop `hashAlgo' attribute in manifests; prefix hashes with the hash
  algorithm instead.

Diffstat (limited to 'scripts')
-rw-r--r--scripts/nix-push.in21
-rw-r--r--scripts/readmanifest.pm.in17
2 files changed, 13 insertions, 25 deletions
diff --git a/scripts/nix-push.in b/scripts/nix-push.in
index 5f5f659b63..ecc7a77af7 100644
--- a/scripts/nix-push.in
+++ b/scripts/nix-push.in
@@ -148,12 +148,6 @@ for (my $n = 0; $n < scalar @storePaths; $n++) {
     my $basename = $1;
     defined $basename or die;
 
-    my $narname = "$basename.nar.bz2";
-
-    my $narFile = "$narDir/$narname";
-    (-f $narFile) or die "narfile for $storePath not found";
-    push @narArchives, $narFile;
-
     open SHA1, "$narDir/narbz2-hash" or die "cannot open narbz2-hash";
     my $narbz2Hash = <SHA1>;
     chomp $narbz2Hash;
@@ -166,6 +160,12 @@ for (my $n = 0; $n < scalar @storePaths; $n++) {
     $narHash =~ /^[0-9a-z]{32}$/ or die "invalid hash";
     close SHA1;
     
+    my $narName = "$narbz2Hash.nar.bz2";
+
+    my $narFile = "$narDir/$narName";
+    (-f $narFile) or die "narfile for $storePath not found";
+    push @narArchives, $narFile;
+
     my $narbz2Size = (stat $narFile)[7];
 
     my $references = `$binDir/nix-store --query --references '$storePath'`;
@@ -179,16 +179,15 @@ for (my $n = 0; $n < scalar @storePaths; $n++) {
 
     my $url;
     if ($localCopy) {
-        $url = "file://$localArchivesDir/$narname";
+        $url = "file://$localArchivesDir/$narName";
     } else {
-        $url = "$archivesGetURL/$narname";
+        $url = "$archivesGetURL/$narName";
     }
     $narFiles{$storePath} = [
         { url => $url
-        , hash => $narbz2Hash
+        , hash => "sha1:$narbz2Hash"
         , size => $narbz2Size
-        , narHash => $narHash
-        , hashAlgo => "sha1"
+        , narHash => "sha1:$narHash"
         , references => $references
         , deriver => $deriver
         }
diff --git a/scripts/readmanifest.pm.in b/scripts/readmanifest.pm.in
index 3ecb81f8f8..5066cdde13 100644
--- a/scripts/readmanifest.pm.in
+++ b/scripts/readmanifest.pm.in
@@ -130,7 +130,6 @@ sub readManifest {
             }
             
             elsif (/^\s*StorePath:\s*(\/\S+)\s*$/) { $storePath = $1; }
-            elsif (/^\s*HashAlgo:\s*(\S+)\s*$/) { $hashAlgo = $1; }
             elsif (/^\s*Hash:\s*(\S+)\s*$/) { $hash = $1; }
             elsif (/^\s*URL:\s*(\S+)\s*$/) { $url = $1; }
             elsif (/^\s*Size:\s*(\d+)\s*$/) { $size = $1; }
@@ -145,7 +144,7 @@ sub readManifest {
 
             # Compatibility;
             elsif (/^\s*NarURL:\s*(\S+)\s*$/) { $url = $1; }
-            elsif (/^\s*MD5:\s*(\S+)\s*$/) { $hash = $1; }
+            elsif (/^\s*MD5:\s*(\S+)\s*$/) { $hash = "md5:$1"; }
 
         }
     }
@@ -173,13 +172,8 @@ sub writeManifest
         foreach my $narFile (@{$narFileList}) {
             print MANIFEST "{\n";
             print MANIFEST "  StorePath: $storePath\n";
-            print MANIFEST "  HashAlgo: $narFile->{hashAlgo}\n";
             print MANIFEST "  NarURL: $narFile->{url}\n";
-            if ($narFile->{hashAlgo} eq "md5") {
-                print MANIFEST "  MD5: $narFile->{hash}\n";
-            } else {
-                print MANIFEST "  Hash: $narFile->{hash}\n";
-            }
+            print MANIFEST "  Hash: $narFile->{hash}\n";
             print MANIFEST "  NarHash: $narFile->{narHash}\n";
             print MANIFEST "  Size: $narFile->{size}\n";
             print MANIFEST "  References: $narFile->{references}\n"
@@ -195,13 +189,8 @@ sub writeManifest
         foreach my $patch (@{$patchList}) {
             print MANIFEST "patch {\n";
             print MANIFEST "  StorePath: $storePath\n";
-            print MANIFEST "  HashAlgo: $patch->{hashAlgo}\n";
             print MANIFEST "  NarURL: $patch->{url}\n";
-            if ($patch->{hashAlgo} eq "md5") {
-                print MANIFEST "  MD5: $patch->{hash}\n";
-            } else {
-                print MANIFEST "  Hash: $patch->{hash}\n";
-            }
+            print MANIFEST "  Hash: $patch->{hash}\n";
             print MANIFEST "  NarHash: $patch->{narHash}\n";
             print MANIFEST "  Size: $patch->{size}\n";
             print MANIFEST "  BasePath: $patch->{basePath}\n";