# 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
---------------------------------------------------

Reply via email to