Subject: | META.* and MYMETA.* files mishandled in MANIFEST and MANIFEST.SKIP |
In the ExtUtils-Install distribution, MANIFEST unnecessarily includes 'META.json' and 'META.yml', while MANIFEST.SKIP fails to list 'MYMETA.json' and 'MYMETA.yml' as files to be skipped when the tarball is generated by 'make dist'.
The consequences are two-fold. First, we get a misleading warning during configuration:
#####
$ perl Makefile.PL
Checking if your kit is complete...
Warning: the following files are missing in your kit:
META.json
META.yml
Please inform the author.
Generating a Unix-style Makefile
Writing Makefile for ExtUtils::Install
Writing MYMETA.yml and MYMETA.json
#####
Second, if I call 'make manifest', the MYMETA.* files are added to MANIFEST and subsequently added to the tarball -- unnecessarily so.
#####
[perlmonger: ExtUtils-Install] $ make
cp lib/ExtUtils/Install.pm blib/lib/ExtUtils/Install.pm
cp lib/ExtUtils/Installed.pm blib/lib/ExtUtils/Installed.pm
cp lib/ExtUtils/Packlist.pm blib/lib/ExtUtils/Packlist.pm
Manifying 3 pod documents
[perlmonger: ExtUtils-Install] $ make manifest
"/usr/local/bin/perl5" "-Ilib" "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
Added to MANIFEST: MYMETA.json
Added to MANIFEST: MYMETA.yml
#####
Assisted on #toolchain by comments from leont_, ether and Grinnz, I suggest the following patch (which I'll submit via p.r.):
Revisions:
#####
[perlmonger: ExtUtils-Install] $ gitdstag |cat
diff --git a/MANIFEST b/MANIFEST
index f6f49a3..e96117b 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -6,8 +6,6 @@ lib/ExtUtils/Packlist.pm
Makefile.PL
MANIFEST
MANIFEST.SKIP
-META.json
-META.yml
README
t/can_write_dir.t
t/Install.t
diff --git a/MANIFEST.SKIP b/MANIFEST.SKIP
index d44642a..13441b4 100644
--- a/MANIFEST.SKIP
+++ b/MANIFEST.SKIP
@@ -16,6 +16,7 @@ make_from_core.sh
\bpm_to_blib\.ts$
\bpm_to_blib$
\.gz$
+\b\bMYMETA.*$
\bblibdirs\.ts$ # 6.18 through 6.25 generated this
# Avoid Module::Build generated and utility files.
#####
After revisions in MANIFEST and MANIFEST.SKIP
#####
$ perl Makefile.PL
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for ExtUtils::Install
Writing MYMETA.yml and MYMETA.json
$ make
cp lib/ExtUtils/Install.pm blib/lib/ExtUtils/Install.pm
cp lib/ExtUtils/Packlist.pm blib/lib/ExtUtils/Packlist.pm
cp lib/ExtUtils/Installed.pm blib/lib/ExtUtils/Installed.pm
Manifying 3 pod documents
$ make dist
rm -rf ExtUtils-Install-2.14
"/usr/local/bin/perl5" "-Ilib" "-MExtUtils::Manifest=manicopy,maniread" -e "manicopy(maniread(),'ExtUtils-Install-2.14', 'best');"
mkdir ExtUtils-Install-2.14
...
mkdir ExtUtils-Install-2.14/t/lib/MakeMaker/Test/Setup
Generating META.yml
Generating META.json
tar cvf ExtUtils-Install-2.14.tar ExtUtils-Install-2.14
a ExtUtils-Install-2.14
a ExtUtils-Install-2.14/README
a ExtUtils-Install-2.14/META.yml
a ExtUtils-Install-2.14/lib
a ExtUtils-Install-2.14/INSTALL.SKIP
a ExtUtils-Install-2.14/MANIFEST.SKIP
a ExtUtils-Install-2.14/Changes
a ExtUtils-Install-2.14/MANIFEST
a ExtUtils-Install-2.14/Makefile.PL
a ExtUtils-Install-2.14/META.json
a ExtUtils-Install-2.14/t
...
a ExtUtils-Install-2.14/lib/ExtUtils/Installed.pm
rm -rf ExtUtils-Install-2.14
gzip -9f ExtUtils-Install-2.14.tar
Created ExtUtils-Install-2.14.tar.gz
# Verify that 'make dist' has re-generated MANIFEST within tarball to include META.json and META.yml
[perlmonger: ExtUtils-Install] $ mv ExtUtils-Install-2.14.tar.gz /tmp
[perlmonger: ExtUtils-Install] $ cd /tmp
[perlmonger: tmp] $ tar xzvf ExtUtils-Install-2.14.tar.gz
x ExtUtils-Install-2.14/
x ExtUtils-Install-2.14/README
x ExtUtils-Install-2.14/META.yml
x ExtUtils-Install-2.14/lib/
x ExtUtils-Install-2.14/INSTALL.SKIP
x ExtUtils-Install-2.14/MANIFEST.SKIP
x ExtUtils-Install-2.14/Changes
x ExtUtils-Install-2.14/MANIFEST
x ExtUtils-Install-2.14/Makefile.PL
x ExtUtils-Install-2.14/META.json
x ExtUtils-Install-2.14/t/
...
x ExtUtils-Install-2.14/lib/ExtUtils/Installed.pm
[perlmonger: tmp] $ grep META ExtUtils-Install-2.14/MANIFEST
META.yml Module YAML meta-data (added by MakeMaker)
META.json Module JSON meta-data (added by MakeMaker)
#####
The p.r. will consist of two separate commits. One reflecting the revisions above; the second reflecting the re-ordering of files in MANIFEST once 'make manifest' is run.
Thank you very much.
Jim Keenan