Unverified Commit e5df6872 authored by Stig's avatar Stig Committed by GitHub
Browse files

Merge pull request #243781 from jamespwilliams/jpw/nix-generate-cpan-to-nix-sri

nix-generate-from-cpan: generate SRI hashes
parents 934817ce 9aabc9f7
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -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;