App-Tel
view release on metacpan or search on metacpan
local/lib/perl5/Module/Build/Base.pm view on Meta::CPAN
$meta_license = 'unknown';
}
return ($meta_license, $meta_license_url);
}
sub get_metadata {
my ($self, %args) = @_;
my $fatal = $args{fatal} || 0;
my $p = $self->{properties};
$self->auto_config_requires if $args{auto};
# validate required fields
foreach my $f (qw(dist_name dist_version dist_author dist_abstract license)) {
my $field = $self->$f();
unless ( defined $field and length $field ) {
my $err = "ERROR: Missing required field '$f' for metafile\n";
if ( $fatal ) {
die $err;
}
else {
$self->log_warn($err);
}
}
}
my %metadata = (
name => $self->dist_name,
version => $self->normalize_version($self->dist_version),
author => $self->dist_author,
abstract => $self->dist_abstract,
generated_by => "Module::Build version $Module::Build::VERSION",
'meta-spec' => {
version => '2',
url => 'http://search.cpan.org/perldoc?CPAN::Meta::Spec',
},
dynamic_config => exists $p->{dynamic_config} ? $p->{dynamic_config} : 1,
release_status => $self->release_status,
);
my ($meta_license, $meta_license_url) = $self->_get_license;
$metadata{license} = [ $meta_license ];
$metadata{resources}{license} = [ $meta_license_url ] if defined $meta_license_url;
$metadata{prereqs} = $self->_normalize_prereqs;
if (exists $p->{no_index}) {
$metadata{no_index} = $p->{no_index};
} elsif (my $pkgs = eval { $self->find_dist_packages }) {
$metadata{provides} = $pkgs if %$pkgs;
} else {
$self->log_warn("$@\nWARNING: Possible missing or corrupt 'MANIFEST' file.\n" .
"Nothing to enter for 'provides' field in metafile.\n");
}
if (my $add = $self->meta_add) {
if (not exists $add->{'meta-spec'} or $add->{'meta-spec'}{version} != 2) {
require CPAN::Meta::Converter;
if (CPAN::Meta::Converter->VERSION('2.141170')) {
$add = CPAN::Meta::Converter->new($add)->upgrade_fragment;
delete $add->{prereqs}; # XXX this would now overwrite all prereqs
}
else {
$self->log_warn("Can't meta_add without CPAN::Meta 2.141170");
}
}
while (my($k, $v) = each %{$add}) {
$metadata{$k} = $v;
}
}
if (my $merge = $self->meta_merge) {
if (eval { require CPAN::Meta::Merge }) {
%metadata = %{ CPAN::Meta::Merge->new(default_version => '1.4')->merge(\%metadata, $merge) };
}
else {
$self->log_warn("Can't merge without CPAN::Meta::Merge");
}
}
return \%metadata;
}
# To preserve compatibility with old API, $node *must* be a hashref
# passed in to prepare_metadata. $keys is an arrayref holding a
# list of keys -- it's use is optional and generally no longer needed
# but kept for back compatibility. $args is an optional parameter to
# support the new 'fatal' toggle
sub prepare_metadata {
my ($self, $node, $keys, $args) = @_;
unless ( ref $node eq 'HASH' ) {
croak "prepare_metadata() requires a hashref argument to hold output\n";
}
croak 'Keys argument to prepare_metadata is no longer supported' if $keys;
%{$node} = %{ $self->get_meta(%{$args}) };
return $node;
}
sub _read_manifest {
my ($self, $file) = @_;
return undef unless -e $file;
require ExtUtils::Manifest; # ExtUtils::Manifest is not warnings clean.
local ($^W, $ExtUtils::Manifest::Quiet) = (0,1);
return scalar ExtUtils::Manifest::maniread($file);
}
sub find_dist_packages {
my $self = shift;
# Only packages in .pm files are candidates for inclusion here.
# Only include things in the MANIFEST, not things in developer's
# private stock.
my $manifest = $self->_read_manifest('MANIFEST')
or die "Can't find dist packages without a MANIFEST file\nRun 'Build manifest' to generate one\n";
# Localize
( run in 1.578 second using v1.01-cache-2.11-cpan-364913b4093 )