I'm all for something like this, though I prefer "requires_libraries" instead. (Listing libraries distinct from applications is a grey area, so best to put them under one term.)


Come to think of it, why not "recommends_libraries" too?

What is needed is some standard set of library and application names.
Implementing platform-independent logic to find these libraries is another matter.


Here's an idea. A module namespace called Config::Libraries, such as

  Config::Libraries->info('libgd')

which returns a hash of relevant information about the library. Some of the hash keys would be standardized, such as one to return a path to where the library or application is installed, another to return the version. (It would return undef if the library was not installed.)

This information would be read from an adequate text configuration file format (YAML or IniFile).

There should be another interface to update the config file easily, along with a command-line script to do this.

Library installation utilities can use this script, or users can use it to manually update the config as needed.

The module would have some messy installation procedure that sets up an initial script. Ideally it should have Platform-specific parts inside generic wrapper methods. There might be a separate installation file for each application that uses these methods to configure itself: this way adding a new library to the utility is a matter of adding script.

Pseudo-library names could be given to special capabilities that some systems do not have.

The downside is controlling the library namespace. Whoever controls the Config::Libraries module would have the de facto control, which is probably good enough for the time being.

That said, who has time to work on such a project? I've got my hands full already.

Regards,
Rob

On 08/04/2005 15:52 David Cantrell wrote:

Oh, and to the list of fields at http://module-build.sourceforge.net/META-spec-new.html how about adding 'requires_application'. Mac::iTunes::Applescript has an obvious prerequisite. The module Net::P0fq that I am slowly working on requires a running copy of p0f.

Reply via email to