[Bioperl-l] Build.PL, 'requires', 'recommends', and optional modules

Sendu Bala bix at sendu.me.uk
Wed Dec 10 15:42:38 EST 2008

Dave Messina wrote:
> Hey everyone,
> So in testing the latest bioperl-live, I noticed that there's a new
> dependency for Microarray::Tools::ReseqChip, namely Statistics::Frequency.
> I seem to remember at some point during the Build process, I would get
> prompted if I want to install optional modules, but I wasn't, and poking
> around in the Module::Build docs I couldn't find the details.

Module::Build doesn't have that (installation) functionality. But see below.

> Since, according to the docs for Microarray::Tools::ReseqChip indicate it
> relies on Statistics::Frequency, I think S::F should go in the 'requires'
> block in Build.PL, right?
> And wouldn't that also be true for the other external dependencies of
> M::T::ReseqChip, Spreadsheet::ParseExcel and Spreadsheet::WriteExcel?
> Or do all three of those go in 'recommends'?

Recommends. The idea being, with BioPerl currently being as monolithic 
as it is, not all users are going to want to use all modules within it. 
We don't want to complicate their installation by having tons of 
external dependencies if they never even use the BioPerl modules that 
cause those deps. Not everyone will use B::M::T::ReseqChip, so we don't 
force them to install S::F - we only recommend they do.

BioPerl installation now happens through Bio::Root::Build, which is a 
subclass of Module::Build that lets users make an informed choice about 
what to install. It has a system that detects missing deps, installs 
them if they're required, and asks the user if they want to install any 
of the recommended deps. Importantly, when it asks it explains what 
BioPerl module(s) need that dep, hence the 'informed' choice.

Hope that's clearer (does this need explanation on the wiki somewhere, 
do I need to add POD docs to B::R::Build?),

More information about the Bioperl-l mailing list