On Tue, Feb 23, 2010 at 6:54 PM, Eric Wilhelm <enoba...@gmail.com> wrote:
> We've run into a Build.PL vs Makefile.PL problem with cpanminus.  The
> situation is that if M::B requires anything with a Build.PL file, that
> it becomes impossible to bootstrap.

We should remove Build.PL from anything that M::B requires.  That has
already been done for EU::CBuilder and needs to be done for
EU::ParseXS.

> The easy thing would be to remove the Build.PL from ExtUtils::ParseXS,
> ExtUtils::CBuilder, etc (but only because we have comaint on those.)

We know who the maintainers are and can encourage them.  Test::Harness
is already done.  EU::Install probably should be changed, too.

> Slightly more difficult would be to remove them from our 'requires'
> (since they are not strictly required) and insert them in
> build_requires as needed (in META.yml and MYMETA.yml).  I think this
> would actually be more correct.  David, what was the logic for these
> recent additions to 'requires'?

The logic was that installation of M::B should ensure a "sane"
toolchain, where "sane" is defined by me to mean "recent enough to
have substantial numbers of bugs fixed".

> We went back and forth about a few possible workarounds in #toolchain,
> but those all get thrown out because a client should not assume that
> Build.PL uses Module::Build.

Agreed.  E.g. my "in-development" Acme::Module::Build::Tiny to
prototype exactly what a minimal "Build.PL" and "Build" API should be.

> So, if -e "Build.PL", a cpan client should only ever need to do:
>
>  1.  satisfy configure_requires
>  2.  run Build.PL
>
> If we break that, we've created a bug in M::B.

Agreed.

David

Reply via email to