forked from lix-project/lix
* Parse new hash format properly.
This commit is contained in:
parent
5863f24722
commit
bb2e53699f
|
@ -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…
Reference in a new issue