diff options
Diffstat (limited to 'maintainers/scripts/nix-generate-from-cpan.pl')
-rwxr-xr-x | maintainers/scripts/nix-generate-from-cpan.pl | 11 |
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; |