Eric Wilhelm wrote:
> I know it sounds like a hack, but perhaps the complete solution *is* to
> use perl "modules" for identifying all applications. Can we just have
> an 'external::' namespace or something?
>
> configure_requires:
> 'external::perl': 5.8.8
> requires:
> 'external::svn': 1.4.2
>
> This would be similar to 'Alien::*', but the purpose is (initially) to
> just provide a $name->VERSION API. It could, of course, be extended to
> provide other useful information and/or run a system-specific installer
> (e.g. aptitude) to automatically satisfy the dependency.
>
> I think we would maybe benefit from making the 'external::' namespace
> special. That is, the consumer could choose not to load the identifier
> as a module, but instead to query a database or etc. No, I can't stop
> anyone from uploading random code into that namespace (and perhaps we
> need the .pm's for compatibility anyway), but we can specify that the
> consumer has the option to handle the query itself in that namespace.
Yes, I've thought about this approach, too. It might be the best way to go.
Syntax-wise, I'd rather see something like this:
requires:
external:
svn: 1.4.2
mysql: 5.0
python: 2.1
That way there is no ambiguity about whether a given requires key is a module
name or something special. Module names have simple values, special keys have
complex values. Then there is no name clash.
Also for the same reason that you'd write:
%external = (
svn => 1.4.2,
mysql => 5.0,
python => 2.1
);
than
$external::svn = 1.4.2;
$external::mysql = 5.0;
$external::python = 2.1;
--
Ahh email, my old friend. Do you know that revenge is a dish that is best
served cold? And it is very cold on the Internet!