CPANPLUS-Dist-Debora
view release on metacpan or search on metacpan
lib/CPANPLUS/Dist/Debora/Package.pm view on Meta::CPAN
# SPDX-License-Identifier: Artistic-1.0-Perl OR GPL-1.0-or-later
use 5.016;
use warnings;
use utf8;
our $VERSION = '0.018';
use Carp qw(croak);
use Config;
use CPAN::Meta;
use English qw(-no_match_vars);
use File::Basename qw(dirname);
use File::Path qw(remove_tree);
use File::Spec::Functions qw(catdir catfile splitdir splitpath);
use File::Temp qw(tempdir);
use Net::Domain qw(hostfqdn);
use Software::LicenseUtils 0.103014;
use CPANPLUS::Dist::Debora::License;
use CPANPLUS::Dist::Debora::Pod;
use CPANPLUS::Dist::Debora::Util qw(
parse_version
module_is_distributed_with_perl
decode_utf8
can_run
run
find_most_recent_mtime
find_shared_objects
);
# Map some distribution names to special package names.
my %PACKAGE_NAME_FOR = (
'ack' => 'ack',
'App-Licensecheck' => 'licensecheck',
'App-perlbrew' => 'perlbrew',
'TermReadKey' => 'perl-Term-ReadKey',
);
# Version quirks.
my %VERSION_FOR = ('BioPerl-Run' => sub { parse_version($_[0])->normal });
# Modules with summaries and descriptions.
my %POD_FOR = (
'ack' => 'ack',
'App-Licensecheck' => 'licensecheck',
'TermReadKey' => 'ReadKey.pm.PL',
'TimeDate' => 'Date::Parse',
'YAML-LibYAML' => 'YAML::XS',
);
# Common modules whose license might not be guessed.
my %LICENSE_FOR = (
'AnyEvent' => 'Artistic-1.0-Perl OR GPL-1.0-or-later',
'Apache-Htpasswd' => 'Artistic-1.0-Perl OR GPL-1.0-or-later',
'Cache-Cache' => 'Artistic-1.0-Perl OR GPL-1.0-or-later',
'Canary-Stability' => 'Artistic-1.0-Perl OR GPL-1.0-or-later',
'CGI-FormBuilder' => 'Artistic-1.0-Perl OR GPL-1.0-or-later',
'CGI-FormBuilder-Source-Perl' => 'Artistic-1.0-Perl OR GPL-1.0-or-later',
'Crypt-CBC' => 'Artistic-1.0-Perl OR GPL-1.0-or-later',
'Encode-Detect' => 'MPL-1.1',
'Guard' => 'Artistic-1.0-Perl OR GPL-1.0-or-later',
'Iterator' => 'Artistic-1.0-Perl OR GPL-1.0-or-later',
'Iterator-Util' => 'Artistic-1.0-Perl OR GPL-1.0-or-later',
'Lingua-EN-Words2Nums' => 'Artistic-1.0-Perl OR GPL-1.0-or-later',
'Lingua-Stem-Snowball-Da' => 'GPL-2.0-only',
'Mozilla-CA' => 'MPL-2.0',
'Socket6' => 'BSD',
'String-ShellQuote' => 'Artistic-1.0-Perl OR GPL-1.0-or-later',
'Sub-Delete' => 'Artistic-1.0-Perl OR GPL-1.0-or-later',
'XML-Writer' => 'CC0-1.0',
);
sub new {
my ($class, %attrs) = @_;
my $attrs = $class->_buildargs(%attrs);
return bless $attrs, $class;
}
sub _buildargs {
my ($class, %attrs) = @_;
if (!exists $attrs{module}) {
croak 'No module';
}
my $builddir = $attrs{builddir} = $attrs{module}->status->extract;
if (!defined $builddir) {
croak 'No builddir';
}
if (!exists $attrs{installdirs}) {
$attrs{installdirs} = 'vendor';
}
my $installdirs = $attrs{installdirs};
if ($installdirs ne 'vendor' && $installdirs ne 'site') {
croak "installdirs is neither 'vendor' nor 'site': '$installdirs'";
}
if (!exists $attrs{build_number}) {
$attrs{build_number} = 1;
}
my $build_number = $attrs{build_number};
if ($build_number !~ m{\A [1-9]\d* \z}xms) {
croak "build_number is not a positive integer: '$build_number'";
}
$attrs{last_modification} = find_most_recent_mtime($builddir);
return \%attrs;
}
sub _read {
my ($self, $name, $default) = @_;
if (!exists $self->{$name}) {
( run in 1.485 second using v1.01-cache-2.11-cpan-e1769b4cff6 )