[Bioperl-guts-l] [14997] bioperl-live/trunk: resolve long-standing issue with auto-install of circular dependency: no more! Now you must choose to install circular deps in interactive mode; they do not get installed when installing "all" modules

Senduran Balasubramaniam sendu at dev.open-bio.org
Mon Nov 17 11:20:40 EST 2008


Revision: 14997
Author:   sendu
Date:     2008-11-17 11:20:40 -0500 (Mon, 17 Nov 2008)

Log Message:
-----------
resolve long-standing issue with auto-install of circular dependency: no more! Now you must choose to install circular deps in interactive mode; they do not get installed when installing "all" modules

Modified Paths:
--------------
    bioperl-live/trunk/Build.PL
    bioperl-live/trunk/ModuleBuildBioperl.pm

Modified: bioperl-live/trunk/Build.PL
===================================================================
--- bioperl-live/trunk/Build.PL	2008-11-17 15:34:10 UTC (rev 14996)
+++ bioperl-live/trunk/Build.PL	2008-11-17 16:20:40 UTC (rev 14997)
@@ -41,7 +41,9 @@
     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',
+                            # the [circular dependency!] specifies it is only installed on explicit request for this specific module,
+                            # not when simply choosing to install 'all' modules
+                            'Bio::ASN1::EntrezGene'     => '0/parsing entrezgene/Bio::SeqIO::entrezgene [circular dependency!]',
                             # 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',
@@ -72,10 +74,10 @@
                             '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',
-			    'Math::Random'          => '0/Random Phylogenetic Networks/Bio::PhyloNetwork::RandomFactory',
-			    'Algorithm::Munkres'    => '0/Phylogenetic Networks/Bio::PhyloNetwork',
-			    'Array::Compare'        => '0/Phylogenetic Networks/Bio::PhyloNetwork',
-			    'GraphViz'              => '0/Phylogenetic Network Visulization/Bio::PhyloNetwork::GraphViz',
+                            'Math::Random'              => '0/Random Phylogenetic Networks/Bio::PhyloNetwork::RandomFactory',
+                            'Algorithm::Munkres'        => '0/Phylogenetic Networks/Bio::PhyloNetwork',
+                            'Array::Compare'            => '0/Phylogenetic Networks/Bio::PhyloNetwork',
+                            'GraphViz'                  => '0/Phylogenetic Network Visulization/Bio::PhyloNetwork::GraphViz',
     },
     get_options         => {
                             network => { } # say 'perl Build.PL --network' to manually request network tests

Modified: bioperl-live/trunk/ModuleBuildBioperl.pm
===================================================================
--- bioperl-live/trunk/ModuleBuildBioperl.pm	2008-11-17 15:34:10 UTC (rev 14996)
+++ bioperl-live/trunk/ModuleBuildBioperl.pm	2008-11-17 16:20:40 UTC (rev 14997)
@@ -343,6 +343,10 @@
                     
                     $status->{message} .= "\n   (wanted for $why, used by $by_what)";
                     
+                    if ($by_what =~ /\[circular dependency!\]/) {
+                        $preferred_version = -1;
+                    }
+                    
                     my $installed = $self->install_optional($modname, $preferred_version, $status->{message});
                     next if $installed eq 'ok';
                     $status->{message} = $installed unless $installed eq 'skip';
@@ -440,11 +444,14 @@
         $install = $self->y_n(" * $msg\n   Do you want to install it? y/n", 'n');
     }
     
-    if ($install) {
+    my $orig_version = $version;
+    $version = 0 if $version == -1;
+    if ($install && ! ($self->{ask_optional} =~ /^a/i && $orig_version == -1)) {
         return $self->install_prereq($desired, $version);
     }
     else {
-        $self->log_info(" * You chose not to install $desired\n");
+        my $circular = ($self->{ask_optional} =~ /^a/i && $orig_version == -1) ? " - this is a circular dependency so doesn't get installed when installing 'all' modules. If you really want it, choose modules interactively." : '';
+        $self->log_info(" * You chose not to install $desired$circular\n");
         return 'ok';
     }
 }




More information about the Bioperl-guts-l mailing list