There's a pragmatic subset which can be dealt with.  Once again, look
to Debian.  They've defined a number of virtual "provides" tags.  For
example, exim provides a "mail-transport-agent".  mutt can then
depend on a "mail-transport-agent".  Its up to the toolchain to
figure out if that dependency has been resolved.

Task:: was created for exactly this reason, inspired by debian's task-foo packages.

How would a system without a package manager determine the installed version of perl? python? ruby? postgres? It would likely run some command for each package, where "some command" means possibly applying regexps to the output of `$foo --version`.

I added a fairly naive first pass approach in Module::Install with the command...

requires_external_bin('cvs');

This does a simple "which" check to see if any version of that software is available at the default command name within the path.

It does not propogate to META.yml, and I'm not sure I can see how it could sanely.

Does the META.yml need to contain those commands and regexps or do the tools need a-priori knowledge of how to get version numbers for *every* possibly dependency?

Nope, META.yml is for Perl, in my opinion :)

Adam K

Reply via email to