On Tue, 26 Jun 2012 10:42:57 +1000
Ken McDonell <kenj@xxxxxxxxxxxxxxxx> wrote:
> # --- MakeMaker distmeta section:
> distmeta : create_distdir metafile
> $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN)
> -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{META.yml} => q{Module
> meta-data (added by MakeMaker)}}) } ' \
> -e ' or print "Could not add META.yml to MANIFEST:
> $${'\''@'\''}\n"' --
>
> This comes from Perl automake magic that we don't control ... there is
> no reference to yml in the Makefile.PL that is used to generate
> Makefile.
Yes, but there is a reference to META.yml in MANIFEST files shipped with
the pcp-3.6.4-1.src.tar.gz tarball, it is _not_ present in the git tree
tree.
> > The Perl Makefiles attempt to copy every file listed in the MANIFEST:
> > -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
> >
> > As "META.yml" is listed in the manifest but is not present at that point
> > in the build (it is generated later), manicopy() fails.
> >
>
> Hmm, my builds run like this ...
>
> Generating META.yml
> tar cvf PCP-LogImport-1.00.tar PCP-LogImport-1.00
> PCP-LogImport-1.00/
> PCP-LogImport-1.00/LogImport.xs
> PCP-LogImport-1.00/COPYING
> PCP-LogImport-1.00/LogImport.pm
> PCP-LogImport-1.00/typemap
> PCP-LogImport-1.00/Changes
> PCP-LogImport-1.00/META.yml
> PCP-LogImport-1.00/MANIFEST
> PCP-LogImport-1.00/Makefile.PL
> rm -rf PCP-LogImport-1.00
> gzip --best PCP-LogImport-1.00.tar
>
> and
>
> $ tar tf PCP-LogImport-1.00.tar.gz | grep yml
> PCP-LogImport-1.00/META.yml
>
> so META.yml _is_ in some tarball at this stage and is also included in
> the MANIFEST file in the tarball
>
> $ tar xpf PCP-LogImport-1.00.tar.gz
> $ diff MANIFEST PCP-LogImport-1.00/MANIFEST
> 7a8
> > META.yml Module meta-data (added by
> > MakeMaker)
>
> which seems internally consistent.
Looks like you've run this from the git tree, the META.yml entry would
be present in both MANIFEST files using pcp-3.6.4-1.src.tar.gz.
> So at what point does your build go wrong?
>
> I think I need the full context (via script(1) or similar) and any build
> logs to progress this further.
barett:/abuild/ddiss/home:dmdiss:pcp_perl_manifests/pcp/pcp-3.6.4/src/cpan/PMDA/:[0]#
make
rm -rf PCP-PMDA-* MYMETA.yml MYMETA.json
/usr/bin/gmake -f Makefile dist
gmake[1]: Entering directory
`/abuild/ddiss/home:dmdiss:pcp_perl_manifests/pcp/pcp-3.6.4/src/cpan/PMDA'
rm -rf PCP-PMDA-1.13
/usr/bin/perl "-MExtUtils::Manifest=manicopy,maniread" \
-e "manicopy(maniread(),'PCP-PMDA-1.13', 'best');"
mkdir PCP-PMDA-1.13
-e: META.yml not found at -e line 1
Can't read META.yml: No such file or directory
gmake[1]: *** [create_distdir] Error 2
gmake[1]: Leaving directory
`/abuild/ddiss/home:dmdiss:pcp_perl_manifests/pcp/pcp-3.6.4/src/cpan/PMDA'
make: *** [dist] Error 2
It fails depending on the version of Perl on the build host.
manicopy() invokes cp_if_diff(), which on most versions of Perl warns
about a non-existent src file and the returns.
On Perl 5.10.0 (SLES11SP2) cp_if_diff() warns about the non-existent src
file but does not return, it dies on the subsequent open().
Full build logs can be found at:
https://build.opensuse.org/package/rawlog?arch=x86_64&package=pcp&project=home%3Admdiss%3Apcp_perl_manifests&repository=SLE_11_SP2
We will continue to run with the following patch:
https://build.opensuse.org/package/view_file?file=fix_cpan_pmda_manifest.patch&package=pcp&project=home%3Admdiss%3Apcp_commonspec&rev=0290d15eaae597d4b4dce8d77aa76e7f
Cheers, David
|