# 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 ---------------------------------------------------