* Parse new hash format properly.
This commit is contained in:
		
							parent
							
								
									5863f24722
								
							
						
					
					
						commit
						bb2e53699f
					
				
					 1 changed files with 15 additions and 6 deletions
				
			
		|  | @ -80,6 +80,15 @@ sub isValidPath { | ||||||
|     return $? == 0; |     return $? == 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | sub parseHash { | ||||||
|  |     my $hash = shift; | ||||||
|  |     if ($hash =~ /^(.+):(.+)$/) { | ||||||
|  |         return ($1, $2); | ||||||
|  |     } else { | ||||||
|  |         return ("md5", $hash); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| while ($queueFront < scalar @queue) { | while ($queueFront < scalar @queue) { | ||||||
|     my $u = $queue[$queueFront++]; |     my $u = $queue[$queueFront++]; | ||||||
| #    print "$u\n"; | #    print "$u\n"; | ||||||
|  | @ -99,10 +108,11 @@ while ($queueFront < scalar @queue) { | ||||||
|         foreach my $patch (@{$patchList}) { |         foreach my $patch (@{$patchList}) { | ||||||
|             if (isValidPath($patch->{basePath})) { |             if (isValidPath($patch->{basePath})) { | ||||||
|                 # !!! this should be cached |                 # !!! this should be cached | ||||||
|                 my $hash = `@bindir@/nix-hash --type '$patch->{hashAlgo}' "$patch->{basePath}"`; |                 my ($baseHashAlgo, $baseHash) = parseHash $patch->{baseHash}; | ||||||
|  |                 my $hash = `@bindir@/nix-hash --type '$baseHashAlgo' "$patch->{basePath}"`; | ||||||
|                 chomp $hash; |                 chomp $hash; | ||||||
| #                print "  MY HASH is $hash\n"; | #                print "  MY HASH is $hash\n"; | ||||||
|                 if ($hash ne $patch->{baseHash}) { |                 if ($hash ne $baseHash) { | ||||||
|                     print LOGFILE "$$ rejecting $patch->{basePath}\n"; |                     print LOGFILE "$$ rejecting $patch->{basePath}\n"; | ||||||
|                     next; |                     next; | ||||||
|                 } |                 } | ||||||
|  | @ -177,8 +187,7 @@ my $maxStep = scalar @path; | ||||||
| 
 | 
 | ||||||
| sub downloadFile { | sub downloadFile { | ||||||
|     my $url = shift; |     my $url = shift; | ||||||
|     my $hash = shift; |     my ($hashAlgo, $hash) = parseHash(shift); | ||||||
|     my $hashAlgo = shift; |  | ||||||
|     $ENV{"PRINT_PATH"} = 1; |     $ENV{"PRINT_PATH"} = 1; | ||||||
|     $ENV{"QUIET"} = 1; |     $ENV{"QUIET"} = 1; | ||||||
|     $ENV{"NIX_HASH_ALGO"} = $hashAlgo; |     $ENV{"NIX_HASH_ALGO"} = $hashAlgo; | ||||||
|  | @ -210,7 +219,7 @@ while (scalar @path > 0) { | ||||||
| 
 | 
 | ||||||
|         # Download the patch. |         # Download the patch. | ||||||
|         print "  downloading patch...\n"; |         print "  downloading patch...\n"; | ||||||
|         my $patchPath = downloadFile "$patch->{url}", "$patch->{hash}", "$patch->{hashAlgo}"; |         my $patchPath = downloadFile "$patch->{url}", "$patch->{hash}"; | ||||||
| 
 | 
 | ||||||
|         # Turn the base path into a NAR archive, to which we can |         # Turn the base path into a NAR archive, to which we can | ||||||
|         # actually apply the patch. |         # actually apply the patch. | ||||||
|  | @ -237,7 +246,7 @@ while (scalar @path > 0) { | ||||||
|          |          | ||||||
|         # Download the archive. |         # Download the archive. | ||||||
|         print "  downloading archive...\n"; |         print "  downloading archive...\n"; | ||||||
|         my $narFilePath = downloadFile "$narFile->{url}", "$narFile->{hash}", "$narFile->{hashAlgo}"; |         my $narFilePath = downloadFile "$narFile->{url}", "$narFile->{hash}"; | ||||||
| 
 | 
 | ||||||
|         # Unpack the archive into the target path. |         # Unpack the archive into the target path. | ||||||
|         print "  unpacking archive...\n"; |         print "  unpacking archive...\n"; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue