From my recent posts, you may have noticed that I’m doing a lot of work on Module::Build these days. I got back into it to get it ready for 5.10.1 and once I had re-learned the code base it was easy to start adding some frequently requested features and cleaning up other bugs.
Here’s a snapshot of new developments and current plans:
- MYMETA.yml — implemented in 0.35_01 as discussed previously
- File::ShareDir support — implemented in 0.35_02. Adding a ’share’ directory to your distribution will automatically configure it to be installed for use with File::ShareDir (and will add File::ShareDir to your ‘requires’ list of prerequisites). The ’share_dir’ property allows more custom control of shared directories if needed.
- Build installdeps — implemented in 0.35_02. This build action is a helper routine for authors and developers who check out a distribution from a repository and want an easy to way to install dependencies. It uses ‘cpan’ by default, but can be configured to use ‘cpanp -i’.
- needs_compiler property — implemented in 0.35_02. Module::Build now auto-detects XS or C files and checks for the presence of a compiler. It also adds ExtUtils::CBuilder automatically to ‘build_requires’.
- bundling Module::Build in inc/ — under development. Soon, it will be possible to automatically bundle Module::Build within the inc/ directory for use with perls that haven’t been upgraded to support configure_requires in META.yml. This will probably be released in experimental form before 0.36
- declarative interface — under discussion. Some people seem to really like the declarative interface of Module::Install. Once bundling works, it’s likely that a declarative interface for Module::Build will follow, perhaps for 0.37.
- plugins — conceived, but not discussed. Subclassing has limits and some people would like a way to create and combine plugins to customize the build process. This will take some rework of the Module::Build internals, so is probably unlikely to happen soon, but it’s on the list of long-term goals.
As you can see, Module::Build is moving along at a good clip. The next stable release will have some significant new features to address deficiencies that were attracting people to Module::Install and should help make Module::Build more easily backwards compatible in ways it hasn’t exactly been to date.
2 Comments
That’s great news!
Any ETA when the new Module::Build will be out? And does that mean we need a ‘use Module::Build 0.36;’ in Build.PL to utilize share property?
No ETA yet — some other features will need to stabilize and there’s a lengthy regression test before each release. (I build and test about 3200 Module::Build using distributions on CPAN with the release candidate and the previous major release and check any differences in build/test outcomes.)
You’ll need configure_requires => { ‘Module::Build’ => 0.36 } but that will be done for you automatically. If the inc/ bundling is finished, you’ll probably just need to do something like “use inc::latest ‘Module::Build’” and then it will all just work. At least, that’s the plan.
– David
One Trackback
[...] dagolden Whatever comes to mind Skip to content HomeAbout MeMy ProjectsMy TalksMy Code Home > cpan > Module::Build inc bundling is getting close « Module::Build progress and roadmap [...]