Skip Menu |

This queue is for tickets about the ExtUtils-MakeMaker CPAN distribution.

Report information
The Basics
Id: 103042
Status: resolved
Worked: 10 min
Priority: 0/
Queue: ExtUtils-MakeMaker

People
Owner: ETJ [...] cpan.org
Requestors: VDB [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in:
  • 6.98
  • 7.04
Fixed in: 7.12



Subject: Building distmeta target fails but make continues.
Makefile generated by MakeMaker includes following rule: # --- MakeMaker distmeta section: distmeta : create_distdir metafile $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -e q{META.yml};' \ -e 'eval { maniadd({q{META.yml} => q{Module YAML meta-data (added by MakeMaker)}}) }' \ -e ' or print "Could not add META.yml to MANIFEST: $$$${'\''@'\''}\n"' -- $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -f q{META.json};' \ -e 'eval { maniadd({q{META.json} => q{Module JSON meta-data (added by MakeMaker)}}) }' \ -e ' or print "Could not add META.json to MANIFEST: $$$${'\''@'\''}\n"' -- If for any reason adding META.yml and/or META.json to MANIFEST fails, error message will be printed: Could not add META.json to MANIFEST: ... but make will continue. It is very easy to miss this message in the log. Make must stop if updating MANIFEST failed. Trivial fix allows it: just use "die" instead of "print". Code to fix is located in MM_Any.pm, line ~1420.
Show quoted text
> If for any reason adding META.yml and/or META.json to MANIFEST fails, > error message will be printed:
Good spot. Fixed in https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/commit/5742aeb93564a24634adc6055aa2a745d228d287 Show quoted text
> Code to fix is located in MM_Any.pm, line ~1420.
It escapes me why you keep reporting bugs against really quite old versions of EUMM. It would surely be better to check (and in any case use) latest.
To reproduce the problem: 1. Download and unpack Foo-0.01.tar.gz 2. cd Foo-0.01 3. perl Makefile.PL 4. make dist You will get: $ make dist rm -rf Foo-0.01 "/usr/bin/perl" "-MExtUtils::Manifest=manicopy,maniread" \ -e "manicopy(maniread(),'Foo-0.01', 'best');" mkdir Foo-0.01 mkdir Foo-0.01/t mkdir Foo-0.01/lib Generating META.yml Generating META.json Could not add META.yml to MANIFEST: Could not add META.json to MANIFEST: tar cvf Foo-0.01.tar Foo-0.01 Foo-0.01/ Foo-0.01/t/ Foo-0.01/t/manifest.t Foo-0.01/t/pod.t Foo-0.01/t/pod-coverage.t Foo-0.01/t/00-load.t Foo-0.01/Changes Foo-0.01/README Foo-0.01/lib/ Foo-0.01/lib/Foo.pm Foo-0.01/META.yml Foo-0.01/META.json Foo-0.01/Makefile.PL Foo-0.01/MANIFEST rm -rf Foo-0.01 gzip -9f Foo-0.01.tar Created Foo-0.01.tar.gz You see that updating MANIFEST failed, but make continues. BTW, there is one more problem: lack of actual error message. Look at the generated Makefile: # --- MakeMaker distmeta section: distmeta : create_distdir metafile $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -e q{META.yml};' \ -e 'eval { maniadd({q{META.yml} => q{Module YAML meta-data (added by MakeMaker)}}) }' \ -e ' or print "Could not add META.yml to MANIFEST: $$$${'\''@'\''}\n"' -- It seems there are too many dollars here. I tracked it down to MM_Any.pm: sub distmeta_target { my $self = shift; my @add_meta = ( $self->oneliner(<<'CODE', ['-MExtUtils::Manifest=maniadd']), exit unless -e q{META.yml}; eval { maniadd({q{META.yml} => q{Module YAML meta-data (added by MakeMaker)}}) } or print "Could not add META.yml to MANIFEST: $${'@'}\n" CODE $self->oneliner(<<'CODE', ['-MExtUtils::Manifest=maniadd']) exit unless -f q{META.json}; eval { maniadd({q{META.json} => q{Module JSON meta-data (added by MakeMaker)}}) } or print "Could not add META.json to MANIFEST: $${'@'}\n" CODE ); oneliner (in MM_Unix.pm) calls quote_literal, which, in turn, calls escape_dollarsigns (or escape_all_dollarsigns). It seems the code above (a cite from MM_Any.pm) should use only one dollar, not two. At least such a fix works for me (e. g. for Linux).
Subject: Foo-0.01.tar.gz
Download Foo-0.01.tar.gz
application/x-gzip 3.8k

Message body not shown because it is not plain text.

Which version of EUMM are you testing against?
On Mon Mar 23 18:23:42 2015, ETJ wrote: Show quoted text
> Which version of EUMM are you testing against?
My system is Fedora 21, recently updated. EUMM is installed from Fedora repos, perl-ExtUtils-MakeMaker-6.98-2.fc21.noarch. I also tried to install EUMM from CPAN into my local Perl library with cpanm, and run the test with EUMM v7.04, and get the same results.
It will be much more helpful if you can try against the latest dev release (cpanm --dev ExtUtils::MakeMaker) or even better against the git master. $ issue fixed in https://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker/commit/7ba6da86c3d5d90521aa8b48d814a5e2cb330c11
On Mon Mar 23 18:05:54 2015, ETJ wrote: Show quoted text
> Good spot. Fixed in https://github.com/Perl-Toolchain-Gang/ExtUtils- > MakeMaker/commit/5742aeb93564a24634adc6055aa2a745d228d287
I see you also fixed the same issue in distsignature. That's good. Show quoted text
> It escapes me why you keep reporting bugs against really quite old > versions of EUMM. It would surely be better to check (and in any case > use) latest.
As I already wrote, I use packages from Fedora repos (EUMM 6.98), but I also checked it on last stable release 7.04. Do you mean I should also try latest development version from gitnub?
On Mon Mar 23 18:34:58 2015, ETJ wrote: Show quoted text
> It will be much more helpful if you can try against the latest dev > release (cpanm --dev ExtUtils::MakeMaker) or even better against the > git master. > > $ issue fixed in https://github.com/Perl-Toolchain-Gang/ExtUtils- > MakeMaker/commit/7ba6da86c3d5d90521aa8b48d814a5e2cb330c11
Huh, we are writing simultaneously. Ok, I'll try to use git master version also.
Sorry for off-topic. Did you noticed my last comment to the bug #101007? Since it is in rejected state, I am not sure you have received notification.
Yes, I saw it.
Now 7.12 is out, closing ticket. Many thanks.