What if the Build.PL which gets shipped with the tarball is 
autogenerated from some kind of "modern"[1] input specification?

In other words, "what you have to type" in *your* Build.PL is not 
dictated by backwards compatibility and certain things can be implied 
or set automatically if the *deployed* Build.PL can be autogenerated.  
Thus, whatever ugly bits might be required for compatibility don't have 
to be hand-written (and documented (and then explained (and, of course, 
still not quite understood by all.)))

That is, you don't have to put Module::Build in the 'requires' key, 
build_requires could be dynamically determined by the available version 
(on the client) of Module::Build, etc.

Yes, there are details[3].  At the moment, it's just a thought about how 
to get compatibility and etc without excessive typing (and without the 
need for special knowledge about various oddities and/or history.)

[1] Where "modern" means simply that it is able to change (even in 
backwards-incompatible ways in some cases[1a]) independently of 
whatever historical accidents.  This implies that it is more active 
than simply feeding a data-structure to new() and/or having arbitrary 
code on either side of that.

[1a] I think incompatibilities would typically be of the "allowed 
omission" type.  For example, there is no [2] :-)

[3] Starting with perhaps the turing trouble -- to dual-life Build.PL, 
the master copy would probably have to be broken down into composeable, 
declared pieces ala something like our_require($mod), our_do($file), 
and/or heredocs or something which could be assembled into a "dumb" 
Build.PL.  This is because you need to be able to print some code which 
verbosely (as needed based on the target M::B version or etc) sets all 
of the new() options, and yet maintain customizations which surround 
that.

Still very much just an idea.  Gaping holes?

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