@@ -1,3 +1,27 @@
+1.68 Tue, Sep 16, 2014
+ - Fix regression with manifind() and following symlinks
+
+1.66 Sun, Aug 31, 2014
+ - manifind() will now follow symlinks
+ - Tests fixed if PERL_MM_MANIFEST_VERBOSE env var is set to
+ false value
+ - Fixed bug with maniread()'s handling of quoted filenames
+
+1.65 Fri, Aug 8, 2014
+ - Support perls < v5.8.3 once again
+ - Don't generate MANIFESTs with CRLFs on Windows
+
+1.64 Thu, Jul 17, 2014
+ - Ignore vim swap files and prove generated files
+ - use Exporter import
+ - use 'our' instead of use vars
+
+1.63 Sun, Sep 8, 2013
+ - Deal with VMS extended filespecs
+
+1.62 Sun, Sep 8, 2013
+ - Normalize VMS case handling in ExtUtils::Manifest.
+
1.61 Tue, Sep 11, 2012
- Avoid some test-time warnings.
- Current VMS can handle filenames with spaces.
@@ -1,4 +1,4 @@
-This software is copyright (c) 2012 by Andreas Koenig.
+This software is copyright (c) 2014 by Andreas Koenig.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -12,7 +12,7 @@ b) the "Artistic License"
--- The GNU General Public License, Version 1, February 1989 ---
-This software is Copyright (c) 2012 by Andreas Koenig.
+This software is Copyright (c) 2014 by Andreas Koenig.
This is free software, licensed under:
@@ -22,7 +22,7 @@ This is free software, licensed under:
Version 1, February 1989
Copyright (C) 1989 Free Software Foundation, Inc.
- 51 Franklin St, Suite 500, Boston, MA 02110-1335 USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -272,7 +272,7 @@ That's all there is to it!
--- The Artistic License 1.0 ---
-This software is Copyright (c) 2012 by Andreas Koenig.
+This software is Copyright (c) 2014 by Andreas Koenig.
This is free software, licensed under:
@@ -1,3 +1,4 @@
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.020.
Changes
LICENSE
MANIFEST
@@ -9,4 +10,5 @@ dist.ini
lib/ExtUtils/MANIFEST.SKIP
lib/ExtUtils/Manifest.pm
t/Manifest.t
-t/release-pod-syntax.t
+xt/release/minimum-version.t
+xt/release/pod-syntax.t
@@ -7,7 +7,7 @@
"The Perl 5 Porters"
],
"dynamic_config" : 0,
- "generated_by" : "Dist::Zilla version 4.300021, CPAN::Meta::Converter version 2.120921",
+ "generated_by" : "Dist::Zilla version 5.020, CPAN::Meta::Converter version 2.142060",
"license" : [
"perl_5"
],
@@ -19,126 +19,178 @@
"prereqs" : {
"configure" : {
"requires" : {
- "ExtUtils::MakeMaker" : "6.30"
+ "ExtUtils::MakeMaker" : "0"
+ }
+ },
+ "develop" : {
+ "requires" : {
+ "Test::Pod" : "1.41"
}
},
"runtime" : {
"requires" : {
"File::Basename" : "0",
- "File::Spec" : "0.8"
+ "File::Spec" : "0.8",
+ "perl" : "5.006"
}
}
},
"release_status" : "stable",
"resources" : {
"bugtracker" : {
- "mailto" : "perlbug@perl.org",
- "web" : "http://rt.perl.org/rt3/"
+ "web" : "http://github.com/Perl-Toolchain-Gang/ExtUtils-Manifest/issues"
},
"homepage" : "https://metacpan.org/release/ExtUtils-Manifest",
"repository" : {
"type" : "git",
- "url" : "git://github.com/rafl/extutils-manifest.git",
- "web" : "http://github.com/rafl/extutils-manifest"
+ "url" : "git://github.com/Perl-Toolchain-Gang/Extutils-Manifest.git",
+ "web" : "http://github.com/Perl-Toolchain-Gang/Extutils-Manifest"
}
},
- "version" : "1.61",
+ "version" : "1.68",
"x_Dist_Zilla" : {
+ "perl" : {
+ "version" : "5.020000"
+ },
"plugins" : [
{
"class" : "Dist::Zilla::Plugin::GatherDir",
- "name" : "@Basic/GatherDir",
- "version" : "4.300021"
+ "name" : "@Filter/GatherDir",
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::PruneCruft",
- "name" : "@Basic/PruneCruft",
- "version" : "4.300021"
+ "name" : "@Filter/PruneCruft",
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::ManifestSkip",
- "name" : "@Basic/ManifestSkip",
- "version" : "4.300021"
+ "name" : "@Filter/ManifestSkip",
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::MetaYAML",
- "name" : "@Basic/MetaYAML",
- "version" : "4.300021"
+ "name" : "@Filter/MetaYAML",
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::License",
- "name" : "@Basic/License",
- "version" : "4.300021"
+ "name" : "@Filter/License",
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::Readme",
- "name" : "@Basic/Readme",
- "version" : "4.300021"
- },
- {
- "class" : "Dist::Zilla::Plugin::ExtraTests",
- "name" : "@Basic/ExtraTests",
- "version" : "4.300021"
+ "name" : "@Filter/Readme",
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::ExecDir",
- "name" : "@Basic/ExecDir",
- "version" : "4.300021"
+ "name" : "@Filter/ExecDir",
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::ShareDir",
- "name" : "@Basic/ShareDir",
- "version" : "4.300021"
+ "name" : "@Filter/ShareDir",
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::MakeMaker",
- "name" : "@Basic/MakeMaker",
- "version" : "4.300021"
+ "config" : {
+ "Dist::Zilla::Role::TestRunner" : {
+ "default_jobs" : 1
+ }
+ },
+ "name" : "@Filter/MakeMaker",
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::Manifest",
- "name" : "@Basic/Manifest",
- "version" : "4.300021"
+ "name" : "@Filter/Manifest",
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::TestRelease",
- "name" : "@Basic/TestRelease",
- "version" : "4.300021"
+ "name" : "@Filter/TestRelease",
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::ConfirmRelease",
- "name" : "@Basic/ConfirmRelease",
- "version" : "4.300021"
+ "name" : "@Filter/ConfirmRelease",
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::UploadToCPAN",
- "name" : "@Basic/UploadToCPAN",
- "version" : "4.300021"
+ "name" : "@Filter/UploadToCPAN",
+ "version" : "5.020"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::VersionFromModule",
+ "name" : "VersionFromModule",
+ "version" : "0.08"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::CheckExtraTests",
+ "name" : "CheckExtraTests",
+ "version" : "0.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::CheckChangesHasContent",
+ "name" : "CheckChangesHasContent",
+ "version" : "0.006"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::MinimumPerl",
+ "name" : "MinimumPerl",
+ "version" : "1.003"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::OnlyCorePrereqs",
+ "config" : {
+ "Dist::Zilla::Plugin::OnlyCorePrereqs" : {
+ "check_dual_life_versions" : "1",
+ "deprecated_ok" : "0",
+ "phases" : [
+ "configure",
+ "build",
+ "runtime",
+ "test"
+ ],
+ "skips" : [],
+ "starting_version" : "to be determined from perl prereq"
+ }
+ },
+ "name" : "OnlyCorePrereqs",
+ "version" : "0.017"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Test::MinimumVersion",
+ "name" : "Test::MinimumVersion",
+ "version" : "2.000005"
},
{
"class" : "Dist::Zilla::Plugin::DualLife",
"name" : "DualLife",
- "version" : "0.01"
+ "version" : "0.03"
},
{
"class" : "Dist::Zilla::Plugin::MetaConfig",
"name" : "MetaConfig",
- "version" : "4.300021"
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::MetaJSON",
"name" : "MetaJSON",
- "version" : "4.300021"
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::PodSyntaxTests",
"name" : "PodSyntaxTests",
- "version" : "4.300021"
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::MetaResources",
"name" : "MetaResources",
- "version" : "4.300021"
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::Authority",
@@ -154,37 +206,47 @@
}
},
"name" : "Prereqs",
- "version" : "4.300021"
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":InstallModules",
- "version" : "4.300021"
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":IncModules",
- "version" : "4.300021"
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":TestFiles",
- "version" : "4.300021"
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":ExecFiles",
- "version" : "4.300021"
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":ShareFiles",
- "version" : "4.300021"
+ "version" : "5.020"
},
{
"class" : "Dist::Zilla::Plugin::FinderCode",
"name" : ":MainModule",
- "version" : "4.300021"
+ "version" : "5.020"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":AllFiles",
+ "version" : "5.020"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":NoFiles",
+ "version" : "5.020"
}
],
"zilla" : {
@@ -192,7 +254,7 @@
"config" : {
"is_trial" : "0"
},
- "version" : "4.300021"
+ "version" : "5.020"
}
},
"x_authority" : "cpan:P5P"
@@ -7,104 +7,141 @@ author:
- 'The Perl 5 Porters'
build_requires: {}
configure_requires:
- ExtUtils::MakeMaker: 6.30
+ ExtUtils::MakeMaker: '0'
dynamic_config: 0
-generated_by: 'Dist::Zilla version 4.300021, CPAN::Meta::Converter version 2.120921'
+generated_by: 'Dist::Zilla version 5.020, CPAN::Meta::Converter version 2.142060'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
- version: 1.4
+ version: '1.4'
name: ExtUtils-Manifest
requires:
- File::Basename: 0
- File::Spec: 0.8
+ File::Basename: '0'
+ File::Spec: '0.8'
+ perl: '5.006'
resources:
- bugtracker: http://rt.perl.org/rt3/
+ bugtracker: http://github.com/Perl-Toolchain-Gang/ExtUtils-Manifest/issues
homepage: https://metacpan.org/release/ExtUtils-Manifest
- repository: git://github.com/rafl/extutils-manifest.git
-version: 1.61
+ repository: git://github.com/Perl-Toolchain-Gang/Extutils-Manifest.git
+version: '1.68'
x_Dist_Zilla:
+ perl:
+ version: '5.020000'
plugins:
-
class: Dist::Zilla::Plugin::GatherDir
- name: '@Basic/GatherDir'
- version: 4.300021
+ name: '@Filter/GatherDir'
+ version: '5.020'
-
class: Dist::Zilla::Plugin::PruneCruft
- name: '@Basic/PruneCruft'
- version: 4.300021
+ name: '@Filter/PruneCruft'
+ version: '5.020'
-
class: Dist::Zilla::Plugin::ManifestSkip
- name: '@Basic/ManifestSkip'
- version: 4.300021
+ name: '@Filter/ManifestSkip'
+ version: '5.020'
-
class: Dist::Zilla::Plugin::MetaYAML
- name: '@Basic/MetaYAML'
- version: 4.300021
+ name: '@Filter/MetaYAML'
+ version: '5.020'
-
class: Dist::Zilla::Plugin::License
- name: '@Basic/License'
- version: 4.300021
+ name: '@Filter/License'
+ version: '5.020'
-
class: Dist::Zilla::Plugin::Readme
- name: '@Basic/Readme'
- version: 4.300021
- -
- class: Dist::Zilla::Plugin::ExtraTests
- name: '@Basic/ExtraTests'
- version: 4.300021
+ name: '@Filter/Readme'
+ version: '5.020'
-
class: Dist::Zilla::Plugin::ExecDir
- name: '@Basic/ExecDir'
- version: 4.300021
+ name: '@Filter/ExecDir'
+ version: '5.020'
-
class: Dist::Zilla::Plugin::ShareDir
- name: '@Basic/ShareDir'
- version: 4.300021
+ name: '@Filter/ShareDir'
+ version: '5.020'
-
class: Dist::Zilla::Plugin::MakeMaker
- name: '@Basic/MakeMaker'
- version: 4.300021
+ config:
+ Dist::Zilla::Role::TestRunner:
+ default_jobs: 1
+ name: '@Filter/MakeMaker'
+ version: '5.020'
-
class: Dist::Zilla::Plugin::Manifest
- name: '@Basic/Manifest'
- version: 4.300021
+ name: '@Filter/Manifest'
+ version: '5.020'
-
class: Dist::Zilla::Plugin::TestRelease
- name: '@Basic/TestRelease'
- version: 4.300021
+ name: '@Filter/TestRelease'
+ version: '5.020'
-
class: Dist::Zilla::Plugin::ConfirmRelease
- name: '@Basic/ConfirmRelease'
- version: 4.300021
+ name: '@Filter/ConfirmRelease'
+ version: '5.020'
-
class: Dist::Zilla::Plugin::UploadToCPAN
- name: '@Basic/UploadToCPAN'
- version: 4.300021
+ name: '@Filter/UploadToCPAN'
+ version: '5.020'
+ -
+ class: Dist::Zilla::Plugin::VersionFromModule
+ name: VersionFromModule
+ version: '0.08'
+ -
+ class: Dist::Zilla::Plugin::CheckExtraTests
+ name: CheckExtraTests
+ version: '0.022'
+ -
+ class: Dist::Zilla::Plugin::CheckChangesHasContent
+ name: CheckChangesHasContent
+ version: '0.006'
+ -
+ class: Dist::Zilla::Plugin::MinimumPerl
+ name: MinimumPerl
+ version: '1.003'
+ -
+ class: Dist::Zilla::Plugin::OnlyCorePrereqs
+ config:
+ Dist::Zilla::Plugin::OnlyCorePrereqs:
+ check_dual_life_versions: '1'
+ deprecated_ok: '0'
+ phases:
+ - configure
+ - build
+ - runtime
+ - test
+ skips: []
+ starting_version: 'to be determined from perl prereq'
+ name: OnlyCorePrereqs
+ version: '0.017'
+ -
+ class: Dist::Zilla::Plugin::Test::MinimumVersion
+ name: Test::MinimumVersion
+ version: '2.000005'
-
class: Dist::Zilla::Plugin::DualLife
name: DualLife
- version: 0.01
+ version: '0.03'
-
class: Dist::Zilla::Plugin::MetaConfig
name: MetaConfig
- version: 4.300021
+ version: '5.020'
-
class: Dist::Zilla::Plugin::MetaJSON
name: MetaJSON
- version: 4.300021
+ version: '5.020'
-
class: Dist::Zilla::Plugin::PodSyntaxTests
name: PodSyntaxTests
- version: 4.300021
+ version: '5.020'
-
class: Dist::Zilla::Plugin::MetaResources
name: MetaResources
- version: 4.300021
+ version: '5.020'
-
class: Dist::Zilla::Plugin::Authority
name: Authority
- version: 1.006
+ version: '1.006'
-
class: Dist::Zilla::Plugin::Prereqs
config:
@@ -112,34 +149,42 @@ x_Dist_Zilla:
phase: runtime
type: requires
name: Prereqs
- version: 4.300021
+ version: '5.020'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':InstallModules'
- version: 4.300021
+ version: '5.020'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':IncModules'
- version: 4.300021
+ version: '5.020'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':TestFiles'
- version: 4.300021
+ version: '5.020'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':ExecFiles'
- version: 4.300021
+ version: '5.020'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':ShareFiles'
- version: 4.300021
+ version: '5.020'
-
class: Dist::Zilla::Plugin::FinderCode
name: ':MainModule'
- version: 4.300021
+ version: '5.020'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':AllFiles'
+ version: '5.020'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':NoFiles'
+ version: '5.020'
zilla:
class: Dist::Zilla::Dist::Builder
config:
- is_trial: 0
- version: 4.300021
+ is_trial: '0'
+ version: '5.020'
x_authority: cpan:P5P
@@ -1,19 +1,19 @@
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.020.
use strict;
use warnings;
+use 5.006;
-
-use ExtUtils::MakeMaker 6.30;
+use ExtUtils::MakeMaker ;
my %WriteMakefileArgs = (
"ABSTRACT" => "utilities to write and check a MANIFEST file",
"AUTHOR" => "Andreas Koenig <andreas.koenig\@anima.de>, Michael G Schwern <schwern\@pobox.com>, Randy Kobes <r.kobes\@uwinnipeg.ca>, The Perl 5 Porters",
- "BUILD_REQUIRES" => {},
"CONFIGURE_REQUIRES" => {
- "ExtUtils::MakeMaker" => "6.30"
+ "ExtUtils::MakeMaker" => 0
},
"DISTNAME" => "ExtUtils-Manifest",
"EXE_FILES" => [],
@@ -23,24 +23,23 @@ my %WriteMakefileArgs = (
"File::Basename" => 0,
"File::Spec" => "0.8"
},
- "VERSION" => "1.61",
+ "VERSION" => "1.68",
"test" => {
"TESTS" => "t/*.t"
}
);
-unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) {
- my $br = delete $WriteMakefileArgs{BUILD_REQUIRES};
- my $pp = $WriteMakefileArgs{PREREQ_PM};
- for my $mod ( keys %$br ) {
- if ( exists $pp->{$mod} ) {
- $pp->{$mod} = $br->{$mod} if $br->{$mod} > $pp->{$mod};
- }
- else {
- $pp->{$mod} = $br->{$mod};
- }
- }
+my %FallbackPrereqs = (
+ "File::Basename" => 0,
+ "File::Spec" => "0.8"
+);
+
+
+unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
+ delete $WriteMakefileArgs{TEST_REQUIRES};
+ delete $WriteMakefileArgs{BUILD_REQUIRES};
+ $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs;
}
delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
@@ -1,13 +1,15 @@
This archive contains the distribution ExtUtils-Manifest,
-version 1.61:
+version 1.68:
utilities to write and check a MANIFEST file
-This software is copyright (c) 2012 by Andreas Koenig.
+This software is copyright (c) 2014 by Andreas Koenig.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
+This README file was generated by Dist::Zilla::Plugin::Readme v5.020.
+
@@ -1,5 +1,4 @@
name = ExtUtils-Manifest
-version = 1.61
author = Andreas Koenig <andreas.koenig@anima.de>
author = Michael G Schwern <schwern@pobox.com>
author = Randy Kobes <r.kobes@uwinnipeg.ca>
@@ -7,7 +6,24 @@ author = The Perl 5 Porters
license = Perl_5
copyright_holder = Andreas Koenig
-[@Basic]
+[@Filter]
+-bundle = @Basic
+-remove = ExtraTests
+
+[VersionFromModule]
+[CheckExtraTests]
+[CheckChangesHasContent]
+
+[MinimumPerl]
+
+; authordep Dist::Zilla::Plugin::MakeMaker = 5.020 ; dropped EUMM = 6.30 requirement
+
+[OnlyCorePrereqs]
+:version = 0.014
+
+[Test::MinimumVersion]
+:version = 2.000003
+max_target_perl = 5.006
[DualLife]
@@ -17,10 +33,9 @@ copyright_holder = Andreas Koenig
[MetaResources]
repository.type = git
-repository.url = git://github.com/rafl/extutils-manifest.git
-repository.web = http://github.com/rafl/extutils-manifest
-bugtracker.web = http://rt.perl.org/rt3/
-bugtracker.mailto = perlbug@perl.org
+repository.url = git://github.com/Perl-Toolchain-Gang/Extutils-Manifest.git
+repository.web = http://github.com/Perl-Toolchain-Gang/Extutils-Manifest
+bugtracker.web = http://github.com/Perl-Toolchain-Gang/ExtUtils-Manifest/issues
homepage = https://metacpan.org/release/ExtUtils-Manifest
[Authority]
@@ -40,6 +40,7 @@
\.tmp$
\.#
\.rej$
+\..*\.sw.?$
# Avoid OS-specific files/dirs
# Mac OSX metadata
@@ -50,6 +51,9 @@
# Avoid Devel::Cover and Devel::CoverX::Covered files.
\bcover_db\b
\bcovered\b
-
+
+# Avoid prove files
+\B\.prove$
+
# Avoid MYMETA files
^MYMETA\.
@@ -8,24 +8,21 @@ use File::Find;
use File::Spec;
use Carp;
use strict;
+use warnings;
-use vars qw($VERSION @ISA @EXPORT_OK
- $Is_MacOS $Is_VMS $Is_VMS_mode $Is_VMS_lc $Is_VMS_nodot
- $Debug $Verbose $Quiet $MANIFEST $DEFAULT_MSKIP);
-
-$VERSION = '1.61';
-@ISA=('Exporter');
-@EXPORT_OK = qw(mkmanifest
+our $VERSION = '1.68';
+our @ISA = ('Exporter');
+our @EXPORT_OK = qw(mkmanifest
manicheck filecheck fullcheck skipcheck
manifind maniread manicopy maniadd
maniskip
);
-$Is_MacOS = $^O eq 'MacOS';
-$Is_VMS = $^O eq 'VMS';
-$Is_VMS_mode = 0;
-$Is_VMS_lc = 0;
-$Is_VMS_nodot = 0; # No dots in dir names or double dots in files
+our $Is_MacOS = $^O eq 'MacOS';
+our $Is_VMS = $^O eq 'VMS';
+our $Is_VMS_mode = 0;
+our $Is_VMS_lc = 0;
+our $Is_VMS_nodot = 0; # No dots in dir names or double dots in files
if ($Is_VMS) {
require VMS::Filespec if $Is_VMS;
@@ -44,7 +41,7 @@ if ($Is_VMS) {
my $unix_rpt = $ENV{'DECC$FILENAME_UNIX_REPORT'} || '';
my $efs_charset = $ENV{'DECC$EFS_CHARSET'} || '';
my $efs_case = $ENV{'DECC$EFS_CASE_PRESERVE'} || '';
- $vms_unix_rpt = $unix_rpt =~ /^[ET1]/i;
+ $vms_unix_rpt = $unix_rpt =~ /^[ET1]/i;
$vms_efs = $efs_charset =~ /^[ET1]/i;
$vms_case = $efs_case =~ /^[ET1]/i;
}
@@ -53,13 +50,13 @@ if ($Is_VMS) {
$Is_VMS_nodot = 0 if ($vms_efs);
}
-$Debug = $ENV{PERL_MM_MANIFEST_DEBUG} || 0;
-$Verbose = defined $ENV{PERL_MM_MANIFEST_VERBOSE} ?
+our $Debug = $ENV{PERL_MM_MANIFEST_DEBUG} || 0;
+our $Verbose = defined $ENV{PERL_MM_MANIFEST_VERBOSE} ?
$ENV{PERL_MM_MANIFEST_VERBOSE} : 1;
-$Quiet = 0;
-$MANIFEST = 'MANIFEST';
+our $Quiet = 0;
+our $MANIFEST = 'MANIFEST';
-$DEFAULT_MSKIP = File::Spec->catfile( dirname(__FILE__), "$MANIFEST.SKIP" );
+our $DEFAULT_MSKIP = File::Spec->catfile( dirname(__FILE__), "$MANIFEST.SKIP" );
=head1 NAME
@@ -124,6 +121,7 @@ sub mkmanifest {
$bakbase =~ s/\./_/g if $Is_VMS_nodot; # avoid double dots
rename $MANIFEST, "$bakbase.bak" unless $manimiss;
open M, "> $MANIFEST" or die "Could not open $MANIFEST: $!";
+ binmode M, ':raw';
my $skip = maniskip();
my $found = manifind();
my($key,$val,$file,%all);
@@ -155,12 +153,20 @@ sub mkmanifest {
close M;
}
-# Geez, shouldn't this use File::Spec or File::Basename or something?
+# Geez, shouldn't this use File::Spec or File::Basename or something?
# Why so careful about dependencies?
sub clean_up_filename {
my $filename = shift;
$filename =~ s|^\./||;
$filename =~ s/^:([^:]+)$/$1/ if $Is_MacOS;
+ if ( $Is_VMS ) {
+ $filename =~ s/\.$//; # trim trailing dot
+ $filename = VMS::Filespec::unixify($filename); # unescape spaces, etc.
+ if( $Is_VMS_lc ) {
+ $filename = lc($filename);
+ $filename = uc($filename) if $filename =~ /^MANIFEST(\.SKIP)?$/i;
+ }
+ }
return $filename;
}
@@ -182,19 +188,14 @@ sub manifind {
my $name = clean_up_filename($File::Find::name);
warn "Debug: diskfile $name\n" if $Debug;
return if -d $_;
-
- if( $Is_VMS_lc ) {
- $name =~ s#(.*)\.$#\L$1#;
- $name = uc($name) if $name =~ /^MANIFEST(\.SKIP)?$/i;
- }
$found->{$name} = "";
};
- # We have to use "$File::Find::dir/$_" in preprocess, because
+ # We have to use "$File::Find::dir/$_" in preprocess, because
# $File::Find::name is unavailable.
- # Also, it's okay to use / here, because MANIFEST files use Unix-style
+ # Also, it's okay to use / here, because MANIFEST files use Unix-style
# paths.
- find({wanted => $wanted},
+ find({wanted => $wanted, follow_fast => 1},
$Is_MacOS ? ":" : ".");
return $found;
@@ -353,7 +354,7 @@ sub maniread {
# filename may contain spaces if enclosed in ''
# (in which case, \\ and \' are escapes)
- if (($file, $comment) = /^'(\\[\\']|.+)+'\s*(.*)/) {
+ if (($file, $comment) = /^'((?:\\[\\']|.+)+)'\s*(.*)/) {
$file =~ s/\\([\\'])/$1/g;
}
else {
@@ -377,9 +378,11 @@ sub maniread {
my $okfile = "$dir$base";
warn "Debug: Illegal name $file changed to $okfile\n" if $Debug;
$file = $okfile;
- }
- $file = lc($file)
- unless $Is_VMS_lc &&($file =~ /^MANIFEST(\.SKIP)?$/);
+ }
+ if( $Is_VMS_lc ) {
+ $file = lc($file);
+ $file = uc($file) if $file =~ /^MANIFEST(\.SKIP)?$/i;
+ }
}
$read->{$file} = $comment;
@@ -414,8 +417,8 @@ sub maniskip {
$_ =~ qr{^\s*(?:(?:'([^\\']*(?:\\.[^\\']*)*)')|([^#\s]\S*))?(?:(?:\s*)|(?:\s+(.*?)\s*))$};
#my $comment = $3;
my $filename = $2;
- if ( defined($1) ) {
- $filename = $1;
+ if ( defined($1) ) {
+ $filename = $1;
$filename =~ s/\\(['\\])/$1/g;
}
next if (not defined($filename) or not $filename);
@@ -478,6 +481,7 @@ sub _check_mskip_directives {
warn "Problem opening $mfile: $!";
return;
}
+ binmode M, ':raw';
print M $_ for (@lines);
close M;
return;
@@ -514,13 +518,13 @@ typically returned by the maniread() function.
manicopy( maniread(), $dest_dir );
-This function is useful for producing a directory tree identical to the
-intended distribution tree.
+This function is useful for producing a directory tree identical to the
+intended distribution tree.
$how can be used to specify a different methods of "copying". Valid
values are C<cp>, which actually copies the files, C<ln> which creates
hard links, and C<best> which mostly links the files but copies any
-symbolic link to make a tree without any symbolic link. C<cp> is the
+symbolic link to make a tree without any symbolic link. C<cp> is the
default.
=cut
@@ -535,11 +539,11 @@ sub manicopy {
$target = VMS::Filespec::unixify($target) if $Is_VMS_mode;
File::Path::mkpath([ $target ],! $Quiet,$Is_VMS ? undef : 0755);
foreach my $file (keys %$read){
- if ($Is_MacOS) {
- if ($file =~ m!:!) {
- my $dir = _maccat($target, $file);
+ if ($Is_MacOS) {
+ if ($file =~ m!:!) {
+ my $dir = _maccat($target, $file);
$dir =~ s/[^:]+$//;
- File::Path::mkpath($dir,1,0755);
+ File::Path::mkpath($dir,1,0755);
}
cp_if_diff($file, _maccat($target, $file), $how);
} else {
@@ -689,8 +693,9 @@ sub maniadd {
my @needed = grep { !exists $manifest->{$_} } keys %$additions;
return 1 unless @needed;
- open(MANIFEST, ">>$MANIFEST") or
+ open(MANIFEST, ">>$MANIFEST") or
die "maniadd() could not open $MANIFEST: $!";
+ binmode MANIFEST, ':raw';
foreach my $file (_sort @needed) {
my $comment = $additions->{$file} || '';
@@ -732,6 +737,7 @@ sub _fix_manifest {
if ( $must_rewrite ) {
1 while unlink $MANIFEST; # avoid multiple versions on VMS
open MANIFEST, ">", $MANIFEST or die "(must_rewrite=$must_rewrite) Could not open >$MANIFEST: $!";
+ binmode MANIFEST, ':raw';
for (my $i=0; $i<=$#manifest; $i+=2) {
print MANIFEST "$manifest[$i]\n";
}
@@ -8,12 +8,13 @@ BEGIN {
else {
unshift @INC, 't/lib';
}
+ $ENV{PERL_MM_MANIFEST_VERBOSE}=1;
}
chdir 't';
use strict;
-use Test::More tests => 96;
+use Test::More tests => 98;
use Cwd;
use File::Spec;
@@ -29,12 +30,11 @@ if ($Is_VMS) {
$vms_efs = VMS::Feature::current("efs_charset");
} else {
my $efs_charset = $ENV{'DECC$EFS_CHARSET'} || '';
- $vms_efs = $efs_charset =~ /^[ET1]/i;
+ $vms_efs = $efs_charset =~ /^[ET1]/i;
}
$Is_VMS_noefs = 0 if $vms_efs;
}
-
# We're going to be chdir'ing and modules are sometimes loaded on the
# fly in this test, so we need an absolute @INC.
@INC = map { File::Spec->rel2abs($_) } @INC;
@@ -44,9 +44,10 @@ my %Files;
sub add_file {
my ($file, $data) = @_;
$data ||= 'foo';
- $file =~ s/ /^_/g if $Is_VMS; # escape spaces
+ $file =~ s/ /^_/g if $Is_VMS_noefs; # escape spaces
1 while unlink $file; # or else we'll get multiple versions on VMS
open( T, '> '.$file) or return;
+ binmode T, ':raw'; # no CRLFs please
print T $data;
close T;
return 0 unless -e $file; # exists under the name we gave it ?
@@ -71,10 +72,10 @@ sub remove_dir {
}
# use module, import functions
-BEGIN {
- use_ok( 'ExtUtils::Manifest',
- qw( mkmanifest manicheck filecheck fullcheck
- maniread manicopy skipcheck maniadd maniskip) );
+BEGIN {
+ use_ok( 'ExtUtils::Manifest',
+ qw( mkmanifest manicheck filecheck fullcheck
+ maniread manicopy skipcheck maniadd maniskip) );
}
my $cwd = Cwd::getcwd();
@@ -95,7 +96,7 @@ chmod( 0744, 'foo') if $Config{'chmod'};
# there shouldn't be a MANIFEST there
my ($res, $warn) = catch_warning( \&mkmanifest );
# Canonize the order.
-$warn = join("", map { "$_|" }
+$warn = join("", map { "$_|" }
sort { lc($a) cmp lc($b) } split /\r?\n/, $warn);
is( $warn, "Added to MANIFEST: foo|Added to MANIFEST: MANIFEST|",
"mkmanifest() displayed its additions" );
@@ -145,14 +146,14 @@ is( join( ' ', @skipped ), 'MANIFEST.SKIP', 'listed skipped files' );
# add a subdirectory and a file there that should be found
ok( mkdir( 'moretest', 0777 ), 'created moretest directory' );
add_file( File::Spec->catfile('moretest', 'quux'), 'quux' );
-ok( exists( ExtUtils::Manifest::manifind()->{'moretest/quux'} ),
+ok( exists( ExtUtils::Manifest::manifind()->{'moretest/quux'} ),
"manifind found moretest/quux" );
# only MANIFEST and foo are in the manifest
$_ = 'foo';
my $files = maniread();
is( keys %$files, 2, 'two files found' );
-is( join(' ', sort { lc($a) cmp lc($b) } keys %$files), 'foo MANIFEST',
+is( join(' ', sort { lc($a) cmp lc($b) } keys %$files), 'foo MANIFEST',
'both files found' );
is( $_, 'foo', q{maniread() doesn't clobber $_} );
@@ -179,13 +180,13 @@ rmtree('copy');
# poison the manifest, and add a comment that should be reported
add_file( 'MANIFEST', 'none #none' );
-is( ExtUtils::Manifest::maniread()->{none}, '#none',
+is( ExtUtils::Manifest::maniread()->{none}, '#none',
'maniread found comment' );
ok( mkdir( 'copy', 0777 ), 'made copy directory' );
$files = maniread();
eval { (undef, $warn) = catch_warning( sub {
- manicopy( $files, 'copy', 'cp' ) })
+ manicopy( $files, 'copy', 'cp' ) })
};
# a newline comes through, so get rid of it
@@ -197,7 +198,7 @@ like($warn, qr/^Skipping MANIFEST.SKIP/i, 'warned about MANIFEST.SKIP' );
# tell ExtUtils::Manifest to use a different file
{
- local $ExtUtils::Manifest::MANIFEST = 'albatross';
+ local $ExtUtils::Manifest::MANIFEST = 'albatross';
($res, $warn) = catch_warning( \&mkmanifest );
like( $warn, qr/Added to albatross: /, 'using a new manifest file' );
@@ -232,6 +233,14 @@ is( $files->{wibble}, '', 'maniadd() with undef comment' );
is( $files->{yarrow}, 'hock',' with comment' );
is( $files->{foobar}, '', ' preserved old entries' );
+my $manicontents = do {
+ local $/;
+ open my $fh, "MANIFEST" or die;
+ binmode $fh, ':raw';
+ <$fh>
+};
+is index($manicontents, "\015\012"), -1, 'MANIFEST no CRLF';
+
{
# EOL normalization in maniadd()
@@ -324,6 +333,20 @@ SKIP: {
$funky_files{'space_quote_backslash'} = 'foo bar\\baz\'quux';
}
+# test including a filename which is itself a quoted string
+# https://rt.perl.org/Ticket/Display.html?id=122415
+SKIP: {
+ my $quoted_filename = q{'quoted name.txt'};
+ my $description = "quoted string";
+ add_file( $quoted_filename => $description )
+ or skip "couldn't create $description test file", 1;
+ local $ExtUtils::Manifest::MANIFEST = "albatross";
+ maniadd({ $quoted_filename => $description });
+ is( maniread()->{$quoted_filename}, $description,
+ 'file whose name starts and ends with quotes' );
+ $funky_files{$description} = $quoted_filename;
+}
+
my @funky_keys = qw(space space_quote space_backslash space_quote_backslash);
# test including an external manifest.skip file in MANIFEST.SKIP
{
@@ -443,7 +466,7 @@ SKIP: {
eval {
maniadd({ 'grrrwoof' => 'yippie' });
};
- like( $@, qr/^\Qmaniadd() could not open MANIFEST:\E/,
+ like( $@, qr/^\Qmaniadd() could not open MANIFEST:\E/,
"maniadd() dies if it can't open the MANIFEST" );
chmod( 0600, 'MANIFEST' );
@@ -1,15 +0,0 @@
-#!perl
-
-BEGIN {
- unless ($ENV{RELEASE_TESTING}) {
- require Test::More;
- Test::More::plan(skip_all => 'these tests are for release candidate testing');
- }
-}
-
-use Test::More;
-
-eval "use Test::Pod 1.41";
-plan skip_all => "Test::Pod 1.41 required for testing POD" if $@;
-
-all_pod_files_ok();
@@ -0,0 +1,8 @@
+#!perl
+
+use Test::More;
+
+eval "use Test::MinimumVersion";
+plan skip_all => "Test::MinimumVersion required for testing minimum versions"
+ if $@;
+all_minimum_version_ok( qq{5.006} );
@@ -0,0 +1,6 @@
+#!perl
+# This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests.
+use Test::More;
+use Test::Pod 1.41;
+
+all_pod_files_ok();