Author: schwern
Date: Sat Jun 27 20:01:32 2009
New Revision: 12946
Added:
Module-Build/trunk/t/write_default_maniskip.t
Modified:
Module-Build/trunk/MANIFEST
Module-Build/trunk/lib/Module/Build/Base.pm
Log:
Change the manifest action to use the system MANIFEST.SKIP rather than have MB
make its own.
Modified: Module-Build/trunk/MANIFEST
==============================================================================
--- Module-Build/trunk/MANIFEST (original)
+++ Module-Build/trunk/MANIFEST Sat Jun 27 20:01:32 2009
@@ -71,4 +71,5 @@
t/tilde.t
t/use_tap_harness.t
t/versions.t
+t/write_default_maniskip.t
t/xs.t
Modified: Module-Build/trunk/lib/Module/Build/Base.pm
==============================================================================
--- Module-Build/trunk/lib/Module/Build/Base.pm (original)
+++ Module-Build/trunk/lib/Module/Build/Base.pm Sat Jun 27 20:01:32 2009
@@ -3358,35 +3358,81 @@
});
}
+
+=begin private
+
+ my $has_include = $build->_eumanifest_has_include;
+
+Returns true if the installed version of ExtUtils::Manifest supports
+#include and #include_default directives. False otherwise.
+
+=end private
+
+=cut
+
+# #!include and #!include_default were added in 1.50
+sub _eumanifest_has_include {
+ my $self = shift;
+
+ require ExtUtils::Manifest;
+ return ExtUtils::Manifest->VERSION >= 1.50 ? 1 : 0;
+ return 0;
+}
+
+
+=begin private
+
+ my $maniskip_file = $build->_default_maniskip;
+
+Returns the location of the installed MANIFEST.SKIP file used by
+default.
+
+=end private
+
+=cut
+
+sub _default_maniskip {
+ my $self = shift;
+
+ my $default_maniskip;
+ for my $dir (@INC) {
+ $default_maniskip = File::Spec->catfile($dir, "ExtUtils",
"MANIFEST.SKIP");
+ last if -r $default_maniskip;
+ }
+
+ return $default_maniskip;
+}
+
+
+=begin private
+
+ my $content = $build->_slurp($file);
+
+Reads $file and returns the $content.
+
+=end private
+
+=cut
+
+sub _slurp {
+ my $self = shift;
+ my $file = shift;
+ open my $fh, "<", $file or croak "Can't open $file: $!";
+ local $/;
+ return <$fh>;
+}
+
+
sub _write_default_maniskip {
my $self = shift;
my $file = shift || 'MANIFEST.SKIP';
my $fh = IO::File->new("> $file")
or die "Can't open $file: $!";
- # This is derived from MakeMaker's default MANIFEST.SKIP file with
- # some new entries
+ my $content = $self->_eumanifest_has_include ? "#!include_default\n"
+ : $self->_slurp(
$self->_default_maniskip );
- print $fh <<'EOF';
-# Avoid version control files.
-\bRCS\b
-\bCVS\b
-,v$
-\B\.svn\b
-\B\.cvsignore$
-
-# Avoid MakeMaker generated and utility files.
-\bMakefile$
-\bblib
-\bMakeMaker-\d
-\bpm_to_blib$
-\bblibdirs$
-^MANIFEST\.SKIP$
-
-# Avoid VMS specific MakeMaker generated files
-\bDescrip.MMS$
-\bDESCRIP.MMS$
-\bdescrip.mms$
+ $content .= <<'EOF';
# Avoid Module::Build generated and utility files.
\bBuild$
@@ -3396,30 +3442,15 @@
\bBUILD.COM$
\bbuild.com$
-# Avoid Devel::Cover generated files
-\bcover_db
-
-# Avoid temp and backup files.
-~$
-\.tmp$
-\.old$
-\.bak$
-\#$
-\.#
-\.rej$
-
-# Avoid OS-specific files/dirs
-# Mac OSX metadata
-\B\.DS_Store
-# Mac OSX SMB mount metadata files
-\B\._
# Avoid archives of this distribution
EOF
# Skip, for example, 'Module-Build-0.27.tar.gz'
- print $fh '\b'.$self->dist_name.'-[\d\.\_]+'."\n";
+ $content .= '\b'.$self->dist_name.'-[\d\.\_]+'."\n";
+
+ print $fh $content;
- $fh->close();
+ return;
}
sub ACTION_manifest {
Added: Module-Build/trunk/t/write_default_maniskip.t
==============================================================================
--- (empty file)
+++ Module-Build/trunk/t/write_default_maniskip.t Sat Jun 27 20:01:32 2009
@@ -0,0 +1,37 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use lib 't/lib';
+use MBTest 'no_plan';
+
+use_ok 'Module::Build';
+ensure_blib 'Module::Build';
+
+{
+ chdir MBTest->tmpdir();
+
+ my $build = Module::Build->new(
+ dist_name => "Foo-Bar",
+ dist_version => '1.23',
+ );
+
+ my $skip = "mskip.txt"; # for compatibility
+ $build->_write_default_maniskip($skip);
+
+ ok -r $skip, "Default maniskip written";
+ my $have = slurp($skip);
+
+ my $head;
+ if( $build->_eumanifest_has_include ) {
+ $head = "#!include_default\n";
+ }
+ else {
+ $head = slurp($build->_default_maniskip);
+ }
+
+ like $have, qr/^\Q$head\E/, "default MANIFEST.SKIP used";
+ like $have, qr/^# Avoid Module::Build generated /ms, "Module::Build
specific entries";
+ like $have, qr/Foo-Bar-/, "distribution tarball entry";
+}