Author: dagolden
Date: Wed Apr 1 03:59:50 2009
New Revision: 12663
Modified:
Module-Build/branches/mymeta-yml/ (props changed)
Module-Build/branches/mymeta-yml/Changes
Module-Build/branches/mymeta-yml/MANIFEST.SKIP
Module-Build/branches/mymeta-yml/lib/Module/Build/Base.pm
Log:
restored MYMETA.yml support in this branch (some test bugs remaining)
Modified: Module-Build/branches/mymeta-yml/Changes
==============================================================================
--- Module-Build/branches/mymeta-yml/Changes (original)
+++ Module-Build/branches/mymeta-yml/Changes Wed Apr 1 03:59:50 2009
@@ -2,6 +2,10 @@
0.32_01 -
+ Enhancements
+ - Generates MYMETA.yml during Build.PL (new standard protocol for communicating
+ configuration between toolchain components)
+
Bug-fixes:
- Module::Build::Compat had stopped adding "PL_FILES => {}" when no
PL_files property was set in Build.PL; restored old behavior and fixed
Modified: Module-Build/branches/mymeta-yml/MANIFEST.SKIP
==============================================================================
--- Module-Build/branches/mymeta-yml/MANIFEST.SKIP (original)
+++ Module-Build/branches/mymeta-yml/MANIFEST.SKIP Wed Apr 1 03:59:50 2009
@@ -33,6 +33,7 @@
^website
/Script$
^META-
+^MYMETA\.yml$
Plugin
doc_check.pl$
^[^/]+\.patch$
Modified: Module-Build/branches/mymeta-yml/lib/Module/Build/Base.pm
==============================================================================
--- Module-Build/branches/mymeta-yml/lib/Module/Build/Base.pm (original)
+++ Module-Build/branches/mymeta-yml/lib/Module/Build/Base.pm Wed Apr 1 03:59:50 2009
@@ -826,7 +826,9 @@
__PACKAGE__->add_property(build_bat => 0);
__PACKAGE__->add_property(config_dir => '_build');
__PACKAGE__->add_property(include_dirs => []);
+__PACKAGE__->add_property(license => 'unknown');
__PACKAGE__->add_property(metafile => 'META.yml');
+__PACKAGE__->add_property(mymetafile => 'MYMETA.yml');
__PACKAGE__->add_property(recurse_into => []);
__PACKAGE__->add_property(use_rcfile => 1);
__PACKAGE__->add_property(create_packlist => 1);
@@ -896,7 +898,6 @@
has_config_data
install_base
libdoc_dirs
- license
magic_number
mb_version
module_name
@@ -1526,17 +1527,26 @@
= map $self->$_(), qw(build_script dist_name dist_version);
if ( $self->delete_filetree($build_script) ) {
- $self->log_info("Removed previous script '$build_script'\n\n");
+ $self->log_info("Removed previous script '$build_script'\n");
}
$self->log_info("Creating new '$build_script' script for ",
- "'$dist_name' version '$dist_version'\n");
+ "'$dist_name' version '$dist_version'\n\n");
my $fh = IO::File->new(">$build_script") or die "Can't create '$build_script': $!";
$self->print_build_script($fh);
close $fh;
$self->make_executable($build_script);
-
+
+ my $mymetafile = $self->mymetafile;
+ if ( $self->delete_filetree($mymetafile) ) {
+ $self->log_info("Removed previous '$mymetafile'\n");
+ }
+ $self->log_info("Creating new '$mymetafile' with configuration results\n");
+ if ( $self->write_metafile( $mymetafile, $self->generate_metadata ) ) {
+ $self->add_to_cleanup( $mymetafile );
+ }
+
return 1;
}
@@ -3096,6 +3106,8 @@
sub ACTION_distcheck {
my ($self) = @_;
+ $self->_check_mymeta_skip('MANIFEST.SKIP');
+
require ExtUtils::Manifest;
local $^W; # ExtUtils::Manifest is not warnings clean.
my ($missing, $extra) = ExtUtils::Manifest::fullcheck();
@@ -3110,6 +3122,21 @@
}
}
+sub _check_mymeta_skip {
+ my $self = shift;
+ my $maniskip = shift || 'MANIFEST.SKIP';
+
+ require ExtUtils::Manifest;
+ local $^W; # ExtUtils::Manifest is not warnings clean.
+
+ my $skip_check = ExtUtils::Manifest::maniskip($maniskip);
+ my $mymetafile = $self->mymetafile;
+ if ( ! $skip_check->( $mymetafile ) ) {
+ $self->log_warn("File '$maniskip' does not include '$mymetafile'. Adding it now.\n");
+ $self->_append_maniskip("^$mymetafile\$", $maniskip);
+ }
+}
+
sub _add_to_manifest {
my ($self, $manifest, $lines) = @_;
$lines = [$lines] unless ref $lines;
@@ -3299,9 +3326,11 @@
my ($self) = @_;
$self->depends_on('distmeta');
+
+ $self->_check_mymeta_skip('MANIFEST.SKIP');
my $dist_files = $self->_read_manifest('MANIFEST')
- or die "Can't create distdir without a MANIFEST file - run 'manifest' action first";
+ or die "Can't create distdir without a MANIFEST file - run 'manifest' action first.\n";
delete $dist_files->{SIGNATURE}; # Don't copy, create a fresh one
die "No files found in MANIFEST - try running 'manifest' action?\n"
unless ($dist_files and keys %$dist_files);
@@ -3340,6 +3369,19 @@
});
}
+
+sub _append_maniskip {
+ my $self = shift;
+ my $skip = shift;
+ my $file = shift || 'MANIFEST.SKIP';
+ return unless defined $skip && length $skip;
+ my $fh = IO::File->new(">> $file")
+ or die "Can't open $file: $!";
+
+ print $fh "$skip\n";
+ $fh->close();
+}
+
sub _write_default_maniskip {
my $self = shift;
my $file = shift || 'MANIFEST.SKIP';
@@ -3357,6 +3399,9 @@
\B\.svn\b
\B\.cvsignore$
+# Avoid configuration metadata files.
+^MYMETA.yml$
+
# Avoid Makemaker generated and utility files.
\bMakefile$
\bblib
@@ -3408,6 +3453,9 @@
my ($self) = @_;
my $maniskip = 'MANIFEST.SKIP';
+
+ $self->_check_mymeta_skip( $maniskip );
+
unless ( -e 'MANIFEST' || -e $maniskip ) {
$self->log_warn("File '$maniskip' does not exist: Creating a default '$maniskip'\n");
$self->_write_default_maniskip($maniskip);
@@ -3627,7 +3675,7 @@
foreach (qw(dist_name dist_version dist_author dist_abstract license)) {
(my $name = $_) =~ s/^dist_//;
$add_node->($name, $self->$_());
- die "ERROR: Missing required field '$_' for META.yml\n"
+ die "ERROR: Missing required field '$_' for metafile\n"
unless defined($node->{$name}) && length($node->{$name});
}
$node->{version} = '' . $node->{version}; # Stringify version objects
@@ -3670,7 +3718,7 @@
my $pkgs = eval { $self->find_dist_packages };
if ($@) {
$self->log_warn("$@\nWARNING: Possible missing or corrupt 'MANIFEST' file.\n" .
- "Nothing to enter for 'provides' field in META.yml\n");
+ "Nothing to enter for 'provides' field in metafile.\n");
} else {
$node->{provides} = $pkgs if %$pkgs;
}
@@ -3714,7 +3762,7 @@
# private stock.
my $manifest = $self->_read_manifest('MANIFEST')
- or die "Can't find dist packages without a MANIFEST file - run 'manifest' action first";
+ or die "Can't find dist packages without a MANIFEST file\nRun 'Build manifest' to generate one\n";
# Localize
my %dist_files = map { $self->localize_file_path($_) => $_ }
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.