Situation:

   -- Perl with Module::Build 0.2808
   -- CPAN::Reporter::Smoker specifies Module::Build 0.30 as 'requires'
   -- CPAN.pm runs Build.PL (0.2808) sees the requires
   -- CPAN.pm installs Module::Build (0.33)
   -- CPAN.pm runs C::R::S Build (0.33)
   -- Build dies due to version mismatch (configured with 0.2808, but now 0.33)

Essentially, M::B can't be upgraded as a prereq after Build.PL runs.

Options:

(a) specify 'allow_mb_mismatch => 1' in the C::R::S Build.PL

(b) patch M::B to automatically allow_mb_mismatch in the case where
M::B itself is in requires

(c) put M::B in the C::R::S 'configure_requires'

Other ideas?  Note that (c) is a tactical fix only.  Module Foo could
run Build.PL, require Module Bar, which has M::B configure_requires,
which results in M::B being upgraded before Module Foo runs Build.
That would break the same way.

So, regardless, I think either we need to document (a) (and probably
have M::B warn if it finds this situation) or we need to fix M::B as
in (b).

What do y'all think?

-- David

Reply via email to