[Bioperl-l] Can we make Clone a required module so that automatic installation works?

Fields, Christopher J cjfields at illinois.edu
Mon Mar 17 18:49:57 UTC 2014


Huh, for some reason the bioperl-l google group replies aren’t being bounced back to the list.

Okay, I’ll address each point below...

On Feb 26, 2014, at 11:40 AM, george.hartzell at gmail.com wrote:

> In short, I can't do this:
> 
>  cpanm -L FOO BioPerl-1.6.923.tar.gz
> 
> which makes me Very Sad.
> 
> I've followed up on an existing issue about this here:
> 
>  https://redmine.open-bio.org/issues/3447
> 
> A hacked version of the tarball that moves Clone from a recommended module 
> to a required module (Build.PL, META.{json,yaml}) lets all of our tests 
> pass and keeps me from being Very Sad.
> 
> 
>   - What's the right fix?  

Make Clone required (now committed in the 1.6.x branch).  On master branch it makes no sense to do this, as the requirement is at the Bio::Root level (and there is a req for Bio::Root in place now).  So, this will also be added to the Bio-Root repo.

>   - Is our test broken?

Not sure; the failure is an indication that Storable::dclone is problematic for cloning instances.  There is a possible fix (I alluded to it in the reply that didn’t go to the list), but really, it would be much simpler to just require Clone instead.

>   - Is there some reason to not require Clone (particularly if we actually 
>   require it to function correctly?  

Mentioned above.

>   - Should we prefer Clone::Fast?

Not sure; as I also mentioned (but will reiterate here for posterity) there may be OS-related problems. 

Also (and somewhat strangely) Clone::Fast is only on search.cpan.org and not on metacpan, which makes me wonder about it’s status; there is a replacement called Data::Clone that is supposed to be faster and that no longer mentioned Clone::Fast.  Maybe it’s been removed?  

That might simplify things for the time being...

>   - If we want to present the Bio::* consumer with a choice, is driving 
>   that choice by whatever cloner happens to have been dragged in from God 
>   Knows Where the best way to do it?

It should minimally work with something, and work better with something else.  That something should be (minimally) Clone, and if Clone::Fast is present then it can be used instead.  

Maybe we can simply default to Clone, and if a clone class is specified (via a global or env variable) use that instead.

> So many questions....
> 
> Thoughts, comments?
> 
> g.

For some context: the use of ‘clone’ here was meant to address a missing core function, namely a way to simply copy an instance (and possibly modify the copy on the fly if needed).  So far it has worked with only a few hiccups.

chris





More information about the Bioperl-l mailing list