[med-svn] r322 - in trunk/packages: . bioperl bioperl/branches bioperl/branches/upstream bioperl/branches/upstream/current

charles-guest at alioth.debian.org charles-guest at alioth.debian.org
Fri Jun 15 00:02:45 UTC 2007


Author: charles-guest
Date: 2007-06-15 00:02:45 +0000 (Fri, 15 Jun 2007)
New Revision: 322

Added:
   trunk/packages/bioperl/
   trunk/packages/bioperl/branches/
   trunk/packages/bioperl/branches/upstream/
   trunk/packages/bioperl/branches/upstream/current/
   trunk/packages/bioperl/branches/upstream/current/Build.PL
   trunk/packages/bioperl/tags/
Log:
[svn-inject] Installing original source of bioperl

Added: trunk/packages/bioperl/branches/upstream/current/Build.PL
===================================================================
--- trunk/packages/bioperl/branches/upstream/current/Build.PL	                        (rev 0)
+++ trunk/packages/bioperl/branches/upstream/current/Build.PL	2007-06-15 00:02:45 UTC (rev 322)
@@ -0,0 +1,257 @@
+#!/usr/bin/perl -w
+
+# This is a Module::Build script for Bioperl installation.
+# See http://search.cpan.org/~kwilliams/Module-Build/lib/Module/Build.pm
+
+# Uses a custom subclass of Module::Build called ModuleBuildBioperl that
+# doesn't get installed
+
+# In the future developers may need to alter the requires and recommends and
+# possibly Network sections of ModuleBuildBioperl->new() below, but otherwise
+# nothing else here is likely to need changing.
+
+use strict;
+use ModuleBuildBioperl;
+
+our @drivers;
+
+# Set up the ModuleBuildBioperl object
+my $build = ModuleBuildBioperl->new(
+    module_name         => 'Bio',
+    dist_name           => 'bioperl',
+    dist_version_from   => 'Bio/Root/Version.pm',
+    dist_author         => 'Bioperl Team <bioperl-l at bioperl.org>',
+    dist_abstract       => 'Bioinformatics Toolkit',
+    license             => 'artistic',
+    requires            => {
+                            'perl'                      => '5.6.1',
+                            'IO::String'                => 0,
+                            'DB_File'                   => 0
+                           },
+    build_requires      => {
+                            'Test::More'                => 0,
+                            'Module::Build'             => 0.2805,
+                            'Test::Harness'             => 2.62,
+                            'CPAN'                      => 1.81
+                           },
+    recommends          => { # does what you would expect of recommends, except more informative output and generates optional_features in META.yml
+                            'Ace'                       => '0/access of ACeDB database/Bio::DB::Ace,Bio::DB::GFF::Adaptor::ace',
+                            # this won't actually install due to circular dep, but we have no way of doing a post-install
+                            'Bio::ASN1::EntrezGene'     => '0/parsing entrezgene/Bio::SeqIO::entrezgene',
+                            # we actually need 1.01 of Class::AutoClass, but unfortunately it is versioned as 1.0
+                            'Class::AutoClass'          => '1/creating objects/Bio::Graph::SimpleGraph,Bio::Graph::SimpleGraph::Traversal,Bio::Graph::ProteinGraph',
+                            'Clone'                     => '0/cloning objects/Bio::Graph::ProteinGraph,Bio::Tools::Primer3',
+                            'Convert::Binary::C'        => '0/strider functionality/Bio::SeqIO::strider',
+                            'Data::Stag::XMLWriter'     => '0/writing choas xml files/Bio::SeqIO::chaosxml',
+                            'GD'                        => '1.3/rendering Sequences and Features/Bio::Graphics::Glyph*',
+                            'GD::SVG'                   => '0/creating SVG images/Bio::Graphics::Panel',
+                            # we specifically want Graph::Directed, but that has no VERSION
+                            'Graph'                     => '0/ontology engine implementation for the GO parser/Bio::Ontology::SimpleGOEngine::GraphAdaptor',
+                            'HTML::Entities'            => '0/remote analysis POST submissions/Bio::SearchIO::blastxml',
+                            'HTML::Parser'              => '3/screen scraping www.gdb.org/Bio::DB::GDB',
+                            'HTTP::Request::Common'     => '0/GenBank+GenPept sequence retrieval, remote http Blast jobs/Bio::DB::*,Bio::Tools::Run::RemoteBlast,Bio::Tools::Analysis::Protein*,Bio::Tools::Analysis::DNA*',
+                            'LWP::UserAgent'            => '0/remote access/Bio::DB::*,Bio::Tools::Run::RemoteBlast,Bio::Tools::WebBlat,Bio::WebAgent,Bio::Graphics::Glyph::image',
+                            'PostScript::TextBlock'     => '0/EPS output/Bio::Tree::Draw::Cladogram',
+                            'Set::Scalar'               => '0/proper operation/Bio::Tree::Compatible',
+                            'SOAP::Lite'                => '0/XEMBL Services and Bibliographic queries/Bio::DB::XEMBLService,Bio::DB::Biblio::soap',
+                            'Spreadsheet::ParseExcel'   => '0/parsing Excel files/Bio::SeqIO::excel',
+                            'Storable'                  => '0/storing sequence objects in local file cache/Bio::DB::FileCache,Bio::SeqFeature::Collection,Bio::PopGen::HtSNP,Bio::PopGen::TagHaplotype,Bio::DB::GFF::Adaptor::berkeleydb',
+                            'SVG'                       => '2.26/SVG output/Bio::Graphics::Pictogram',
+                            'SVG::Graph'                => '0.01/creating SVG images/Bio::TreeIO::svggraph',
+                            'Text::Shellwords'          => '0/test scripts/Bio::Graphics',
+                            'URI::Escape'               => '0/dealing with web resources/Bio::Tools::WebBlat,Bio::FeatureIO::gff,Bio::FeatureIO::interpro,Bio::DB::Biblio::eutils,Bio::DB::EUtilities::Cookie,Bio::DB::Query::GenBank,Bio::DB::NCBIHelper,Bio::SeqFeature::Annotated',
+                            'XML::DOM::XPath'           => '0.13/parsing interpro features/Bio::FeatureIO::interpro',
+                            'XML::Parser'               => '0/parsing xml/Bio::Biblio::IO::medlinexml',
+                            'XML::Parser::PerlSAX'      => '0/parsing xml/Bio::SeqIO::tinyseq,Bio::SeqIO::game::gameSubs,Bio::OntologyIO::InterProParser,Bio::ClusterIO::dbsnp',
+                            'XML::SAX'                  => '0.15/parsing xml/Bio::SearchIO::blastxml,Bio::SeqIO::tigrxml,Bio::SeqIO::bsml_sax',
+                            'XML::SAX::Writer'          => '0/writing xml/Bio::SeqIO::tigrxml',
+                            'XML::Twig'                 => '0/parsing xml/Bio::Variation::IO::xml,Bio::DB::Taxonomy::entrez,Bio::DB::Biblio::eutils,Bio::Graph::IO::psi_xml',
+                            'XML::Writer'               => '0.4/parsing and writing xml/Bio::SeqIO::agave,Bio::SeqIO::game::gameWriter,Bio::SeqIO::chadoxml,Bio::SeqIO::tinyseq,Bio::Variation::IO::xml,Bio::SearchIO::Writer::BSMLResultWriter'
+                           },
+    get_options         => {
+                            network => { } # not actually used by anything yet, but in the future say perl Build.PL --network
+                           },
+    auto_features       => {
+                            BioDBSeqFeature_BDB   => {
+                                                        description      => "BDB tests for Bio::DB::SeqFeature::Store",
+                                                        feature_requires => { 'DB_File' => 0 } # feature_requires is like requires, execpt that it doesn't trigger installation
+                                                     },
+                            BioDBGFF              => {
+                                                        description      => "BioDBGFF database tests (will need to answer questions before really enabling)",
+                                                        feature_requires => { 'DBI' => 0 },
+                                                        excludes_os      => ['mswin'],
+                                                        test             => \&test_biodbgff # ModuleBuildBioperl unique requirement that after everything else succeeds, supplied code ref must also return undef
+                                                     },
+                            BioDBSeqFeature_mysql => {
+                                                        description      => "MySQL tests for Bio::DB::SeqFeature::Store",
+                                                        feature_requires => { 'DBI' => 0, 'DBD::mysql' => 0 },
+                                                        test             => \&test_db
+                                                     },
+# The following code works, but since no tests in the test suite actually make use of this functionality, don't use it yet
+#                            Network               => {
+#                                                        description => "Enable tests that need an internet connection",
+#                                                        requires    => { 'LWP::UserAgent' => 0 },
+#                                                        options     => ['network'], # ModuleBuildBioperl unique requirement that --network was supplied
+#                                                        test        => \&ModuleBuildBioperl::test_internet
+#                                                     }
+                           },
+    dynamic_config      => 1
+    
+    #pm_files           => {} # modules in Bio are treated as if they were in lib and auto-installed
+    #script_files       => [] # scripts in scripts directory are installed on-demand
+);
+
+# Handle auto features
+if ($build->feature('BioDBSeqFeature_BDB')) {
+    make_bdb_test();
+}
+if ($build->feature('BioDBSeqFeature_mysql')) {
+    make_dbi_test();
+}
+{
+    $build->notes(network => $build->feature('Network'));
+    # then in test script:
+    #   use Module::Build;
+    #   my $build = Module::Build->current;
+    #   my $do_network_tests = $build->notes('network');
+}
+
+# Ask questions
+$build->choose_scripts;
+prompt_for_biodbgff() if $build->feature('BioDBGFF');
+
+# Request that some scripts run post-installation
+$build->add_post_install_script('maintenance/symlink_script.pl'); # takes a unix file path regardless of local OS
+
+# Add extra things to MANIFEST.SKIP
+$build->add_to_manifest_skip('bioperl.lisp', 'Bio/Tools/WebBlat.pm');
+
+# Create the build script and exit
+$build->create_build_script;
+
+exit;
+
+
+sub make_bdb_test {
+    my $path0 = File::Spec->catfile('t', 'BioDBSeqFeature.t');
+    my $path = File::Spec->catfile('t', 'BioDBSeqFeature_BDB.t');
+    open my $F, ">$path";
+    print $F <<END;
+system 'perl $path0 -adaptor berkeleydb -create 1 -temp 1';
+END
+    close $F;
+    $build->add_to_cleanup($path);
+    $build->add_to_manifest_skip($path);
+}
+
+sub test_db {
+    eval {require DBI;};  # if not installed, this sub won't actually be called
+    unless (eval {DBI->connect('dbi:mysql:test',undef,undef,{RaiseError=>0,PrintError=>0})}) {
+        return "Could not connect to test database";
+    }
+    return;
+}
+
+sub make_dbi_test {
+    my $path0 = File::Spec->catfile('t', 'BioDBSeqFeature.t');
+    my $path = File::Spec->catfile('t', 'BioDBSeqFeature_mysql.t');
+    open my $F,">$path";
+    print $F <<END;
+system 'perl $path0 -adaptor DBI::mysql -create 1 -temp 1 -dsn test';
+END
+    close $F;
+    $build->add_to_cleanup($path);
+    $build->add_to_manifest_skip($path);
+}
+
+sub test_biodbgff {
+    eval {require DBI;};  # if not installed, this sub won't actually be called
+    @drivers = DBI->available_drivers;
+    unless (grep {/mysql|Pg|Oracle/i} @drivers) {
+        return "MySQL, Pg nor Oracle DBI drivers are installed";
+    }
+    return;
+}
+
+sub prompt_for_biodbgff {
+    my $proceed = $build->y_n("Do you want to run the BioDBGFF live database tests? y/n", 'n');
+    
+    if ($proceed) {
+        my @driver_choices;
+        foreach my $poss ('mysql', 'Pg', 'Oracle') {
+            if (grep {/$poss/i} @drivers) {
+                my $choice = $poss;
+                $choice =~ s/^(.)/[$1]/;
+                push(@driver_choices, $choice);
+            }
+        }
+        
+        my $cfg = {};
+        
+        my $driver;
+        if (@driver_choices > 1) {
+            my ($default) = $driver_choices[0] =~ /\[(.)/;
+            $driver = $build->prompt("Which database driver should be used? ".join(" ", @driver_choices), $default);
+        }
+        else {
+            ($driver) = $driver_choices[0] =~ /\[(.)/;
+        }
+        if ($driver =~ /^[mM]/) {
+            $driver = 'mysql';
+        }
+        elsif ($driver =~ /^[pP]/) {
+            $driver = 'Pg';
+        }
+        elsif ($driver =~ /^[oO]/) {
+            $driver = 'Oracle';
+        }
+        $cfg->{dbd_driver} = $driver;
+        
+        $cfg->{test_db} = $build->prompt("Which database should I use for testing the $driver driver?", 'test');
+        $cfg->{test_host} = $build->prompt("On which host is database $cfg->{test_db} running (hostname, ip address or host:port)", 'localhost');
+        my $test_user = $build->prompt("User name for connecting to database $cfg->{test_db}?", 'undef');
+        $cfg->{test_user} = $test_user eq 'undef' ? '' : $test_user;
+        my $test_pass = $build->prompt("Password for connecting to database $cfg->{test_db}?", 'undef');
+        $cfg->{test_pass} = $test_pass eq 'undef' ? '' : $test_pass;
+        
+        my $use_host = 1;
+        if ($cfg->{test_host} eq 'undef' || $cfg->{test_host} eq 'localhost') {
+            $use_host = 0;
+        }
+        
+        my $test_dsn;
+        if ($driver eq 'Pg') {
+            $test_dsn = "dbi:$driver:dbname=$cfg->{test_db}";
+        }
+        else {
+            $test_dsn = "dbi:$driver:database=$cfg->{test_db}";
+        }
+        if ($use_host) {
+            $test_dsn .= ";host=$cfg->{test_host}";
+        }
+        $cfg->{test_dsn} = $test_dsn;
+        
+        my $path = File::Spec->catfile('t', 'do_biodbgff.tests');
+        if (open T,">$path") {
+            while (my ($key, $value) = each %$cfg) {
+                print T $key, "\t", $value,"\n";
+            }
+            close T;
+        }
+        
+        $build->add_to_cleanup($path);
+        $build->add_to_manifest_skip($path);
+        
+        $build->log_info("  - will run the BioDBGFF tests with database driver '$driver' and these settings:\n",
+                        "    Database $cfg->{test_db}\n",
+                        "    Host     $cfg->{test_host}\n",
+                        "    DSN      $test_dsn\n",
+                        "    User     $test_user\n",
+                        "    Password $test_pass\n");
+    }
+    else {
+        $build->log_info("  - will not run the BioDBGFF live database tests\n");
+    }
+    
+    $build->log_info("\n");
+}




More information about the debian-med-commit mailing list