On Saturday 02 August 2008, David E. Wheeler wrote:
> On Aug 2, 2008, at 07:17, Shlomi Fish wrote:
> > http://xrl.us/bi6n9 (link to svn.berlios.de) is a functional spec
> > for a way to
> > tag and classify CPAN modules. Those tags and catgories should end
> > up in the
> > META.yml. However, inserting them by hand by editing the Build.PL
> > will be:
>
> You are aware of the keywords param to new(), right?
>
> =item keywords
>
> For describing the distribution using keyword (or "tags") in order to
> make CPAN.org indexing and search more efficient and useful.
>
> See L<http://module-build.sourceforge.net/META-spec-current.html#keywords
>

Hmmm... that's interesting. Sounds useful. Is it supported in 
search.cpan.org/kobesearch yet? Of course, I'd also like to have 
Freshmeat-like categories:

http://freshmeat.net/browse/18/

>  >.
> >
> > 1. Error-prone.
>
> Why is that?
>

Because "The only thing that can parse Perl is perl". It would be very hard to 
write a third-party program that will parse a typical Build.PL syntax and 
manipulate it along with all the possible edge-cases. For example, in some of 
my modules I have used a sub-class of Module::Build (which I called 
Test::Run::Builder) instead, so if I'm looking for Module::Build I won't find 
it.

Similarly, I can name the Module::Build instance in any way I want which will 
further complicate things. Or I can put some of the parameters in variables, 
etc.

> > 2. Not capabale of being manipulated by an external program - "Only
> > perl can
> > understand Perl, etc.".
>
> It looks like M::B does not current put the keywords into the META.yml
> file when you run `make distmeta`. It ought to. That's where you
> should start your patch, IMHO. Once the're in the META.yml, any YAML-
> compliant program can of course read them.

Yes, but if I over-ride the paramaters in META.yml, then it will be 
over-written once I re-run Build.PL. META.yml is entirely at the mercy of 
Build.PL and should not be edited by hand.

I want to allow a program or a human to give parameters to Build.PL so they'll 
eventually be preserved there.

>
> > Of course, this is not limited to this issue. I've overheard a
> > conversation on
> > a #perl where some people said they'd like to have all the (non-code)
> > parameters to Module::Build be speicified in a YAML format or so.
>
> Um, what for? Write a YAML file to be read by M::B to write out
> META.yml? Seems silly to me.

No, it's not. Build.PL places some other parameters into META.yml, like the 
individiuals .pm files and their versions, etc. We need a way to input it 
paraemeters in a way that's not hard-coded in the Build.PL Perl code.

>
> > So I've been thinking of having a special file or files for this (or
> > alternatively possibly re-use the __DATA__ section of the Build.PL)
> > in order
> > to specify machine-manipulatable parameters to the Build process.
>
> I find Perl easier to type than YAML. YAML is much more error-prone,
> IMO.

Yes, but computer programs can more easily read and write YAML.

>
> > Given enough willingness, I'm willing to volunteer the time to
> > implement it in
> > the current version of M::B (and possibly EU::MM and M::I). I
> > suppose it can
> > also be implemented as a user-land wrapper around Module::Build, but
> > would
> > like to get some input first.
>
> As a start, all of the keys specified in the META spec should be
> written to META.yml. Beyond that, well, just know that the Ant folks
> started out just using XML in their build files, but then needed
> processing, and so created a Turing-complete XML programming language.
> James Duncan Davidson has since told me that if he had to do it again,
> Ant build files would just have been written in Python or Ruby or
> something, rather than XML.
>
> So, let's not try to learn that lesson in reverse, eh?
>

Well, I'm not proposing that we completely do away with Build.PL or even with 
the parameters given to the Module::Build constructor. I'm just saying that 
we should give a way for programs to give it arguments as well, without 
having to parse the Perl and try to make sense of it.

So we have the machine+human-manipulatable input and the data and code in the 
Build.PL as input to Module::Build.

Regards,

        Shlomi Fish

-----------------------------------------------------------------
Shlomi Fish       http://www.shlomifish.org/
Original Riddles - http://www.shlomifish.org/puzzles/

I met a guy in the bar, talked to her and she gave me her phone number.

Reply via email to