On Aug 4, 2008, at 04:14, Shlomi Fish wrote:

Um, nothing has to parse Build.PL.

Parse and modify Build.PL

I agree with you: nothing should do that.

So you agree that I should not edit META.yml directly?

Yes.

In this case I want
something machine-readable as input to M::B, which will eventually end up at
META.yml where the CPAN interfaces can find it.

Why? The META itself is machine-readable.

Ah. But if I want to make it machine-readable, then I'll need a YAML (or whatever) file which will in turn be read by Meta-Build.PL which will run Build.PL with all of these command line args. This will add more complexity,
and will be probelamtic if someone runs Build.PL directly.

You're already talking about adding complexity, and I don't understand why.

Why?

Because I want to

Um, okay. Suit yourself. That doesn't mean it should be in M::B itself.


Yep, that's what the command-line arguments are for.

Ah. But I need to remember to append them to Build.PL everytime. If it's
written in a file somewhere under the local directory it would be less
error-prone.

That's what shell scripts are for. And aliases. Or batch files, if that's your thing.

But a patch demonstrating what you want would probably be more
convincing, in that we could much better understand what it is you want.

I think I can accomplish that using a sub-class, so that will be my first lead. I'll also do it TDD-style, so you can understand what I mean using the
tests.

As a side note, we really should get some sort of plugin or callback architecture into M::B. Maybe I'll work on that after the next release. Then we can discourage subclassing.

Anyway, I still don't understand what problem you're trying to solve. I understand the solution, but not the problem.

Take tags, for example. As things currently stand, a module author can specify keywords in Build.PL, and they will be put into META.yml. Both of these files are for the module author to manage, not anyone else. So the author uploads the module to CPAN with the keywords in the META.yml file, and the code for search.cpan.org or some other site can index the META.yml data in its own database, and then, if it wishes, provide its own interface for site users to tag distributions. These tags would not be added to META.yml.

So the way it works is that the module author puts stuff into Build.PL, and M::B generates META.yml based on that. No one other than the module author should edit Build.PL or generate META.yml. So who else needs to edit a file that determines stuff that goes into META.yml? The module author can just use Build.PL, which is easy, but I see no need for anyone else to do that.

You, however, it seems, do, otherwise you wouldn't want a machine- readable file to feed to Build.PL to affect the output of META.yml. So who are these people, and why are they doing this?

IOW, what problem are you trying to solve?

Best,

David

Reply via email to