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