summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2021-07-20 14:48:50 +0200
committerEelco Dolstra <edolstra@gmail.com>2021-07-20 14:52:31 +0200
commit10e32cce2aeb8258231b2f171b916206074d5a43 (patch)
tree344ffd9ca4902de2836455048f26bccb3fe07117
parentwarrant: Remove space from URL (diff)
downloadnixpkgs-10e32cce2aeb8258231b2f171b916206074d5a43.tar.gz
copy-tarballs.pl: Handle SRI hashes
This should fix Jul 20 07:16:12 bastion mirror-tarballs-start[21663]: Use of uninitialized value $algo in concatenation (.) or string at ./maintainers/scripts/copy-tarballs.pl line 80. Jul 20 07:16:12 bastion mirror-tarballs-start[21663]: Use of uninitialized value in subroutine entry at ./maintainers/scripts/copy-tarballs.pl line 185. Jul 20 07:16:13 bastion mirror-tarballs-start[21663]: error: unknown hash algorithm '' at ./maintainers/scripts/copy-tarballs.pl line 185. (cherry picked from commit c48be3c17d2754d396790fb30405d625a562d1a5)
-rwxr-xr-xmaintainers/scripts/copy-tarballs.pl16
1 files changed, 15 insertions, 1 deletions
diff --git a/maintainers/scripts/copy-tarballs.pl b/maintainers/scripts/copy-tarballs.pl
index 59696a4432d8..6a08eb88bf84 100755
--- a/maintainers/scripts/copy-tarballs.pl
+++ b/maintainers/scripts/copy-tarballs.pl
@@ -165,6 +165,20 @@ elsif (defined $expr) {
my $hash = $fetch->{hash};
my $name = $fetch->{name};
+ if ($hash =~ /^([a-z0-9]+)-([A-Za-z0-9+\/=]+)$/) {
+ $algo = $1;
+ $hash = `nix hash to-base16 $hash` or die;
+ chomp $hash;
+ }
+
+ next unless $algo =~ /^[a-z0-9]+$/;
+
+ # Convert non-SRI base-64 to base-16.
+ if ($hash =~ /^[A-Za-z0-9+\/=]+$/) {
+ $hash = `nix hash to-base16 --type '$algo' $hash` or die;
+ chomp $hash;
+ }
+
if (defined $ENV{DEBUG}) {
print "$url $algo $hash\n";
next;
@@ -184,7 +198,7 @@ elsif (defined $expr) {
my $storePath = makeFixedOutputPath(0, $algo, $hash, $name);
- print STDERR "mirroring $url ($storePath)...\n";
+ print STDERR "mirroring $url ($storePath, $algo, $hash)...\n";
if ($dryRun) {
$mirrored++;