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

Reply via email to