http://rt.cpan.org/Ticket/Display.html?id=22768
There is a problem with using new features in MakeMaker. You cannot depend on a newer version of MakeMaker without breaking most automatic installers. Dependency resolution happens *after* the Makefile.PL is run and the CPAN shells don't know how to deal with a Makefile.PL failing because of an out of date module. There's a few things which can be done to fix this in the order of least to most radical. * Have the CPAN shells look at META.yml to see if a MakeMaker or Module::Build upgrade is needed and do that before Makefile.PL is run. This is the simplest and has the least backwards compat impact. The downside is any other modules you want to use in your Makefile.PL or Build.PL will not get upgraded. If you need ExtUtils::CBuilder or File::Spec or anything else it won't happen. * Make the CPAN shells do dependency resolution based on the META.yml before anything is run. If backwards compat were thrown out the window, this would be the right thing to do. It universally solves all installer dependency issues. The downside is modules which have dynamic dependencies, deps which change based on the installation environment and thus cannot be written out in a static META.yml. There's a few solutions to that... * Do another dependency resolution step after the Makefile.PL is run. For those which need it, the CPAN shell can do a second dependency resolution after the Makefile.PL is run so any dynamic dependencies are taken care of. * A richer META.yml dependency format Its possible we can encode much of the dependency logic into META.yml while still avoiding executing code. The former is easiest and should retain backwards compat. * Have some way to ship MakeMaker with your module, a la Module::Install, but defaulting to a newer version if available. MakeMaker already does this itself. It ships with ExtUtils-Command and ExtUtils-Install. The difference between the way MM does it and MI is MM will use a newer installed version over your shipped version to avoid the problem of authors shipping subtly broken MMs and then never upgrading. But I would rather have a new MM installed than have authors ship around copies of it. * Have MakeMaker update itself when there's a new stable available as most installers do. Most other installers, upon noticing a newer version, will immediately try to update themselves. It makes the backwards compatibility issues disappear. The difficulties lie in the automatic upgrade. Does the user have permissions? What Makefile.PL flags should we use? What if this version of MakeMaker is broken on their OS?