pcp
[Top] [All Lists]

Re: [pcp] perl MANIFEST files in the pcp-3.6.4-1.src.tar.gz release tarb

To: Ken McDonell <kenj@xxxxxxxxxxxxxxxx>
Subject: Re: [pcp] perl MANIFEST files in the pcp-3.6.4-1.src.tar.gz release tarball
From: David Disseldorp <ddiss@xxxxxxxx>
Date: Tue, 26 Jun 2012 15:17:05 +0200
Cc: pcp <pcp@xxxxxxxxxxx>
In-reply-to: <1340671377.7165.45.camel@xxxxxxxxxxxxxxxx>
References: <20120618140732.456019c4@xxxxxxxxxxxx> <1340155761.2787.7.camel@xxxxxxxxxxxxxxxxxxxxxxx> <20120620111722.585e6996@xxxxxxxxxxxx> <1340671377.7165.45.camel@xxxxxxxxxxxxxxxx>
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

<Prev in Thread] Current Thread [Next in Thread>