On Oct 8, 2006, at 10:59 PM, Adam Kennedy wrote:

The only downside of this approach is that it requires a CPAN module for every external system. This is probably quite reasonable for the top 20 cases and for complicated cases (such as "do I have a C/XS/etc compiler") but might not be ideal for universal application to all external dependencies.

Such an approach would have the side-effect of encouraging wrapper modules, which is always good. Of course, it would be nice if the wrapper modules themselves could declare *their* dependencies on external tools... and if that's too easy to do, we're not really encouraging wrapper modules anymore...


I think there's some overlap here with a conceptual method Audrey and I were discussing to create a universal cross-language dependency grammer, which boiled down to a method to specify a single dependency in an abstract way.

As an early example of this based on a hybrid of PITA testing context names and the Perl 6 library grammar, a Perl 5 module might be perl5:Some::Module, a java library might be java:Some.Module, a dependency on the cvs command would be bin:cvs, and some arbitrary C headers might be c-h:libfoo.h. This is a very quick and dirty syntax, and coming up with the grammar/syntax is half the problem.

The idea was to provide a simple platform-specific dependency list that (after running Makefile.PL) could be passed off so something like a Debian package resolver, which could then automatically determine non-Perl dependencies for that module and make sure they were available with minimal human intervention required to package some CPAN module.

But this is a conversation for another time and another place (like the Perl 6 lists or a major multi-language/os conference).

In the short term though, and for special cases, I agree that the Alien stuff seems the way to go for important cases.


I like the URL-based approach, or namespace-based, or whatever you want to call it. Keep me (or better, the list) in the loop if this comes to fruition in some form.

The trick would be to find a way to be forward-compatible gracefully for tools like M::B, of course...

 -Ken

Reply via email to