[Bioperl-l] Spankin' new (alpha) build system for Bioperl-Run

Dave Messina online at davemessina.com
Tue Sep 30 06:07:36 UTC 2014


Very cool! Nice work Mark!!




On Mon, Sep 29, 2014 at 11:30 PM, Mark A. Jensen <maj at fortinbras.us> wrote:

>  (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
> Bioperl-l at mailman.open-bio.org
> http://mailman.open-bio.org/mailman/listinfo/bioperl-l
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.open-bio.org/pipermail/bioperl-l/attachments/20140930/d6f9a4ac/attachment.html>


More information about the Bioperl-l mailing list