# from John Peacock
# on Tuesday 08 September 2009 09:10:
>I don't see #2 as necessarily being /more/ correct; the author has
>[presumably] tested with the packages installed in the current Perl
>library path.
Yes. An author should always have the same thing on their system that
they're putting in their bundle. I think it's also going to be
difficult to set inc/ as a target for various cpan clients (maybe
requires local::lib.)
But possibly just refuse to bundle anything you can't find a .packlist
for. If the author upgrades it from the CPAN, they'll have .packlists,
right? (cue "what if" about core's packlists being inconsistent => fix
the inconsistent bit.)
>On the other hand, if the disttest target made sure that _only_ the
>./inc modules were used during the testing, that would strike me as a
>belt and suspenders arrangement.
That's part of the trick that inc::latest->import needs to figure out.
I'm thinking that import() doesn't do any of the actual copying (this
is not the case with inc::Module::Install.)
With some discussion on irc, we've concluded that:
1) inc::latest is a fine name
2) if -e inc/latest.pm => goto inc/latest.pm
3) else, see author-mode import()
4) Build.PL needs to remember inc::latest->loaded_modules
5) ACTION_dist (or something) puts those --^ in $dist_dir/inc/inc_...
(using .packlists only) and ensures they are in configure_requires
#3 - author-mode import() is like: require $mod; $mod->import(@args),
push(@loaded_modules, $mod) -- that is: has no dealings with inc/
Because of #2, you have a clear way to sidestep the DWIM by making and
populating your own inc/. If you do this, you're on your own -- you do
the MANIFEST thing and all that.
So, in #5, we're only doing inc::latest->write($dist_dir) and
copying .pm files (as per their packlists) into $dist_dir/inc. Thus,
the ./inc/latest.pm is never there when a DWIM author runs `perl
Build.PL` from their repository.
This implies that the author-mode (found in @INC) inc::latest is a
completely different module than the ./inc/latest.pm.
--Eric
--
perl -e 'srand; print join(" ",sort({rand() < 0.5}
qw(sometimes it is important to be consistent)));'
---------------------------------------------------
http://scratchcomputing.com
---------------------------------------------------