about summary refs log tree commit diff
path: root/maintainers/scripts/nix-generate-from-cpan.pl
diff options
context:
space:
mode:
authorJames Williams <jamesphwilliams@gmail.com>2023-07-16 09:20:41 +0100
committerJames Williams <jamesphwilliams@gmail.com>2023-07-16 15:43:23 +0100
commit9aabc9f7f3e07ebb07537b6c95fb954af4c3a9a0 (patch)
treee8e3db028203a36f56580c9c63fab670a8793abb /maintainers/scripts/nix-generate-from-cpan.pl
parent16c3a09e829f338303ed210c984c0dc7b9e33cef (diff)
nix-generate-from-cpan: generate SRI hashes
Diffstat (limited to 'maintainers/scripts/nix-generate-from-cpan.pl')
-rwxr-xr-xmaintainers/scripts/nix-generate-from-cpan.pl11
1 files changed, 9 insertions, 2 deletions
diff --git a/maintainers/scripts/nix-generate-from-cpan.pl b/maintainers/scripts/nix-generate-from-cpan.pl
index ce0599dda0e71..6754f79009ec9 100755
--- a/maintainers/scripts/nix-generate-from-cpan.pl
+++ b/maintainers/scripts/nix-generate-from-cpan.pl
@@ -6,6 +6,7 @@ use warnings;
 
 use CPAN::Meta();
 use CPANPLUS::Backend();
+use MIME::Base64;
 use Module::CoreList;
 use Getopt::Long::Descriptive qw( describe_options );
 use JSON::PP qw( encode_json );
@@ -354,6 +355,11 @@ sub render_license {
     return $license_line;
 }
 
+sub sha256_to_sri {
+    my ($sha256) = @_;
+    return "sha256-" . encode_base64(pack("H*", $sha256), '');
+}
+
 my ( $opt, $module_name ) = handle_opts();
 
 Log::Log4perl->easy_init(
@@ -380,8 +386,9 @@ INFO( "package: ", $module->package, " (", "$pkg_name-$pkg_version", ", ", $attr
 INFO( "path: ",    $module->path );
 
 my $tar_path = $module->fetch();
+my $sri_hash = sha256_to_sri($module->status->checksum_value);
 INFO( "downloaded to: ", $tar_path );
-INFO( "sha-256: ",       $module->status->checksum_value );
+INFO( "hash: ", $sri_hash );
 
 my $pkg_path = $module->extract();
 INFO( "unpacked to: ", $pkg_path );
@@ -436,7 +443,7 @@ print <<EOF;
     version = "$pkg_version";
     src = fetchurl {
       url = "mirror://cpan/${\$module->path}/${\$module->package}";
-      sha256 = "${\$module->status->checksum_value}";
+      hash = "$sri_hash";
     };
 EOF
 print <<EOF if scalar @build_deps > 0;