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";
+}
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.