Skip Menu |

This queue is for tickets about the Module-Build CPAN distribution.

Report information
The Basics
Id: 55909
Status: resolved
Priority: 0/
Queue: Module-Build

People
Owner: Nobody in particular
Requestors: jkegl [...] cpan.org
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: module needs to be mentioned in both 'requires' and 'build-requires'
At least under some circumstances, a module mentioned in 'requires' will not be available at build time. This contradicts the documented behavior and therefore is either a bug in function or in documentation, depending on the intent. An example is Marpa::HTML on CPAN. It requires the Marpa module. In Marpa::HTML 0.101_002 this is both a 'require' and a 'build_requires', and cpantesters (at this writing) reports 16 PASSes and 6 NAs. In Marpa::HTML 0.101_000 only the 'require' was specifed. Results there are 1 PASS, 9 NAs and 15 UNKNOWNs. On inspection of the cpantesters results, the additional NAs and UNKNOWN for Marpa::HTML 0.101_000 seem entirely to be the product of failure to load the Marpa module at build time. There is a thread on this in the perl.module-authors group: http://groups.google.com/group/perl.module-authors/browse_thread/thread/e3712071c1622d55#
On Wed Mar 24 14:14:08 2010, JKEGL wrote: Show quoted text
> At least under some circumstances, a module mentioned in 'requires' > will not be available at build time.
This should *never* be true. Show quoted text
> Marpa::HTML 0.101_002 this is both a 'require' and > a 'build_requires',... In > Marpa::HTML 0.101_000 only the 'require' was specifed.
The culprit here is the "use Marpa" in your Build.PL from 0.101_000. If you need a module available at Build.PL time, it must be in 'configure_requires'. http://search.cpan.org/src/JKEGL/Marpa-HTML-0.101_000/Build.PL vs. http://search.cpan.org/src/JKEGL/Marpa-HTML-0.102000/Build.PL In the latter, you have moved anything that would attempt to load Marpa.pm into an ACTION_*, which means it is no longer happening at Build.PL-time. Your build subclass can simply say "require Marpa" in the ACTION_build() method and if Marpa is listed under only 'requires', you will have no problems. Thanks, Eric