On Sun, 8 Oct 2006 14:41:49 -0500, Ken Williams wrote: Hi Ken, and Adam
Thanx for your comments. Having slept on it, I'd like now to recast this as a tragedy (joke) in 3.14159 acts... Part 1: The story so far I've tried to understand Adam's viewpoint, and here's what I assume happened: o I had an idea about extending a module's meta data re compiler requirements o I expressed frustration trying to work in a deficient environment o I expressed disappointment in trying to install Data::Package which turned out to have long-range dependency on a compiler o I now think Adam mistook my comments as personal criticism and over-reacted. My apologies if I caused the problem, but I fear Adam is hyper-sensitive since Data::package is one of his o I think the comment about has_cc() is a red herring, as may become clear from my comments below o I think the comment about Boolean options is a 'straw man', i.e. a fake argument just proposed for the purpose of demolishing it, without it adding anything to the discussion o I think the comment about the Meta spec is at risk of being a club to beat people with, or, to put it another way, it could be used to sabotage the flow of information from module author to module user. If the spec is deficient it needs to be fixed, or discarded, but certainly not worshipped Part 2: The Information o I would like the meta data to tell me a module will need a compiler to help install it. Of course I originally assumed the author would supply the extra info, but one day a build farm (repository manager) might edit the meta data after trying to install the module. Here I'm thinking of a matrix, OS 'v' compiler, with various versions of a module available. o Yes, I realize some authors would not want 'their' meta data updated o Dependencies are a longer-term extension of this idea o In pseudocode (warning Boolean variables ahead!): (1) Module contains XS: $xs = 1 (2) Module contains pure Perl alternative to that XS: $pp = 1 (3) Installer needs a compiler if ($xs && ! $pp) This last value is the core of my idea. And yes, it's an installer issue I'm trying to solve, one the author may well be best placed to solve o I really don't care if the meta data ends up with 1 or more Boolean variables added, or 1 or more multi-state variables added. I would just like to know if I'm going to need a compiler o Just for the record, at $work, I checked several machines and they all had 2 versions of Perl installed, but in each case I only checked the compiler used for the Perl I use, and in each case it was absent. This is a PITA, of course, and since I've been told to use the Perl /not/ in /usr/local/bin, but in a sub-dir of a commercial package I have to use, I'm constrained in freedom as to whether or not I install yet another Perl with it's compiler. Sigh Part 3: Enter a new Module::Build option, or similar o I am thinking of some procedure the author, perhaps, could use to generate the info to add to the meta data, like so: (1) Probe for compiler (2) If found, remove compiler's directory from the path, and bugger the consequences (if only to forestall more red herrings) (3) Go to (1) to check for more compilers (4) Now, in a compiler-free environment, try to install the module (5) If it installs, patch meta data to say so (6) If the install dies, patch meta data to say so (7) Ship module o This helps me, and I hope others, since I try to always read a module meta data and change log on CPAN, before downloading the module, since it gives me some idea of what I'm letting myself in for, and I see this process as giving me a bit more info. I should say I'd like to simply always work in an env with a compiler available, but that's not always possible. Of course that's why I'm so keen on Strawberry Perl, since it comes with GCC included, which means I can use Apache but have to abandon mod_perl unless the latter 2 can be compiled with that version of GCC (but that's another story). Thanx for reading this far. -- Cheers Ron Savage, [EMAIL PROTECTED] on 9/10/2006 http://savage.net.au/index.html Let the record show: Microsoft is not an Australian company