Re: Spankin' new (alpha) build system for Bioperl-Run
"Mark A. Jensen" <[email protected]>
| Newsgroups | gmane.comp.lang.perl.bio.general |
|---|---|
| Message-ID | <[email protected]> |
(minus damn linebreaks) All (esp. George)- My work on Issue #11 (https://github.com/bioperl/bioperl-run/issues/11) has metastasized. The proximate problem was tests that fail because of once-local prerequisites. The ultimate problems are - Why should I have to install every single wrapper when I only want X? - Why should I care about any test that doesn't deal with X? - Why doesn't X bring along its own prereq metadata (including Bio prereqs), rather than tag along with the distro and hope for the best? (And I think these are the ultimate problems across BioPerl in terms of decentralized distribution.) My solution was - Add to the distro real, manually prepared metadata on prerequisites for all the tools - Add an interactive selector that allows a user to pick their desired tools at perl Build.PL-time - Have Module::Build check only (and ALL) the prereqs of the desired tools, and inform user of missing ones at perl Build.PL-time - Make use of the persistence of the config information to skip/run .t files as appropriate - Update ALL the tests to check whether to skip based on user selection - Make M::B install only the relevant distro modules and documentation, not everything, at ./Build install-time This is ready for brave alpha-testers at https://github.com/bioperl/bioperl-run/tree/topic/issue11. Just do 'perl Build.PL'. Pod below has some more details-- comments very welcome MAJ NAME Bio::Tools::Run::Build - Instrument the build for features SYNOPSIS ... DESCRIPTION Bio::Tools::Run::Build is a subclass of Module::Build that allows an author to offer users the ability to select and install pre-configured subsets of modules that are packaged in a single large M::B-based distribution. Grouping and selection of distro modules is driven by the optional features concept as defined in CPAN::Meta::Spec and used by Module::Build. The subclass provides the following: * Author specification of features and their prereqs The build author develops metadata files in json that follow "optional_features" in CPAN::Meta::Spec to group distribution modules and dependencies as selectable features. * Interactive user selection of features The user can be presented with an interactive selector during Build.PL runs. * Prereq checking of user selected features only M::B only checks for the presence of selected feature dependencies. * Build-persistent recording of user selections The build object records the selection of features in the $build->feature field. This can be used in test files to determine whether tests should be skipped (and not failed). See Bio::Tools::Run::Build::Test. * Installation only of selected feature modules Bio::Tools::Run::Build adds a build action, "deselect", which runs after the "code" and "docs" actions. "deselect" removes unselected modules from the blib/lib directory and unneeded documentation from the blib/libdoc directory. This keeps the "install" action from installing unwanted files. MOTIVATION The BioPerl-Run distribution contains a large variety of wrappers and parsers that handle the execution and output of many different bioinformatics tools. It has been provided as a large distro that installs and attempts to test all of its modules. Many users need only a small fraction of the functionality BioPerl-Run provides, relevant only to the tools they have installed. On the other hand, managing many different packages is unwieldy and uninviting for volunteer maintainers. The system described here is a compromise that enables a user to select, test and install only those modules that meet the need, yet reduces the maintenance effort to the management of a set of metadata files in a single distribution. On 2014-09-29 23:41, Mark A. Jensen wrote: > All (esp. George)- > All (esp. George)- My work on Issue #11 (https://github.com/bioperl/bioperl-run/issues/11) has metastasized. The proximate problem was tests that fail because of once-local prerequisites. The ultimate problems are - Why should I have to install every single wrapper when I only want X? - Why should I care about any test that doesn't deal with X? - Why doesn't X bring along its own prereq metadata (including Bio prereqs), rather than tag along with the distro and hope for the best? (And I think these are the ultimate problems across BioPerl in terms of decentralized distribution.) My solution was - Add to the distro real, manually prepared metadata on prerequisites for all the tools - Add an interactive selector that allows a user to pick their desired tools at perl Build.PL-time - Have Module::Build check only (and ALL) the prereqs of the desired tools, and inform user of missing ones at perl Build.PL-time - Make use of the persistence of the config information to skip/run .t files as appropriate - Update ALL the tests to check whether to skip based on user selection - Make M::B install only the relevant distro modules and documentation, not everything, at ./Build install-time This is ready for brave alpha-testers at https://github.com/bioperl/bioperl-run/tree/topic/issue11. Just do 'perl Build.PL'. Pod below has some more details-- comments very welcome MAJ NAME Bio::Tools::Run::Build - Instrument the build for features SYNOPSIS ... DESCRIPTION Bio::Tools::Run::Build is a subclass of Module::Build that allows an author to offer users the ability to select and install pre-configured subsets of modules that are packaged in a single large M::B-based distribution. Grouping and selection of distro modules is driven by the optional features concept as defined in CPAN::Meta::Spec and used by Module::Build. The subclass provides the following: * Author specification of features and their prereqs The build author develops metadata files in json that follow "optional_features" in CPAN::Meta::Spec to group distribution modules and dependencies as selectable features. * Interactive user selection of features The user can be presented with an interactive selector during Build.PL runs. * Prereq checking of user selected features only M::B only checks for the presence of selected feature dependencies. * Build-persistent recording of user selections The build object records the selection of features in the $build->feature field. This can be used in test files to determine whether tests should be skipped (and not failed). See Bio::Tools::Run::Build::Test. * Installation only of selected feature modules Bio::Tools::Run::Build adds a build action, "deselect", which runs after the "code" and "docs" actions. "deselect" removes unselected modules from the blib/lib directory and unneeded documentation from the blib/libdoc directory. This keeps the "install" action from installing unwanted files. MOTIVATION The BioPerl-Run distribution contains a large variety of wrappers and parsers that handle the execution and output of many different bioinformatics tools. It has been provided as a large distro that installs and attempts to test all of its modules. Many users need only a small fraction of the functionality BioPerl-Run provides, relevant only to the tools they have installed. On the other hand, managing many different packages is unwieldy and uninviting for volunteer maintainers. The system described here is a compromise that enables a user to select, test and install only those modules that meet the need, yet reduces the maintenance effort to the management of a set of metadata files in a single distribution. ... Message 1 of 152 _______________________________________________ Bioperl-l mailing list [email protected] http://mailman.open-bio.org/mailman/listinfo/bioperl-l