[Module::Build] Some updates, and catching up...
Status: Beta
Brought to you by:
kwilliams
From: Adam K. <ad...@ph...> - 2006-04-24 16:09:55
|
Hi folks I was asked to point you in the direction of the following http://use.perl.org/~Alias/journal/29427 If it fits what you want and you'd like to embed it, you are welcome to hack on it directly. http://use.perl.org/~Alias/journal/29327 Also, is there somewhere that has a nntp server for this list, like you can get for most of the other Perl mailing lists? Oh, and there seems to be some confusion about the meaning of META.yml? As I understand it from doing CPAN.pm and Module::Install stuff, META.yml is intrinsically dynamic and platform dependant, where "platform" actually means environment, and is going to be different for every single host. A META.yml file is packed up with the dist for the convenience of larger systems, and META.yml in this case is known to only be an approximation. This is enforced by the dynamic_config flag, which defaults to true. When true, the CPAN client should be aware it needs to run the installer script first, which will localise the META.yml content, to get a definitive result for that environment. Of course, in the case where dynamic_config is explicitly set to false, the installer is advertising (via inserting the entry at dist-time) that the META.yml will not change when the installer is run, and so the client is free to shortcut the dependency installation if it wishes. BOTH of these situations (the version in the tarball and the version post-installer.PL) have their uses in a few different cases, and both really need to be retained. The problem with doing some sort of optional feature is that it introduces branch logic into your data structures. So you need a way to describe the branch... platform => 'Win32'... [ platform => 'Win32', perl => '> 5.005 || < 5.008004' ], and so on and so on. But because you are trying to express logic (code) as data, you are always going to cases where you need just that bit more syntax and flexibility, until before you know it you have invented your own new mini-language, and well, then we might as well use Perl. But then of course we have Perl inside META.yml, and we're back to square 1. I don't know whether or not it was planned, but the current situation, with a flagged-imperfect uploaded META.yml, which is localised at Makefile|Build.PL-time quite comfortably covers 100% of all use cases I'm aware of. I'm more than happy the way things are in this case. Adam K |