# from Jeffrey
# on Saturday 20 March 2010 20:32:
reference: https://rt.cpan.org/Ticket/Display.html?id=55909
>I went back and
>added the Marpa module to *both* the 'require' and 'build_requires'
>for Marpa::HTML. Now all seems to work perfectly.
But it appears that you changed the rest of the Build.PL code at the
same time, which is actually what fixed the problem.
>An obstacle for me was that Module::Build's actual behavior seems to
>contradict the documentation in Module::Build::API,
What happens on the installation side is actually under the control and
responsibility of the cpan client.
We really need an informational pamphlet explaining the whole "Your cpan
client and Makefile.PL/Build.PL, META.yml, MYMETA.yml,
configure_requires, build_requires, requires" thing, but here's a short
version:
configure_requires: installed before running Build.PL
build_requires: available at ./Build, not required after install
requires: available at ./Build, permanently installed
The client:
1. checks META.yml
1a. satisfies 'configure_requires'
2. runs Build.PL
3. reads MYMETA.yml
3a. satisfies 'build_requires'
3b. satisfies 'requires'
4. runs ./Build && ./Build test && ./Build install
5. installs stuff from 'requires'
6. optionally installs stuff from 'build_requires'
7. optionally installs stuff from 'configure_requires'
Where 'satisfies' often means "download, build, test, and add to
$ENV{PERL5LIB} before continuing", which is where the "optionally" part
in #6 and #7 comes in.
If you're using a module in your Build.PL or build class, you have to
either:
enter it in 'configure_requires'
or
have it in 'build_requires' or 'requires'
and defer loading it until ./Build time.
--Eric
--
Like a lot of people, I was mathematically abused as a child.
--Paul Graham
---------------------------------------------------
http://scratchcomputing.com
---------------------------------------------------