App-cpan2arch
view release on metacpan or search on metacpan
lib/App/cpan2arch/CheckPackages.pm view on Meta::CPAN
{
my $OK = 200;
my $get_err = "$prog: failed to request $url\n";
$res = do {
try {
my %env = $self->env;
local $ENV{MUAC_NOCACHE} = true if $env{cache_ignore};
$_mua_arch->get($url)->result;
}
catch ($e) {
warn $e;
undef;
}
};
if ( !defined $res ) {
warn $get_err;
return 1;
}
if ( $res->code != $OK ) {
warn $res->body;
warn $get_err;
return 1;
}
}
# Decode JSON
my $json = do {
try {
$res->json;
}
catch ($e) {
warn $e;
undef;
}
};
if ( !defined $json ) {
warn "$prog: failed to decode $url\n";
return 1;
}
$self->_pdbg("\n");
return $json;
}
# Get a list of core modules from specific Perl version.
method _get_corelist ($ver)
{
$self->_psub;
my $prog = $self->prog;
# NOTE:
# Ideally, M::CoreList should always support the current perl pkg version,
# but its min required version would have to be kept updated, so just fallback
# to the current perl version if perl pkg version is not found in M::CoreList.
# This might lead to the generated PKGBUILD miss core modules (Arch users
# will have latest perl anyways).
require Module::CoreList;
my $perl_pkg_ver = do {
try {
version->parse($ver)->numify;
}
catch ($e) {
warn $e;
warn "$prog: failed to parse $ver version\n";
return 1;
}
};
my $perl_cur_ver = $];
if ( $perl_pkg_ver > $perl_cur_ver ) {
$self->_pdbg("perl package version ($perl_pkg_ver) is newer than the current perl version ($perl_cur_ver)\n");
}
my $core_modules = Module::CoreList->find_version($perl_pkg_ver);
# Fallback
$core_modules = Module::CoreList->find_version($perl_cur_ver)
unless defined $core_modules;
#$self->_pdump('$core_modules', $core_modules, "\n");
if ( !defined $core_modules ) {
warn "$prog: failed to get Perl core modules list\n";
return 1;
}
# Exclude core libs that MetaCPAN API cannot fetch.
{
my @EXCLUDED = (
qw<
Unicode
unicore::Name
meta_notation
>
);
delete $core_modules->{$_} foreach (@EXCLUDED);
}
return $core_modules;
}
# Format/convert datetime to YYYY-MMM-DD.
sub _fmt_date ( $date, $repo )
{
return undef unless defined $date;
require Time::Piece;
return $repo eq 'official'
( run in 0.981 second using v1.01-cache-2.11-cpan-bbb979687b5 )