With the responses to far to design questions favoring only messing
with inc/ in distdir, I've worked up a first-draft adapted from
Eric's code.
You can find it in the subversion branch:
http://svn.perl.org/modules/Module-Build/branches/inc-bundling
Here's what a Build.PL would look like using it (with a
Devel::AssertOS example added):
use inc::latest 'Module::Build';
use inc::latest 'Devel::AssertOS::Unix';
Module::Build->new(
module_name => 'Local::Blah',
license => 'perl',
)->create_build_script;
I've bundled up the resulting tarball if people would like to check it
out and see how it works:
http://echo.dagolden.com/~xdg/Local-Blah-v0.1.2.tar.gz
This also includes a share/ directory, so if you run the Build.PL on a
perl without File::ShareDir and with Module::Build <= 0.35, you'll see
a warning that the File::ShareDir prereq isn't available. This shows
that the bundled Module::Build was used as it knows to add
File::ShareDir as a prereq when share/ is present.
Please play around with this if you have time. After some testing,
I'll merge this into the trunk.
Note: Getting Devel::AssertOS* to work takes some trickery since the
packlist is really under Devel::CheckOS. If there are other things
you think people might be inclined to bundle, please let me know what
they are so I can add them to a mapping file in M::B::Base if the
packlist is under a diffferent name. This will help make it DWIM for
"common" things people might bundle.
(It also exposed an interesting bug for File::Spec/Cwd in that the
PathTools Build.PL never defines module_name and thus doesn't create a
packlist, whereas nstalling PathTools with Makefile.PL *does* create
the packlist.)
David