[Bioperl-l] External dependencies and Macs [long]

Todd Richmond todd@andrew2.stanford.edu
Wed, 13 Dec 2000 19:52:43 -0800


On 12/13/00 2:49 AM, "Ewan Birney" <birney@ebi.ac.uk> wrote:

> Most (?all) our dependencies are pure perl modules, so they should work
> for Macs...

Pure perl <=> fully portable

> I personally believe that it is ok to have dependencies on thing like LWP,
> File::Temp etc but not ok to have dependencies on
> New::SuperClever::MySQL::AutoBinder or something else which is likely to
> be more buggy than bioperl ;)

Let me give you an example of what us poor Mac users are up against. Here's
a brief blow-by-blow of my attempt to get the current external dependencies
installed on my machine:

1st Pass:

External Module Ace, Aceperl,
 is not installed on this computer.
  The Bio::DB::Ace in Bioperl needs it for access of ACeDB database

External Module File::Temp, Temporary File creation,
 is not installed on this computer.
  The  in Bioperl needs it for Bio::DB::WebDBSeqI, Bio::Seq::LargePrimarySeq

External Module XML::Writer, Parsing + writing of XML documents,
 is not installed on this computer.
  The Bio::SeqIO::game,Bio::Variation::* in Bioperl needs it for
Bio::Variation code, GAME parser

External Module IO::Scalar, IO handle to read or write to a scalar,
 is not installed on this computer.
  The Bio::Tools::Blast::Run::Webblast in Bioperl needs it for remote http
Blast jobs

External Module IO::String, IO handle to read or write to a string,
 is not installed on this computer.
  The Bio::DB::*,Bio::Variation::*,Bio::Tools::Blast::Run::Webblast in
Bioperl needs it for GenBank+GenPept sequence retrieval, Variation code

External Module XML::Parser::PerlSAX, Parsing of XML documents,
 is not installed on this computer.
  The Bio::SeqIO::game,Bio::Variation::* in Bioperl needs it for
Bio::Variation code, GAME parser

0) Attempt to use CPAN. Quit because it tries to install Perl 5.6 before it
will do anything else. Since Perl 5.6 is available for Macs, abort this and
do this stuff manually.

1) Manually go gather the necessary files from CPAN
    a) unpack the files with Chris Nandor's untarzipme.plx because Stuffit
chokes on some tar.z files with a strange disk error. Installation is done
using Chris's installme.plx which uses Makefile.PL. No simple "make","make
test","make install" for us poor Mac users. Test scripts have to be run
manually one by one.

2) First, install File::Temp. Should be easy, only one little file...
    a) unpack distribution, make, and try the tests
    b) discover that I need Test.pm (not part of the standard Mac
installation; only Test::Harness is)
    c) download Test-1.15
    d) discover that Test-1.15 needs Perl 5.004_05
    e) manually edit this out - since MacPerl is sitting at 5.004
    f) manually install Test.pm, since Makefile.PL fails on Mac...
    g) try test on Test.pm -> this fails -> Test::Harness version 1.1601
required--this is only version 1.1502.
    h) try to get Test::Harness 1.1601. Discover that I have to download
whole perl 5.004_05 distribution because it doesn't come separately
    i) run tests - success!
    j) run tests on File::Temp. Fails because it requires Perl 5.005.
Hand-edit the change to require 5.004...
    k) run tests on File::Temp. Fails because File::Spec version 0.8
required--this is only version 0.7.
    l) grab File::Spec 0.8 and install. Passes the appropriate tests (who
cares about VMS?)
    m) run test on File::Temp. What the hell is Errno.pm? Something required
by File::Spec. Grab that and install it. Oops - fails in a messy way.
Requires a compiler. Well maybe things will work okay without it. Of course,
all the tests for File::Spec fail, which mean the tests for File::Temp fail.
Move on.

3) Try installing IO::Scalar
    a) unpack distribution (IO::Stringy), make, and try tests
    b) Not so good... 4 out of 18 tests for IO::Scalar fail (specifically
5,6,17, and 18 in case anyone cares)
    
4) How about IO::String?
    a) unpack distribution (IO::String), manually install, and try tests
    b) run tests - Fails -> Perl 5.00503 required--this is only version
5.004, stopped.
    c) manually edit to require 5.004 instead
    d) Try again - all tests fail -> "Can't locate object method "TIEHANDLE"
via package "IO::String=GLOB(0xa1f6568)". Is this why 5.00503 is required?

5) How about XML::Writer?
    a) unpack distribution (XML-Writer-0.4), make, and try tests
    b) Everything works!
    
6) How about XML::Parser::PerlSAX?
    a) unpack distribution (XML-Writer-0.4), make, and try tests
    b) 3 out of 45 tests fail...
    
7) How about Ace?
    a) unpack distribution (AcePerl-1.67), make, and try tests
    b) Hmmm, guess I should take the pure Perl option and skip the options
that require a compiler
    c) Initial failure at generating the makefile, change "ace" folder name
to "Ace", retry
    d) Generates Makefile but apparently in nonstandard format, as the Mac
installation process won't do anything with it. Manually move the files
after consulting the makefile.
    e) Tests? Well I don't intend to use the AceDB stuff and the network
connection stuff doesn't work, so we'll skip these.
    
8) Okay - let's try the bioperl stuff again

External Module File::Temp, Temporary File creation,
 is not installed on this computer.
  The  in Bioperl needs it for Bio::DB::WebDBSeqI, Bio::Seq::LargePrimarySeq

##
Small note - it is installed! How does bioperl check for dependencies?
##

Checking if your kit is complete...
Warning: the following files are missing in your kit:
    :Bio:LiveSeq:AARange.pm
    :Bio:LiveSeq:Analyser.pm
    :Bio:LiveSeq:Chain.pm
    :Bio:LiveSeq:ChainI.pm
    :Bio:LiveSeq:DNA.pm
    :Bio:LiveSeq:Exon.pm
    :Bio:LiveSeq:Gene.pm
    :Bio:LiveSeq:IO:BioPerl.pm
    :Bio:LiveSeq:IO:Loader.pm
    :Bio:LiveSeq:IO:SRS.pm
    :Bio:LiveSeq:Intron.pm
    :Bio:LiveSeq:Mutation.pm
    :Bio:LiveSeq:Mutator.pm
    :Bio:LiveSeq:Prim_Transcript.pm
    :Bio:LiveSeq:Range.pm
    :Bio:LiveSeq:Repeat_Region.pm
    :Bio:LiveSeq:Repeat_Unit.pm
    :Bio:LiveSeq:SeqI.pm
    :Bio:LiveSeq:Transcript.pm
    :Bio:LiveSeq:Translation.pm
Please inform the author.

Keep in mind that this is just prepping for the bioperl install. Only one of
the six external dependencies installs correctly and passes all tests. I'll
spare the list all of the failed tests after you've actually installed
bioperl - it isn't pretty ...

Todd